Apt::AutoRemove::SuggestsImportant "false" を使用しても apt autoremove はすべての依存関係を削除しません。

Apt::AutoRemove::SuggestsImportant "false" を使用しても apt autoremove はすべての依存関係を削除しません。

回答に関するコメントで述べたようにDebian 9.1: apt-get autoremove は依存関係を削除しません。、/etc/apt/apt.confにこの行を追加し、Apt::AutoRemove::SuggestsImportant "false";Debian Fast TrackからVirtualBoxをインストールしたときに自動的にインストールされたg ++を削除できました。 (私はDebian 12を使っているので説明するので、コード名Bullseyeをbookwormに置き換える必要がありました。https://fasttrack.debian.net/更新なし)。

ただし、apt autoremovelibasan8 など、不要になった他の自動インストールされたパッケージはまだ削除されません。理由をご存知ですか?自動的に削除するソリューションはありますか?

以下を実行してインストールされたすべてのパッケージは次のとおりですsudo apt install virtualbox

build-essential dkms dpkg-dev g++ g++-12 gcc gcc-12 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan8 libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libgcc-12-dev
libgsoap-2.8.124 libitm1 liblsan0 liblzf1 libnsl-dev libstdc++-12-dev libtirpc-dev libtsan2 libubsan1 libvncserver1 linux-compiler-gcc-12-x86 linux-headers-6.1.0-18-amd64 linux-headers-6.1.0-18-common
linux-headers-amd64 linux-kbuild-6.1 linux-libc-dev make manpages-dev patch rpcsvc-proto virtualbox virtualbox-dkms virtualbox-qt

以下を実行して削除されたパッケージは次のとおりですsudo apt purge virtualbox

virtualbox* virtualbox-qt*

次のコマンドを実行して、これらのアドオンパッケージを削除しますsudo apt autoremove --purge

dkms* libgsoap-2.8.124* liblzf1* libvncserver1* linux-headers-amd64* virtualbox-dkms*

/etc/apt/apt.confを追加した後、同じコマンドを実行してApt::AutoRemove::SuggestsImportant "false";これらのパッケージも削除されました。

build-essential* dpkg-dev* g++* g++-12* gcc* libalgorithm-diff-perl* libalgorithm-diff-xs-perl* libalgorithm-merge-perl* libstdc++-12-dev* make* patch*

私の意見に従って要求されたように、出力は次のようになりますaptitude why libasan8

i   aptitude      Recommends libdpkg-perl               
i A libdpkg-perl  Suggests   gcc | c-compiler           
i A gcc-12        Provides   c-compiler                 
i A gcc-12        Depends    libgcc-12-dev (= 12.2.0-14)
i A libgcc-12-dev Depends    libasan8 (>= 12.2.0-14)

答え1

私の答えの目的Debian 9.1: apt-get autoremove は依存関係を削除しません。apt install振る舞いと対称性を作るために、前者apt autoremoveは基本的に「提案された」依存関係を無視し、答えは後者にそれを無視させる方法を説明します。

あなたの場合は、からインポートされたすべてのパッケージを自動的に削除する方法がないと思いますvirtualbox。その1つlinux-headers-6.1.0-18-amd64は保護されたカーネルパッケージ(/etc/apt/apt.conf.d/01autoremoveシステム参照)であるためです。少なくとも2つの最新のカーネルがインストールされるまでは、自動アンインストールの対象ではないため、削除するには手動で削除する必要があります。

   sudo apt purge linux-headers-6.1.0-18-amd64

そこはい対応するAPTオプションをApt::Protect-Kernels無効にできます。ただし、最新のパッケージ 6.1.0-18 と一致するカーネルを実行すると仮定すると、ヘッダーパッケージは保護され続けます。

パッケージが削除されると、Cコンパイラは自動削除候補になり、残りのパッケージapt autoremove全体ではなくてもほとんどを削除する必要があります。

そうでない場合は、「推奨」依存関係を無視するように指示autoremove(または)する必要があります。autopurge

sudo apt -o Apt::AutoRemove::RecommendsImportant=false autopurge

このコマンドを実行するときは注意してください。 「推奨事項」を満たすために残っているすべてのパッケージが削除されるため、合格するよりも優れている可能性が高くなりますvirtualbox

設定するとRecommendsImportantパッケージfalseのインストールの対称性が崩れるため、デフォルトでapt「推奨」インストールを無効にしない限り、設定で設定しないでください(Apt::Install-Recommends)。一般的なデスクトップ使用の場合、これは一般的に良い考えではありません。

関連情報