私は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
dpkg
install-info
GNUスクリプトを置き換える独自のスクリプトがありました。一つ変更に関するメールパッケージに関する提案が提供されます(フォーマットを追加)。
これらのパッケージは適切な情報ファイルを配置し、スクリプト(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
私はそれが彼が新しいものを使用することを強制したと思います。
それ以来、アップグレードは非常にスムーズに行われました。