web-dev-qa-db-ja.com

半分インストールされたパッケージの悪夢

ある時点で、私のサーバーの1つがそのネットワーク接続ストレージデバイスへの書き込みを停止し(推定)、1週間以上のパッケージが「インストール済み」状態になりました。

奇妙なのは、apt-getは問題を報告せず、意図したとおりにインストールする最新のアップデートを取得できました。

ログ(dpkg.log*)そして、この状態にはさらに多くのパッケージがあることがわかりました。

Apt-getまたはdpkgのすべてのパッケージを調べて、apt-get install <packagename> --reinstall操作。

この混乱を片付ける別の方法がない限り。

誰が私がこれを行うことができるかについてアイデアを持っていますか?またはこの問題を解決する方法に関する他のアイデアがありますか?

1
RapidWebs

Sudo dpkg --configure -a。これにより、これらのパッケージが自動的に修復されます。

それでもうまくいかない場合は、Sudo apt-get install -fを実行してからSudo dpkg --configure -a再び

本当に各パッケージを調べて再インストールしたい場合は、

そして、覚えておいてください、これは間違いなく理想的な解決策ではありません

Sudo dpkg --configure -aコマンドは機能しません。

すべてのパッケージを再度ダウンロードしてインストールする必要があるため、これには非常に長い時間がかかります。

for pkg in `dpkg --get-selections | awk '{print $1}' | egrep -v '(dpkg|apt|mysql|mythtv)'` ; do apt-get -y --force-yes install --reinstall $pkg ; done

ソース

3
Pranav Marathe

Linux MintにOpera Webブラウザをインストールした後、この問題に遭遇しました。Srsly、そこに行かないでください。現在のOperaパッケージは喫煙でしたが、明らかに、以前のまだサポートされているDebianベースのオペレーティングシステムのLTS(Long Term Support)バージョンに対してテストしていませんでした。

これがあなたが担当しているシステムに起こった場合-アップデートが「エラーコード1」を返し、壊れたジャンクのために変更が行われなかった場合-動作する簡単な修正があります。ターミナルをポップして、以下を実行します。

cd/var/lib/dpkg/info /

これにより、dpkgがインストールされたソフトウェアに関連する構成ファイルを保存するディレクトリに移動します。それから:

ls | grep -iオペラ

(「opera」をパッケージマネージャーを壊したパッケージに置き換えてください)

このコマンドは、名前に「Opera」などが含まれるすべてのファイルをリストします。それらに目を通す:Opera(または何でも))に関連する/ not /は何かありますか?その場合、メモを取り、フルネームを使用して「問題のある」パッケージのファイルのみを1つずつ削除します、同様の名前を持つ他のものを壊さないようにするためですが、検索からのすべてのリターンが明らかにborkenパッケージに属する場合は、次のようにします。

Sudo rm オペラ

...「opera」をパッケージマネージャーを無効にしているジャンクに置き換えます。

結果:半分インストールされた壊れたパッケージは、あなたのハードドライブに「永遠に」座ります。これは、善と聖なるものすべてに対する致命的なIn辱です。/binディレクトリに移動して手動で削除しない限り。どちらにしても、インストールしたソフトウェアを更新したり、新しいパッケージをインストールしたりすることができます。これは、パッケージマネージャーが、失敗したパッケージとその破損部分が存在したことを認識しないためです。

0
user937208

Pranav Marathe回答:

   --force-yes
       Force yes; this is a dangerous option that will cause apt to
       continue without prompting if it is doing something potentially
       harmful. It should not be used except in very special situations.
       Using force-yes can potentially destroy your system! Configuration
       Item: APT::Get::force-yes. This is deprecated and replaced by
       --allow-downgrades, --allow-remove-essential,
       --allow-change-held-packages in 1.1.

   -y, --yes, --assume-yes
         Automatic yes to prompts; assume "yes" as answer 
         to all prompts  and run non-interactively. 
         If an undesirable situation, such as changing a held package, 
         trying to install a unauthenticated package 
         or removing an essential package occurs then apt-get will abort.  
         Configuration Item: APT::Get::Assume-Yes.
0
ceph3us