Debian から古いパッケージを削除するには?

Debian から古いパッケージを削除するには?

私はsidを実行していて試しています。グレード全体にわたって私のシステムがi386からamd64に変わり、削除できないいくつかの古いパッケージが見つかりました。背景知識:私はジャガイモを始めたとき、またはそれより早くからこのシステムを使用しました。

そのようなパッケージは約100個あるので、一般的またはスクリプト可能な答えが欲しいです。例は次のとおりです。

bminton:/var/cache/apt/archives# dpkg --purge libstdc++2.10-dev
(Reading database ... 1352516 files and directories currently installed.)
Removing libstdc++2.10-dev (1:2.95.4-27) ...
install-info: No dir file specified; try --help for more information.
dpkg: error processing package libstdc++2.10-dev (--purge):
 subprocess installed pre-removal script returned error exit status 1
Errors were encountered while processing:
 libstdc++2.10-dev

prerm スクリプト `/var/lib/dpkg/info/libstdc++2.10-dev.prerm スクリプトには次の内容が含まれています。

#! /bin/sh -e



install-info --quiet --remove iostream-2.95

手動で実行すると、次のエラーが発生しますinstall-info --quiet --remove iostream-2.95

install-info: No dir file specified; try --help for more information.

答え1

dpkginstall-infoGNUスクリプトを置き換える独自のスクリプトがありました。一つ変更に関するメールパッケージに関する提案が提供されます(フォーマットを追加)。

これらのパッケージは適切な情報ファイルを配置し、スクリプト(postinstとprerm)がある場合はスクリプトを/usr/share/info呼び出す必要があります。update-info-dir情報パッケージを提案/推奨することができます。

したがって、私が提案するのは、その/var/lib/dpkg/info/libstdc++2.10-dev.prerm行を編集(例:編集)してコメントアウトすることですinstall-info ...。このエラーが発生した他のパッケージに対しても同じことを行います。パッケージを消去して手動で実行してくださいupdate-info-dir

注:後でアップグレードした後は、システムで廃止された/ローカルパッケージのリストを確認し、必要でない場合は削除する必要があります。それ以外の場合は、非常に古いメンテナンススクリプトを使用します。

答え2

私は自分のコマンドを作成してinstall-info前に置くことで/usr/binこの問題を解決しました$PATH。スクリプトは

#!/bin/sh
/usr/bin/install-info "$@" || true

答え3

私はLinuxに初めて触れたので、これはおそらく悪いアドバイスかもしれませんが、より安全な解決策($ PATHの変更など)を試した後に私に効果があった唯一の方法は、以前のインストール情報を「削除」(名前変更)することでした。

> which install-info
/usr/bin/install-info
> mv /usr/bin/install-info install-info.bak

私はそれが彼が新しいものを使用することを強制したと思います。

それ以来、アップグレードは非常にスムーズに行われました。

関連情報