web-dev-qa-db-ja.com

*未使用*パッケージを安全に削除する

さまざまなLinux初心者の実験の後、Kubuntuシステムは、不要になったパッケージはもう必要ないので削除する必要があることを通知し続けます。これは私にとって良い考えのように聞こえます。

これは、「apt-get -s autoremove」が削除を提案するものです。

  freeglut3 fs-uae fs-uae-launcher gir1.2-gtksource-3.0 hwdata ipython kmymoney-common libalkimia4 libexosip2-11 libglee0d1 libgnome-desktop-2-17 libgtksourceview-3.0-1 libgtksourceview-3.0-common
  libgwengui-cpp0 libgwengui-qt4-0 liblinphone5 libmediastreamer-base3 libofx6 libosip2-11 libosp5 libpanel-applet0 libportmidi0 libpyside1.2 libsdl-image1.2 libsdl-mixer1.2 libsdl-ttf2.0-0
  libsensors-applet-plugin0 libshiboken1.2 libsmpeg0 linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic meld python-dulwich
  python-fastimport python-numpy python-opengl python-pexpect python-pygame python-pyside python-pyside.phonon python-pyside.qtcore python-pyside.qtdeclarative python-pyside.qtgui python-pyside.qthelp
  python-pyside.qtnetwork python-pyside.qtopengl python-pyside.qtscript python-pyside.qtsql python-pyside.qtsvg python-pyside.qttest python-pyside.qtuitools python-pyside.qtwebkit python-pyside.qtxml
  python-simplegeneric python-svn

それらのほとんどについて、どのコンテキストでインストールしたのかわかりません。しかし、これらのパッケージの少なくとも1つは間違いなく使用されていません。エミュレータ「fs-uae」は私が手動でインストールしたものであり、引き続き使用するつもりです。

Apt-getが「fs-uae」パッケージの削除を提案するのはなぜですか?何かを壊して、必要なものを削除せずにクリーンアップする方法はありますか?

2
Silicomancer

おそらく既にご存知のように、Linuxパッケージでは「依存関係」、つまりこのパッケージが実際に機能するためにインストールする必要がある他のパッケージを指定する場合があります。これらの依存関係は再帰的に解決されます。つまり、パッケージの依存関係の依存関係もインストールされます。このようにして、ソフトウェアのセット全体をインストールするメタパッケージが存在する場合があります。一般的な例は、libreoffice(オフィススイート用)またはkde-full(KDEデスクトップ全体用)です。

Apt(Debianパッケージマネージャー)がパッケージをインストールするとき、すべての依存関係を自動インストールとしてマークします。このようにして、ユーザーが明示的に要求したパッケージと、単に依存関係として取り込まれたパッケージ(どのユーザーがほとんど気にしないか)を区別できます。

apt-get autoremoveは、自動的にインストールされたとマークされているが、手動でインストールされたパッケージには不要になったパッケージを検索します。多くの場合、これらは古いバージョンのライブラリ(ライブラリのバージョンが異なるバージョンの共存を許可するためにパッケージ名に含まれている場合(例:libavcodec54libavcodec56))またはリポジトリから削除されたパッケージですが、時には便利なアプリケーションが取り込まれます依存関係として削除されます。これは、特に推奨パッケージまたは推奨パッケージをインストールするようにaptに最初に指示した後、これらのパッケージを依存関係としてプルしないように構成した場合に特に起こります。

削除の対象となるパッケージのリストからパッケージを削除するには、そのパッケージを手動でインストール済みとしてマークします。 apt-markを使用して実行できます:

apt-mark manual <package_name>

またはaptitude(次のコマンドは同等であり、1つのみを使用します):

aptitude unmarkauto <package_name>
aptitude install <package_name>
aptitude install <package_name>&m

最後に、これらの特定のパッケージがインストールされたときにコンテキストを取得するには、/var/log/apt/history.logファイルで名前を検索してみてください。これらのログは毎月ローテーションされます(圧縮されて別のファイルに保存されます)。完全なアーカイブを取得するには、次を実行できます(順序は保持されません)。

cat /var/log/apt/history.log > /tmp/full-archive
zcat history.log* >> /tmp/full-archive
3