`apt` はアンインストール/削除時に依存関係の削除をどのようにチェックしますか? `apt` の動作を理解するのを手伝ってください

`apt` はアンインストール/削除時に依存関係の削除をどのようにチェックしますか? `apt` の動作を理解するのを手伝ってください

Linux でサウンドをいじっていて、パッケージをインストールしようとしましたjackd。返された内容の関連する抜粋は次のとおりですapt

$ sudo apt install jackd
The following additional packages will be installed:
  jackd2 jackd2-firewire libconfig++9v5 libffado2 libglibmm-2.4-1v5 libsigc++-2.0-0v5 libxml++2.6-2v5 python-dbus python-gi qjackctl

パージの結果は次のようになります。

$ sudo apt purge jackd
The following packages will be REMOVED:
  jackd* qjackctl*

その後のインストール:

$ sudo apt install jackd
The following NEW packages will be installed:
  jackd

- - - - - 編集 - - - - -

その後 :

sudo apt autoremove
The following packages will be REMOVED:
  libfwup1

(これは、jackd をインストールする前にすでに言及されていたパッケージです)

----------編集終了-----------

この実験から、apt依存関係は削除されないようです。ただし、削除qjackctlにより、具体的に言及したパッケージ ( ) に加えて、別のパッケージ ( )も削除されましたjackd

qjackctlはデーモンの対応する GUI インターフェースのパッケージでありjackd、もうない場合は必要ないことを理解していますjackd。ただし、論理的には、他の依存関係もインストールされているため、次のようになります。

  • なぜアンインストールされなかったのですか?
  • なぜqjackctlアンインストールされたのですか?
  • qjackctl2 回目のインストールでは取得されなかったのはなぜですか?

のみ見つかったのは問題のパッケージに固有のものでした。

ご協力ありがとうございました

PS: Arch Linux パーティションのインストールが終わったところです (将来的には Ubuntu パーティションを置き換える予定です)。今のところあまり詳しくありませんpacman。この動作はこのパッケージ マネージャーでより適切に管理できますか? (より正確には、非等操作と予測可能な動作)

答え1

追加のパッケージは、jackd:に直接 (おそらく間接的に) 依存しているためインストールされ、 .をjackd2介した残りは: がそれを推奨しているためインストールされ、推奨パッケージはデフォルトでインストールされます。jackd2qjackctljackd2

詳細には、インストールされたパッケージの依存関係ツリーは次のようになります。

jackd
└─ jackd2
   ├─ python-dbus
   │  └─ python-gi (recommended)
   ├─ jackd2-firewire (recommended)
   │  └─ libffado2
   │     ├─ libconfig++9v5
   │     ├─ libglibmm-2.4-1v5
   │     │  └─ libsigc++-2.0-0v5
   │     └─ libxml++2.6-2v5
   └─ qjackctl (recommended)

2 つの追加の依存関係はインストール手順には影響しませんが、後で重要になります。jackd2-firewireは に依存しjackd2qjackctlは に依存しますjackd

後者の依存関係はjackd2、 が削除されたときにqjackctlも削除する必要があることを意味します (パッケージは、その厳密な依存関係なしにインストールすることはできません)。他のパッケージは に依存していないjackdため、削除されませんでした。 によって削除されるはずでしたが、 がに依存しているapt autoremoveため、どのパッケージも不要になりません... (覚えていません)jackd2-firewirejackd2aptどの特定のパッケージ別のパッケージがインストールされました。autoremove自動的にインストールされたパッケージのみをチェックして、それらに依存するものがなくなったかどうかを確認します。追加の工夫として、autoremove推奨事項をパッケージをインストールしたままにしておくのに十分重要であると見なします。

2回目にインストールしたときにjackd依存apt関係を確認したところ、つまり jackd2または はjackd1、 がすでにインストールされていることに気付き、そこで停止しました。 は 自身ではなくによって推奨されているため、 が「不足している」jackd2ことに気付きませんでした。qjackctljackd2jackd

aptitudeは、依存パッケージが削除されるとすぐに、別のautoremove手順なしで不要なパッケージを削除します。使いやすいかもしれません。コマンドは と同じですapt。また、テキストベースのフルスクリーン ユーザー インターフェイスも備えており、非常に便利です。

関連情報