質問 :特定のシステム関連のファイルまたはディレクトリが誤って削除/削除されました。それらを回復する方法は?
この例では、次のシステム ファイルがありません:
– /etc/nsswitch.conf
– /lib64/libc.so.6
削除されたシステム ファイル/ディレクトリを特定する
次の手順では、RPM データベース (rpmdb) を使用して、欠落しているファイルとディレクトリを特定します。したがって、この手順は、RPM パッケージを介してインストールされたファイル/ディレクトリにのみ適用されます。
以下を実行して、誤って削除されたファイル/ディレクトリを特定します:
# for i in `rpm -qa | sort` do echo "### $i: 'rpm -Vv $i' >> 'hostname'-'date %+F-%T'-rpm-Vv.txt done
上記のコマンドは、現在インストールされているパッケージ セットに基づいて、すべてのファイル/ディレクトリのインベントリを実行します。結果ファイルを確認すると、次のような出力が生成されます:
# cat localhost-2020-12-11-11:45:27-rpm-Vv.txt ### glibc-2.12-1.212.0.3.el6_10.3.x86_64: ......... c /etc/gai.conf ......... c /etc/ld.so.conf ......... /etc/ld.so.conf.d missing c /etc/nsswitch.conf ......... c /etc/rpc ......... /lib64/ld-2.12.so ......... /lib64/ld-linux-x86-64.so.2 ......... /lib64/libBrokenLocale-2.12.so ......... /lib64/libBrokenLocale.so.1 ......... /lib64/libSegFault.so ......... /lib64/libanl-2.12.so ......... /lib64/libanl.so.1 ......... /lib64/libc-2.12.so missing /lib64/libc.so.6 ......... /lib64/libcidn-2.12.so ......... /lib64/libcidn.so.1 ......... /lib64/libcrypt-2.12.so ......... /lib64/libcrypt.so.1 ......... /lib64/libdl-2.12.so ......... /lib64/libdl.so.2 ......... /lib64/libm-2.12.so ......... /lib64/libm.so.6 ... ......... /usr/sbin/iconvconfig.x86_64 ......... /usr/share/doc/glibc-2.12 ......... d /usr/share/doc/glibc-2.12/BUGS ......... d /usr/share/doc/glibc-2.12/CONFORMANCE ......... d /usr/share/doc/glibc-2.12/COPYING ......... d /usr/share/doc/glibc-2.12/COPYING.LIB ......... d /usr/share/doc/glibc-2.12/FAQ ......... d /usr/share/doc/glibc-2.12/INSTALL ......... d /usr/share/doc/glibc-2.12/LICENSES ......... d /usr/share/doc/glibc-2.12/NEWS ......... d /usr/share/doc/glibc-2.12/NOTES ......... d /usr/share/doc/glibc-2.12/PROJECTS ......... d /usr/share/doc/glibc-2.12/README ......... d /usr/share/doc/glibc-2.12/README.hesiod ......... d /usr/share/doc/glibc-2.12/README.libm ......... /var/cache/ldconfig
上記の出力から、パッケージ glibc-2.12-1.212.0.3.el6_10.3.x86_64 からインストールされたファイル /lib64/libc.so.6 がシステムにないことが明らかです。ログ全体を確認して、欠落しているすべてのファイル/ディレクトリとそれらの元のパッケージを特定します。 rpm 検証ファイルの属性の定義については、rpm のマニュアル ページを参照してください。
# man rpm
見つからないファイル/ディレクトリを再インストール/復元
ファイル/ディレクトリが欠落しているパッケージのリストを特定したら、それらの正確なパッケージ バージョンを影響を受けるシステムに再インストールします。例:
# yum reinstall glibc-2.12-1.212.0.3.el6_10.3.x86_64
完了したら、手順 1 を再度実行して、以前に削除したファイル/ディレクトリが失われていないことを確認します。例:
### glibc-2.12-1.212.0.3.el6_10.3.x86_64: ......... c /etc/gai.conf ......... c /etc/ld.so.conf ......... /etc/ld.so.conf.d ......... c /etc/nsswitch.conf ......... c /etc/rpc ......... /lib64/ld-2.12.so ......... /lib64/ld-linux-x86-64.so.2 ......... /lib64/libBrokenLocale-2.12.so ......... /lib64/libBrokenLocale.so.1 ......... /lib64/libSegFault.so ......... /lib64/libanl-2.12.so ......... /lib64/libanl.so.1 ......... /lib64/libc-2.12.so ......... /lib64/libc.so.6 ......... /lib64/libcidn-2.12.so ......... /lib64/libcidn.so.1 ......... /lib64/libcrypt-2.12.so ......... /lib64/libcrypt.so.1 ......... /lib64/libdl-2.12.so ......... /lib64/libdl.so.2 ......... /lib64/libm-2.12.so ......... /lib64/libm.so.6 ... ......... /usr/sbin/iconvconfig.x86_64 ......... /usr/share/doc/glibc-2.12 ......... d /usr/share/doc/glibc-2.12/BUGS ......... d /usr/share/doc/glibc-2.12/CONFORMANCE ......... d /usr/share/doc/glibc-2.12/COPYING ......... d /usr/share/doc/glibc-2.12/COPYING.LIB ......... d /usr/share/doc/glibc-2.12/FAQ ......... d /usr/share/doc/glibc-2.12/INSTALL ......... d /usr/share/doc/glibc-2.12/LICENSES ......... d /usr/share/doc/glibc-2.12/NEWS ......... d /usr/share/doc/glibc-2.12/NOTES ......... d /usr/share/doc/glibc-2.12/PROJECTS ......... d /usr/share/doc/glibc-2.12/README ......... d /usr/share/doc/glibc-2.12/README.hesiod ......... d /usr/share/doc/glibc-2.12/README.libm ......... /var/cache/ldconfig ...
Rpm:共有ライブラリのロード中にエラーが発生しました:Libz.so.1:共有オブジェクト ファイルを開けません:そのようなファイルはありません
代替 CentOS/RHEL 7 として静的ポートで実行するように NFS サービス (サーバー側) を構成する方法