完全にインストールされていないパッケージを削除/インストールする方法は?


62

先日bsnesをインストールしましたが、何らかの理由でインストールが失敗しました。今、私は更新、新しいパッケージのインストール、または基本的にapt-getコマンドを実行できません。これらはすべてこの壊れたパッケージを処理しようとして失敗するからです。新しいパッケージをインストールしようとしても、同じ運命に陥ります。私が得るエラーは次のとおりです:

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

私はグーグルで、ここではAsk Ubuntuで検索してきましたが、有効なソリューションは見つかりませんでした。一般的に推奨される修正は、次を実行することです。

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

ただし、これは機能しません。apt-getコマンドはすべて上記と同じエラーで失敗し、dpkgコマンドは役に立ちません。彼らはしばしば、Synapticまたはコマンドラインを介してパージすることを提案しますが、これも失敗します。

助けてくれてありがとう

回答:


60

上級ユーザーの場合は、自己責任で使用してください。

次のエラーメッセージによると:

subprocess installed post-installation script returned error exit status 127

/var/lib/dpkg/info/[package_name].postinstすべてを編集してコメントを付けて(または、さらに理解して問題を特定してから)apt-get再試行してください。

この特定の質問では、メッセージは「インストール後」に関するものですが、代わりに「pre-removal」または「post-removal」などを記載することもできます(この場合、編集するファイルの拡張子は.prermまたはになります.postrm) 。


2
実際、これが最良の方法です。再インストールdpkgが常に役立つとは限りません。
ダナテラ

2
ヒープに感謝します。修正する必要/var/lib/dpkg/info/[package_name].prermがありましたが、あなたの投稿は正しい方向を示してくれました。確かに上級ユーザーにとっては、これは危険です!
sмurf

最高の答え。ありがとう!修正.prerm.postrmファイルは問題を修正します。
フューザー

42

既に投稿したもの以外に、役立つコマンドはほとんどありません。

  • Autocleanは、取得したパッケージファイルのローカルリポジトリをクリアします。

    sudo apt-get autoclean
    
  • パッケージのインストール/削除を強制します。caution注意して使用する

    sudo apt-get --force-yes install <pkgname>
    

    そして

    sudo apt-get --force-yes remove <pkgname>
    

また、いつものように、dpkgパッケージのインストール、削除、削除に使用できます。

  • インストール

    sudo dpkg -i <pkgname>
    
  • 削除する

    sudo dpkg -r <pkgname>
    
  • パージ

    sudo dpkg -P <pkgname>
    

dpkgとapt-get --force-yesコマンドはどちらも、以前と同じエラーを返します。Autocleanはエラーを返しませんが、2つの壊れたパッケージに対しては何もしないようです。
ビジャク14年

@Bijakあなたは確かにパージを試みたに違いありませbsnesん。
登録ユーザー14年

はい、dpkg -P、apt-get purge、およびSynaptic
Bijak 14年

出力の投稿dpkg -l |grep bsnes
登録ユーザー14年

正確なSNES / SuperFamicomエミュレータAMD64 0.088から7のRF bsnes
Bijak

27

したがって、さらにグーグルでエラーメッセージを注意深く注意深く読んだ後、dpkg再インストールする必要があるようです。

sudo apt-get install --reinstall dpkg

これが問題であることが判明した(誰かがこれを検索して表示した場合)のはupdate-alternatives: not found、エラーメッセージにあったことです。dpkgが再インストールされるとすぐに、他のパッケージは自動的に正常にインストールされました。


3
一番上の回答の投票数がthan未満で、リストの一番下にある唯一の正しい(そして受け入れられた)答えはなぜですか?+1
デビッドフォースター

その理由の1つは、ダウンロードできなくなったパッケージでは機能しないためです。「linux-image-extra-4.4.0-65-genericの再インストールはできません。ダウンロードできません。」
ジョー

3
これはおそらく、質問のタイトルに基づいてここに来る人にとって最も可能性の低い解決策です。しかし、一つは、この問題で終わることができます多くの理由がありますので、そこになりますソリューション「これが私の作品」を提案し、多くのこと。
マイケル

これは実際には機能しません。
NelsonGon

15

この/var/lib/dpkg/info/パスのパッケージファイルを削除して、ソースを更新できます。

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

次に、パッケージを再インストールします sudo apt-get install [package_name]

Doc


4
実際に使用した方が良いでしょうsudo rm /var/lib/dpkg/info/[pakege_name].*。それ以外の場合は、同じ名前で始まるパッケージも削除します。とにかく、これのおかげで、それは私のために働いた唯一の解決策だった
-smac89

13

他のすべてが失敗した場合。私がしたことは、最初にディレクトリを次のように変更したことです:

cd /var/lib/dpkg/info

その後、私はすべてを削除しました.postinst

sudo rm *.postinst

その後、リポジトリを更新します

sudo apt-get update

その後、私がやったときにすべてが正常に戻りました:

sudo apt-get --force-yes install openjdk-7-jre-headless

6
これにより、影響を受けるパッケージのスクリプトだけでなく、インストール後のスクリプトがすべて削除されます。私の意見では熱心すぎる。-1
デビッドフォースター

問題の原因となっている特定のポストインストールスクリプトのみを簡単に特定して削除できる場合、これは失敗したパッケージを削除する非常に便利な方法です。
イアンマッキノン

ただ、影響を受けたカーネルの.postinstの名前を変更するカーネルの問題と悪夢の後に問題を修正しました
アンディ

5

他のすべてが失敗した場合、パッケージを手動で削除できますdpkg。実行sudo dpkg -P bsnesするとパージされbsnesます。


2
dpkg: error processing package libcuda1-340 (--purge): package is in a very bad inconsistent state; you should reinstall it before attempting a removal
エンドリス

2

私の場合 apt-get install -fはうまくいきました。mysql-workbench-communityをインストールしていました

以前に試した apt autoclean

依存関係の欠落が原因のdpkgエラーが見られましたが、強制モードでインストールすることで修正できます(依存関係のインストール)


0
sudo apt-get install -f --reinstall coreutils init-system-helpers

上記を実行した後、すべてのパッケージに対して通常どおりインストール/アップグレード/削除/パージを実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.