Frage :Bestimmte systembezogene Dateien oder Verzeichnisse wurden fälschlicherweise entfernt/gelöscht. Wie kann man sie wiederherstellen?
In diesem Fall fehlen die folgenden Systemdateien:
– /etc/nsswitch.conf
– /lib64/libc.so.6
Identifizieren Sie, welche Systemdateien/Verzeichnisse entfernt wurden
Der folgende Schritt stützt sich auf die RPM-Datenbank (rpmdb), um fehlende Dateien und Verzeichnisse zu identifizieren. Daher ist das Verfahren nur für Dateien/Verzeichnisse anwendbar, die über ein RPM-Paket installiert werden.
Gehen Sie wie folgt vor, um festzustellen, welche Dateien/Verzeichnisse fälschlicherweise entfernt wurden:
# for i in `rpm -qa | sort` do echo "### $i: 'rpm -Vv $i' >> 'hostname'-'date %+F-%T'-rpm-Vv.txt done
Der obige Befehl führt eine Bestandsaufnahme aller Dateien/Verzeichnisse basierend auf dem aktuell installierten Paketsatz durch. Die Überprüfung der resultierenden Datei erzeugt eine Ausgabe wie die folgende:
# 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
Aus der obigen Ausgabe geht hervor, dass die aus dem Paket glibc-2.12-1.212.0.3.el6_10.3.x86_64 installierte Datei /lib64/libc.so.6 im System fehlt. Überprüfen Sie das gesamte Protokoll, um alle fehlenden Dateien/Verzeichnisse und ihre Ursprungspakete zu identifizieren. Siehe RPM-Manpage für Definitionen von RPM-Validierungsdateiattributen.
# man rpm
Die fehlenden Dateien/Verzeichnisse neu installieren/wiederherstellen
Nachdem Sie die Liste der Pakete identifiziert haben, für die Dateien/Verzeichnisse fehlen, installieren Sie genau diese Paketversionen auf dem betroffenen System neu. Zum Beispiel:
# yum reinstall glibc-2.12-1.212.0.3.el6_10.3.x86_64
Wenn Sie fertig sind, führen Sie Schritt 1 erneut aus, um zu bestätigen, dass die zuvor entfernten Dateien/Verzeichnisse nicht mehr fehlen, z. B.:
### 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 ...