バニラのGentooでは、なぜPortageがパッケージを「emerge install & Removal」として削除しないのですか?

バニラのGentooでは、なぜPortageがパッケージを「emerge install & Removal」として削除しないのですか?

新しくインストールされた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

これ適切削除する方法は次のとおりです。

  1. emerge -cav app-emacs/emacs-common
  2. 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 フラグを使用してグローバルファイルからパッケージを削除し、依存関係のクリーンアップを実行することです。

関連情報