ユーザーが削除したDebian、Ubuntu、CentOSなどのLinuxシステムがあるとします/lib
。システムが実行されているオペレーティングシステムのlivecdバージョンを使用してシステムを正常に起動したとします。/lib
破損したシステムで再構築コマンドを実行できますか?
たとえば、ターゲットシステムが使用しているすべてのパッケージを再インストールすると、このようなことができるようになります。
このような状況に直面した同僚があり、最終結果は完全な再インストールでした。しかし、これは問題を解決できるのか、それとも早く解決できるのかを考えました。
答え1
ほとんどの場合、この問題は比較的簡単に解決できます。次のディレクトリを使用して、インストールされているすべてのパッケージのリストを生成できます/lib
。
dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,
これらのパッケージを再インストールすると問題が解決します。
apt-get --reinstall $(dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,)
もちろん、これは削除したディレクトリによって異なりますapt-get
。タスクを実行するために必要なパッケージはapt-get
手動でインストールする必要があります。そうしないと、dpkg
そのパッケージが別のコンピュータに抽出され、ファイルが所定の場所にコピーされる可能性があります。とにかく、後でそこにいるので、すべて再インストールされるので、apt
他の問題は発生しません。
にファイルを入れた私のパッケージのリストを見ると、メイン/lib
パッケージはカーネル(すべてのモジュールがに移動/lib/modules
)とlibc
。どちらもシステムを起動するために再インストールが必要であることはほぼ確実です。 1つの方法は、Debianベースのライブシステムからインストールすることです。必要なパッケージをダウンロードしてターゲットシステムのルートディレクトリにインストールした場合は、ここにインストールするオプションを追加できます。例--root
:dpkg
dpkg --root=/path/to/target/root -i package1.deb package2.deb ...
必要に応じて、この--root
オプションを最初のコマンドで使用することもできます。dpkg
もちろん、十分な忍耐力とスキルが必要なオンライン修理が可能です。そのdpkg
コマンドが機能しない場合は、いつでもから直接パッケージの依存関係を探し、ファイルを介してファイルが配置されている/var/lib/dpkg/info
パッケージを検索してみることができます。/lib
.list
/var/lib/dpkg/info
何が得られるかについてのアイデアを提供するために、実行中のGentooシステムを復元した人のためのブログがあります。みんなパッケージが削除されました。興味深い内容であり、使用された(またはコメントで提案された)いくつかの技術がこの状況に適用されることがあります。http://fakeguido.blogspot.co.uk/2010/08/rescuing-hosed-system-using-only-bash.html
答え2
/lib
ほとんどの場合、作業ディレクトリがなければ、回復操作を実行する必要がある多くのアプリケーションがもう存在しないと思います。弾丸を噛んで再インストールします。
とにかく試してみたい場合は、RedHatベースのディストリビューションで行う方法は次のとおりです。
Redhatベースのディストリビューション(CentOS / Fedora / RHELなど)の場合は、RPMを使用してインストールされたパッケージの特定の側面を確認して変更できます。
すべてのパッケージを確認
% rpm -qVav
......... /usr/bin/rdesktop
......... /usr/share/doc/rdesktop-1.6.0
......... d /usr/share/doc/rdesktop-1.6.0/AUTHORS
......... d /usr/share/doc/rdesktop-1.6.0/COPYING
......... d /usr/share/doc/rdesktop-1.6.0/ChangeLog
......... d /usr/share/doc/rdesktop-1.6.0/HACKING
......... d /usr/share/doc/rdesktop-1.6.0/README
......... d /usr/share/doc/rdesktop-1.6.0/TODO
......... d /usr/share/doc/rdesktop-1.6.0/ipv6.txt
......... d /usr/share/doc/rdesktop-1.6.0/keymap-names.txt
......... d /usr/share/doc/rdesktop-1.6.0/keymapping.txt
...
...
openssh 確認
% rpm -qVv openssh
......... /etc/ssh
..?...... c /etc/ssh/moduli
......... /usr/bin/ssh-keygen
......... /usr/libexec/openssh
......... /usr/libexec/openssh/ssh-keysign
......... /usr/share/doc/openssh-5.5p1
......... d /usr/share/doc/openssh-5.5p1/CREDITS
......... d /usr/share/doc/openssh-5.5p1/ChangeLog
......... d /usr/share/doc/openssh-5.5p1/INSTALL
......... d /usr/share/doc/openssh-5.5p1/LICENCE
......... d /usr/share/doc/openssh-5.5p1/OVERVIEW
...
...
権限と所有権の編集
% rpm --setperms {packagename}
% rpm --setugids {packagename}
メモ:出力の詳細については、参考man rpm
資料を参照してください。-V|--verify
詳細については、この記事を参照してください。http://www.cyberciti.biz/tips/reset-rhel-centos-fedora-package-file-permission.html。
答え3
他の人が言ったように、これが私に起こった場合、おそらく再インストールします。ただし、回復しようとすると、まず/lib
ライブインストールのディレクトリを自分のシステムにコピーします。すべて/lib
を削除すると、最初は何も機能せず、パッケージマネージャも機能しないため、これらの手順が必要になる場合があります。次に、パッケージマネージャに移動して、リストされたファイルを含む/lib
すべてのパッケージを再インストールします(そのリストを取得する方法の詳細については、Graemeの回答を参照)。次に、最後のクリーンアップとして、/lib
ライブインストールからコピーされたファイルのうち存在しないファイルをすべて削除します。つまり、インストールされているパッケージのファイルと一致しません。
答え4
スピードの面では、再インストールがより速いと思います。システムの平和を選択する必要があるため、時間がかかるだけでなく、後で発生する可能性のある問題をデバッグするのに時間がかかる場合があります。システムを確実に安定した状態にすることができるので、マシンを再構築することをお勧めします。