回答:
あなたがリクエストしたものであるかもしれない葉を誤って切断しないようにするには、port_cutleaves
パッケージをインストールしてからhttps://guide.macports.org/#using.common-tasks.keepleanを実行する必要がありsudo port_cutleaves
ます
MacPortsの1.9.0を追加sqlite
portdbformat
し、MacPortsの2.0.0古いドロップflat
形式を。sqlite
ポートDBフォーマットは、新規インストールのデフォルトです。1.9.xにアップグレードされた古いインストールでは、引き続きflat
形式1が使用されます。1.9.x flat
システムをsqlite
MacPorts 2.0にアップグレードするか、portdbformat
in の値を 変更してからrootとしてポートコマンドを/opt/local/etc/macports/macports.conf
発行することにより、形式に変換できます(例:)。sudo port installed
新しい形式の機能の1つは、「要求された」ポートのインストールと「要求されていない」ポートのインストールを追跡することです。要求されていないポートは、他のポートが依存しているためにインストールされたポートです。leaves
擬似ポート名は、他のインストールされたポートは依存しないその上に全ての非要求のポートに拡張します。これを使用して、不要なポートを最初にアンインストールしなかった場合でも、不要なポートを「クリーンアップ」できます(これにより、必要な処理sudo port uninstall --follow-dependencies portname
が行われますが、アンインストールするたびに使用することを忘れない場合のみ)。
アンインストールする前に、既存の葉を調べる必要があります。
port echo leaves
いくつかの一般的な葉(automake
、gperf
、libtool
、はpkgconfig
)共通ポートのビルド時の依存関係しているので、あなたは、「要求」して(したいことsudo port setrequested port1 port2 port3 …
だけで、後でそれらを再インストールする必要がそれらをアンインストールしないようにします)。
残っている葉は簡単にアンインストールできます。
sudo port uninstall leaves
注:葉を切り取る前に、「アクティブ」ではなくなったポートの古いバージョンをアンインストールすることもできます。これにより、さらにいくつかのリーフ(つまり、インストールされているが非アクティブなポートの依存関係であるポート)が明らかになる場合があります。
sudo port uninstall inactive
ありますいくつかのセクションでMacPortsのガイドも使用するプロセスについて説明しleaves
、不要なポートをアンインストールすることは。
while sudo port uninstall leaves; do :; done
を自動化するようなことを言うことができます。
sudo port uninstall --follow-dependents portname
ため、@ ChrisJohnsen は正しくありません--follow-dependents
。ここでの正しいオプションは--follow-dependencies
、「指定されたポートが依存していたすべてのポートを再帰的にアンインストールします。これにより、要求済みとしてマークされた依存関係または他の依存関係がある依存関係はアンインストールされません」
アンインストールアクションは、インストールされたポートをアンインストールします。
%% sudo port uninstall vile Note
特定のポートが依存しているポートも再帰的にアンインストールするには、
‑‑follow‑dependencies
フラグを使用します。これは、要求されたとマークされた依存関係または他の依存関係がある依存関係をアンインストールしません。ポート自体をアンインストールする前に、特定のポートに依存するすべてのポートを再帰的にアンインストールするには、を使用し
‑‑follow‑dependents flag
ます。ポートがインストールされている別のポートの依存関係である場合、アンインストールでは、最初に依存ポートを削除しない限り、ポートは削除されません。この動作を上書きするには、-f(強制)スイッチを使用します。これは明らかに扶養家族を破壊します。何をしているのかわからない限り、ポートを強制的にアンインストールしないでください。
%% sudo port -f uninstall vile
最後の段落の主な注意事項に注意してください。依存関係とはまさにその依存関係であり、異なるアプリは同じ依存関係を必要とする可能性があります。
‑‑follow‑dependencies
対‑‑follow‑dependents
。引用された一節は両方を説明していますが、最初の質問のみが質問に適用されます
ポートとその依存物を削除するコマンドは次のとおりです。
sudo port uninstall foo --follow-dependents
ただし、アンインストールするポートに依存関係がある場合、-f
(force)フラグなしではアンインストールされません。
もちろん、MacPorts Guideを読み、アンインストールガイドのセクションに目を通すことから始めてください。
ポートのクリーンアップを自動化するスクリプトをいくつか作成しました:https : //github.com/vasi/macports-tools
「macportsfoster」スクリプトは、「list deactivate $(macportsfoster)」がすべてのポートを一度に削除するように順序付けられた、requested-listの何にも必要のないすべてのポートのリストを出力します。
他の答えと--follow-dependents
旗はあなたが望むことをしないと思います。をインストールしA
、A
が必要な場合B
、素晴らしいパッケージ管理システムのおかげで、B
インストールされます。アンインストールするB
と--follow-dependents
フラグが認識され、削除されA
ます。しかし、最初に手動でインストールしたものA
であるため、より可能性の高いをアンインストールするA
とどうなりますか?この場合、B
残されます。
finkを使用する場合、debfosterパッケージはシステムをクリーンアップし、未使用の依存関係を削除するように設計されています。
Debfosterは、必要なプログラムが削除されるか、依存関係のないバージョンにアップグレードされたときに、パッケージ(ライブラリなど)をシステムから取り去るのに役立ちます。
一方でdebfoster
MacPortsのために動作しません、のポートがあるように見えるdebfoster
、例えば、portsfoster
それが中止されているようですが、...
おそらく、現在MacPortsのソリューションは存在しません。
apt
Debianが使用するシステムに基づいています。私はMacPortsを使用していませんが、私はfink install debfoster
それをしました。
apt
システムとは関係がなく、deb
ファイルを使用しません。MacPortsの考え方は、FreeBSDポートまたはNetBSD pkgsrcに関連していますが、実装は非常に異なります。