web-dev-qa-db-ja.com

apt-getを使用してパッケージと依存関係を削除する

私は最近、パッケージと依存関係の削除に関する多くの質問/回答/意見を読んでいます。それを行うには多くの異なる方法があります。いくつかは過度に複雑であり、いくつかは不十分/不完全です。ここで、他の人がパッケージ、構成、依存関係、依存関係の構成を含むすべてを消去するための最善の方法だと思うことを1か所で聞きたいと思います。私も多くの試行錯誤と髪を引っ張ってから来た私の方法を提供します。

3
Brian Huggins

警告:これにより、必要なパッケージが削除される可能性があります。これが発生した場合は、それらを再インストールしてください。しかし、正直なところ、システムに大きな変更を加えるようなものをインストール/アンインストールする場合は、先にバックアップをとる必要はありません。

パッケージを完全に削除し、その依存関係に加えて、依存関係の構成を含むすべての構成と小さなハウスクリーニングを実行する最も徹底的な方法は、PACKAGENAMEが削除するメインパッケージです。

  • デスクトップからログアウトし、Ctrl + Alt + F1を押してからTTY1にログインし、次のコマンドを実行します。

    Sudo apt-get purge <PACKAGENAME>
    Sudo apt-get purge $(apt-cache depends <PACKAGENAME> | awk '{ print $2 }' | tr '\n' ' ')
    Sudo apt-get autoremove
    Sudo apt-get update
    Sudo apt-get check
    Sudo apt-get -f install
    Sudo apt-get autoclean
    
  • 必要に応じて再起動

    Sudo shutdown -r now
    

では、2行目で何が起こっているのでしょうか?パイプはapt-cache依存から出力を取得し、再フォーマットします。最初のパイプawk '{print $ 2}'はapt-cacheの出力を受け取り、2番目の列のみを出力、つまり「エコー」します。それなしでは、リストに依存タイプである別の列、つまり「depends」、「recommends」などもあります。次に、2番目のパイプtr '\ n' ''がその結果を取りますそして、改行を削除または切り捨てて(したがってtr)、改行を名前を区切るスペースに置き換えます。これらはすべて、コマンドオプションを削除するために複数のパッケージ入力で使用するのに形式に優しいPACKAGENAMEのすべての依存パッケージの名前の「スペース区切り」リストを返します。

これは、特にメタパッケージでうまく機能します。最後に最後のコマンド「Sudo apt-get -f install」を実行して、壊れている可能性のあるパッケージを確認し、一度に多くの変更を行った後に修正します。特に、「DE」を追加して戻りたいときはいつでもこれを行います。つい最近、GNOMEのインストール後にこれを使用しましたが、GRUBが変更され、DMのログインオプションが変更された後、autoremoveでGnomeを削除するだけでした。 lubuntu-desktopを試してみると、いくつかの競合が修正され、パージと自動削除によって残されたDMログインからエントリが削除されました。

うまく機能する同様の方法はおそらくより安全ですが、それでも常にすべてを取得できるとは限りません。

Sudo apt-get --purge autoremove PACKAGENAME

フォローアップが必要な場合とそうでない場合があります:

Sudo apt-get update
Sudo apt-get check
Sudo apt-get -f install
Sudo apt-get autoclean
5
Brian Huggins

また、そのためにaptitude purgeを使用します。

Sudo aptitude purge <PACKAGENAME>

このコマンド

  • 依存関係を削除します
  • 他のインストール済みパッケージの依存関係でもある依存関係を削除せずに、
  • しかし、依存関係の構成が削除されるかどうかはわかりません。
0
Yuri P.