誤って削除された/usr/lib/*.so.*


9

MRTGのインストール中に、誤って削除して/usr/lib/*.so.*しまいました。/usr/lib/*.so

現在、システムを起動できません。スプラッシュスクリーンでスタックし、PAGEDOWNボタンを押すと、ロードに失敗しているものがいくつかあることがわかります。

しかし、DHCPとWebMinが実行されており、Webminからlibpipeline.so.1は、Isが見つからないなどの理由でcupsがロードされていないことを示すシステムログを確認できます。

私のコンピューターは11.04を実行しています



Ubuntu固有の質問については、Ask Ubuntuを使用してください。クロスポストしないでください。ubuntu固有のものかどうかわからない場合は、まずここで確認してください。ubuntu固有のものである場合は移行します。

2
また、将来へのヒント... 再起動する前にこれほど悪いことをしたと知っているなら... 再起動しないでください。システムを実行したままにして、すぐに修理を開始します。私が回復してきた/binし、/etc過去にそのように

回答:


5

を削除/usr/lib/*しただけでなく/lib/*、削除したので、おそらく回復できます。システムを回復するために不可欠なすべてのプログラムは、のライブラリのみを使用していると思います/usr/lib

テキストログインプロンプトを起動します。通常の起動ではlogin:テキストモードでプロンプトが表示されない場合は、最小限のサービスのみで起動します。Shiftコンピューターが起動してから押し続けると、Grubプロンプトが表示されます。BIOSがキーボードを初期化した後、Grubがロードされる前にキーを押す必要があります。これにより、一部のマシンではわずかな時間枠しか残らず、数回の試行が必要になる場合があります。Grubプロンプトでを押しDownて、シングルユーザーモードのブートエントリを強調表示し、それを起動します。

コマンドラインを作成したら、を実行apt-get --reinstall install PACKAGE1 PACKAGE2 …して、にファイルがあるパッケージを再インストールします/usr/lib。このシェルスニペットを実行して、再インストールするパッケージの名前のリストを取得できます。

egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'

一部のパッケージインストールスクリプトでは、他のパッケージのライブラリが存在する必要があるため、特定の順序で再インストールを実行する必要がある場合があります。パッケージのインストールスクリプトが特定のプログラムを使用しようとしていることがわかった場合は、このプログラムに必要なライブラリを見つけることができますldd。たとえば、これはpythonに再インストールする必要のある3つのライブラリがないことを示しています。

$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found

dpkg -S /usr/lib/libz.so.1このファイルがからのものzlib1gであることを明らかにします。

apt-getパッケージをダウンロードできない場合は、まずライブCDからいくつかの主要なパッケージをダウンロードしてください。zlib1gそしてlibssl0.9.8あなたが早い段階で必要に非常になりそうだ二つのパッケージがあります。


10

不足しているものをすべて見つけるために1週間を費やすか、CDから再インストールして古いパッケージをすべて戻すために1時間を費やすことができます。

まずLiveCD環境を起動して、まずバックアップを取得(外部USBドライブまたは別のパーティションにコピー)してから、もう一度起動することをお勧めします。


2
正確には、すべてを再インストールしないと、奇妙な障害やクラッシュなどが数か月後に発生することが予想されます。
JanC

3

/usr/lib率直に言って、スタートアップに不可欠なソフトウェア以外のすべての共有ライブラリが含まれていました/lib/(これは、パッケージマネージャー(通常は/usr/local/lib)を介してインストールしなかったものです)。

ショートバージョンでは、システムをホースしました。

さて、まだ/var/cache/apt/archives十分なものがあれば、少し賢明な魔法を使って状況を救うことができるかもしれません。

次のパッケージのアーカイブがまだ含まれているかどうかを確認します。

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

これらのパッケージには、動作/usr/libするaptitudeために必要なライブラリが含まれています。パッケージが見つかった場合は、/var/cache/apt/archivesを使用して手動で再インストールできます。パッケージdpkg -i <packagenameがすべてインストールされると、aptitudeを実行できるようになります。

次に、コマンドaptitude reinstall ~iを実行することで、すでにインストールされているすべてのパッケージを強制的に再インストールします。これにより、システムが復元されるはずです。あなたがしたダメージはこの場合本当に壮観なので、私は絶対的な保証をすることはできません...


1

私はUbuntu 11.04ライブCDからブートして、不足しているファイルをコピーして戻そうとします。

何かを行う前に、ユーザーが生成したデータファイルの適切なバックアップがあることを確認してください。そうでない場合は、ライブCDを起動してHDDを読み取り専用でマウントし、できるだけ早くバックアップを作成します。


0

私が同じようなことをしたとき、私は再起動を試みる前に気付くのに十分幸運でした。この時点で、システムはまだほとんど動作しています。私のアプローチは、同じバージョンのOSで仮想ボックスを作成し、そこから不足しているファイルをコピーすることでした。virtualboxゲストへのsshアクセスを許可する場合、メインシステムのターミナルからrsyncを使用して、欠落しているファイルとリンクのみを取り込むことができます。私の場合、不足しているファイルがほとんどないため、scpを使用して手動でコピーするのが最も簡単/安全だったため、以下はテストされていません(!)

sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-aはアーカイブモードです(再帰的、シンボリックリンク、およびタイムスタンプ、権限などの属性をコピーします)。

-uコピー先が新しい場合はスキップします

-vは冗長です

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