web-dev-qa-db-ja.com

壊れたdpkgとaptパッケージマネージャーの修正

過去に管理していないVMを使用していますが、悪い状態になっています(ただし、救助する必要があります)。私はLinuxの専門家ではありませんが、過去5年間でグーグルを使用して問題を解決することができました。昨日完全な一日を過ごした後、私は他に何をすべきかわからず、問題を述べるだけで愚かな質問をします。

  • システムは通常のブートを行いません(ただし、ファイルシステムをマウントし、ある程度ネットワークを有効にすることができるレスキュールートシェルを開くことができます(外部ネットワークにアクセスできますが、ポート22を開いたり、sshデーモンを起動できません-ただし、Apacheを起動してポート80を開くことはできます)
  • Dpkgは常に古いlinuxヘッダーイメージについて文句を言うので、ソフトウェアをインストールまたは削除できません(元の管理者がスペースを作るためにブートパーティションから手動でlinuxヘッダーを削除したと思います)。
  • 今、私はapt-getのインストール、削除、またはアップグレードを試みるたびに、dkpgのエラーが多すぎる場所、特に古いLinuxイメージ(ブートパーティションに存在しない)のエラーがあり、それが中断することを訴えます。また、ファイルが見つかりません(古いlinuxヘッダーに関連する)と文句を言います。
  • 私はgrub2を再インストールするように提案した1つの指示を見つけました。削除は機能しましたが、インストールは他のソフトウェアをインストールできないのと同じように壊れたと思います。次回マシンを再起動したくないときには、grub2がアンインストールされているように見えるため、レスキューシステムに入ることすらできないと確信しています。
  • apt-get install linux-image-genericのようなことはできません

私はこの投稿が適切な質問を出しさえしないことを理解していますが、それをどのように定式化するかさえ知りません。非常に多くのことが壊れているようで、明らかにどこから始めればいいのかわからなくなりました。

編集

dpkg --get-selectionsの出力: http://Pastebin.com/CRFaaJ7m

apt-get install linux-genericの出力: http://Pastebin.com/7t20Bav

dpgk --configure -aの出力: http://Pastebin.com/Hpmch9dM

また、出力は興味深いものになると思います(特に484行目から): http://Pastebin.com/uUi86FtT

1
Rene Pickhardt

dpkgステータスから古いカーネルを1つしか表示できませんでしたが、実際にディスク上にあるかどうかはわかりません。

とにかく:

  1. DPKGステータスファイルのバックアップを作成します

    cp /var/lib/dpkg/status /var/lib/dpkg/status.backup0
    
  2. 手動で削除されたカーネルをDPKGステータスからクリアします

    パッケージエントリである行を確認します

    grep -n linux-image-extra-3.13.0-93-generic /var/lib/dpkg/status
    

    編集用のオープンステータス(行番号でxxxxxを変更)

    nano +xxxxx /var/lib/dpkg/status
    

    この例のように、ステータスをdeinstallに変更します

    Package: linux-image-extra-3.13.0-93-generic
    Status: install ok installed
    

    Package: linux-image-extra-3.13.0-93-generic
    Status: deinstall ok config-files
    

    Ctrl+O 保存する & Ctrl+X 出る

  3. 次のパッケージについて前の手順を実行します

    linux-image-3.13.0-93-generic
    linux-image-extra-3.13.0-101-generic
    linux-image-3.13.0-101-generic
    
  4. DBus post-installスクリプトを変更してエラーをスキップする

    nano /var/lib/dpkg/info/dbus.postinst
    

    およびコメントset -e#set -e(5行目付近)

  5. 前のインストールを続ける

    dpkg --configure -a
    
  6. 依存関係を修正

    apt -f install
    
2
user.dz