Homebrew パッケージを持っていますが、他のパッケージが依存しているパッケージはスキップします。
例えば a
&b
パッケージに依存するc
パッケージをアンインストールします。パッケージd
もパッケージc
に依存します。その結果、a
とb
の両方がアンインストールされ、c
はスキップされます。
どうやってやるの?
不要な junk を残さずにパッケージをアンインストールする方法があるはずです。
のように見えます。この問題は、brew rmdeps
またはbrew rmtree
と呼ばれる外部コマンドを使用して解決されました。
インストールして使用するには、次のコマンドを発行します。
$ brew tap beeftornado/rmtree
$ brew rmtree <package>
詳細と説明については、上記のリンクを参照してください。
現在、これを達成する簡単な方法はないようです。
しかし、私は HomebrewのGitHubページに問題を提出しました 、誰かがこれを解決するための排他的なコマンドを追加するまで一時的な解決策を提案しました。
brew leaves
と呼ばれる external command があり、他のパッケージの依存関係ではないすべてのパッケージを出力します。
brew leaves
およびbrew deps <package>
の出力で論理andを実行すると、リストが取得されるだけです孤立した依存パッケージのうち、後で手動でアンインストールできるもの。これをxargs
と組み合わせると、必要なものが得られると思います(テストされていない、これに頼らないでください)。
EDIT:誰かがjoin
の代わりにxargs
を使用して、非常によく似たソリューションを提案しました。
brew rm FORMULA
brew rm $(join <(brew leaves) <(brew deps FORMULA))
詳細については、上記の問題に関する comment を参照してください。
ここでの目標は、指定されたパッケージとその依存関係を削除することですwithout別のパッケージの依存関係を壊します。私はこのコマンドを使用します:
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | xargs brew install
注:@alphadoggの役立つコメントを反映するように編集されました。
brew rmtree
はまったく動作しません 。その問題に関するリンクから、私は rmrec を見つけました。なぜbrew
がネイティブコマンドとしてこれを持っていないのか、神は知っています。
brew tap ggpeti/rmrec
brew rmrec pkgname
この答えを使用するには、システムにインストールしたいパッケージ名を含むファイルを作成して保守する必要があります。まだ持っていない場合は、次のコマンドを使って、インストールしたくないパッケージ名を削除します。
brew leaves > brew_packages
その後、次のコマンドを実行して、インストールされているが不要なパッケージと不要な依存関係をすべて削除できます。
brew_clean brew_packages
brew_clean
はこちらから入手できます: https://Gist.github.com/cskeeters/10ff1295bca93808213d
このスクリプトは、brew_packagesで指定したすべてのパッケージとそのすべての依存関係を取得し、それらをbrew list
の出力と比較して、ユーザーとのリストの確認後に不要なパッケージを削除します。
この時点でパッケージa
を削除したい場合は、単にbrew_packagesファイルからそれを削除してからbrew_clean brew_packages
を再実行します。 b
は削除されますが、c
は削除されません。
@jfmercerの回答に基づいています(訂正にはコメント以上のものが必要です)。
パッケージの依存関係を削除します(パッケージを削除しません)。
brew deps [FORMULA] | xargs brew remove --ignore-dependencies
パッケージを削除する:
brew remove [FORMULA]
足りないライブラリを再インストールします。
brew missing | cut -d: -f2 | sort | uniq | xargs brew install
これにはUNIXパイプを使用することができます。
brew deps [FORMULA] | xargs brew rm
他の答えは私にはうまくいきませんでしたが、これはうまくいきました(fish
シェル):
brew remove <package>
for p in (brew deps <package>)
brew remove $p
end
他のパッケージがp
に依存しているとbrew remove $p
が失敗するためです。
いくつかの良い答えがすでにありますが、いくつかは時代遅れで、どれも完全に完成したものではありません。特に、それらのほとんどは依存関係を削除しますが、その後も元々のターゲット式を削除するのはあなたに任せます。一度に複数の数式をアンインストールする場合は、投稿されたワンライナーを使用するのも面倒です。
これは、式のリストを取得し、それぞれの依存関係を削除し、式自体のすべてのコピーを削除してから、不足している依存関係を再インストールする、Bourne互換のShell関数です。
unbrew () {
local formula
for formula in "$@"; do
brew deps "$formula" |
xargs brew uninstall --ignore-dependencies --force
brew uninstall --force "$formula"
done
brew missing | cut -f2 -d: | sort -u | xargs brew install
}
Homebrew 1.7.4でテストされました。
これは私がテストしたすべての標準的な公式で機能します。現在のところキャスクを処理していませんが、標準の式と同じ名前のキャスクを作成しようとした場合にも大声で不平を言うことはありません(例:MacVim)。
brew missing
の出力が変更されているので、@ jfmercerの答えは現在のbrewで動作するように少し修正する必要があります。
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | cut -f1 -d: | xargs brew install
次のスクリプトを brew-purge として保存します。
#!/bin/bash
#:Usage: brew purge formula
#:
#:Removes the package and all dependancies.
#:
#:
PKG="$1"
if [ -z "$PKG" ];then
brew purge --help
exit 1
fi
brew rm $PKG
[ $? -ne 0 ] && exit 1
while brew rm $(join <(brew leaves) <(brew deps $PKG)) 2>/dev/null
do :
done
echo Package $PKG and its dependancies have been removed.
exit 0
次のコマンドでインストールしてください。
Sudo install brew-purge /usr/local/bin
今すぐ実行
brew purge package
Gpgを使った例
$ brew purge gpg
Uninstalling /usr/local/Cellar/gnupg/2.2.13... (134 files, 11.0MB)
Uninstalling /usr/local/Cellar/adns/1.5.1... (14 files, 597.5KB)
Uninstalling /usr/local/Cellar/gnutls/3.6.6... (1,200 files, 8.9MB)
Uninstalling /usr/local/Cellar/libgcrypt/1.8.4... (21 files, 2.6MB)
Uninstalling /usr/local/Cellar/libksba/1.3.5... (14 files, 344.2KB)
Uninstalling /usr/local/Cellar/libusb/1.0.22... (29 files, 508KB)
Uninstalling /usr/local/Cellar/npth/1.6... (11 files, 71.7KB)
Uninstalling /usr/local/Cellar/pinentry/1.1.0_1... (12 files, 263.9KB)
Uninstalling /usr/local/Cellar/libassuan/2.5.3... (16 files, 444.2KB)
Uninstalling /usr/local/Cellar/libtasn1/4.13... (59 files, 436KB)
Uninstalling /usr/local/Cellar/libunistring/0.9.10... (54 files, 4.4MB)
Uninstalling /usr/local/Cellar/nettle/3.4.1... (85 files, 2MB)
Uninstalling /usr/local/Cellar/p11-kit/0.23.15... (63 files, 2.9MB)
Uninstalling /usr/local/Cellar/gmp/6.1.2_2... (18 files, 3.1MB)
Uninstalling /usr/local/Cellar/libffi/3.2.1... (16 files, 296.8KB)
Uninstalling /usr/local/Cellar/libgpg-error/1.35... (27 files, 854.8KB)
Package gpg and its dependancies have been removed.
$