新しくインストールされたGentoo 2.13システムで、次のコマンドを実行して最初のパッケージをインストールしました。
$ cat /etc/gentoo-release
Gentoo Base System release 2.13
$ sudo emaint -a sync
$ sudo emerge app-editors/emacs
$ emacs # It runs successfully
成功したインストール。テストとして同じパッケージをすぐに削除しようとしましたが、失敗しました。
$ sudo emerge -cav app-editors/emacs
Calculating dependencies... done!
app-editors/emacs-29.1-r1 pulled in by:
app-emacs/emacs-common-1.9 requires >=app-editors/emacs-23.1:*
>>> No packages selected for removal by depclean
なぜこれが起こるのですか?私は間違った削除コマンドを実行しましたか?パッケージマネージャの最も簡単なテストは、オペレーティングシステムの新しいコピーにパッケージをインストールして削除することです。
説明していただきありがとうございます。
答え1
説明する
@Dean Brundageが正しく指摘したように、Big CはCleanを意味し、依存関係を確認する必要はありません。小さなcは依存パッケージのクリーンアップを示します。あなたのapp-emacs/emacs-common
場合逆依存性~のapp-editors/emacs
これ適切削除する方法は次のとおりです。
emerge -cav app-emacs/emacs-common
emerge -cav app-editors/emacs
これにより、依存関係と要求されたパッケージが正しく削除されます。
答え2
--unmerge、-Cを探しています。
--unmerge, -C
WARNING: This action can remove important packages! Removes all
matching packages following a counter governed by CLEAN_DELAY.
This does no checking of dependencies, so it may remove packages
necessary for the proper operation of your system. Its argu-
ments can be atoms or ebuilds. For a dependency aware version of
--unmerge, use --depclean or --prune. For a version with
CLEAN_DELAY=0, use --rage-clean.
-cは--depcleanで、明示的にマージされたパッケージと関連付けられていないパッケージを削除します。
答え3
パッケージを明示的にインストールすると、グローバルパッケージファイルに追加されます。 Portageは、クリーンアップ時にPortageに依存しないパッケージを無視します。
パッケージを明示的に削除するには、 --unmerge フラグを使用します。ただし、マージされていないパッケージに依存する他のパッケージを無意識に追加すると、問題が発生する可能性があります。推奨される回避策は、 --deselect フラグを使用してグローバルファイルからパッケージを削除し、依存関係のクリーンアップを実行することです。