yum ist kaputt, wenn ich die Aktualisierung von nss-softokn-freebl-3.36.0-5.el7_5.x86_64 unterbreche

485
rangercyh

Mein System ist Centos7.

[root@centos7 caiyiheng]# uname -a Linux centos7 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015  x86_64 x86_64 x86_64 GNU/Linux 

Mein System läuft in einer Virtualbox.

Wenn ich die cmd starte yum -y updateund drücke, ctrl+cwährend yum etwas aktualisiert. Danach stellte ich fest, dass ich Yum oder RPM nicht mehr verwenden kann. Wenn ich Yum oder RPM eingebe, wird Folgendes angezeigt:

[root@centos7 caiyiheng]# yum error: Failed to initialize NSS library error: no dbpath has been set error: cannot open Packages database in /% CRITICAL:yum.main:  Error: rpmdb open failed [root@centos7 caiyiheng]# rpm error: Failed to initialize NSS library 

die meisten yum oder rpm - Befehl kann nicht arbeiten, wie zum Beispiel yum install, yum clean allauch yum --help.

Ich überprüfe /var/log/yum.log, es zeigt sich als:

[root@centos7 caiyiheng]# tail -f /var/log/yum.log Sep 21 05:53:21 Installed: wget-1.14-15.el7_4.1.x86_64 Sep 21 05:53:21 Installed: lsof-4.87-5.el7.x86_64 Sep 21 05:53:22 Installed: net-tools-2.0-0.22.20131004git.el7.x86_64 Sep 26 17:28:11 Updated: libgcc-4.8.5-28.el7_5.1.x86_64 Sep 26 17:28:12 Installed: 1:grub2-common-2.02-0.65.el7.centos.2.noarch Sep 26 17:28:13 Installed: 1:grub2-pc-modules-2.02-0.65.el7.centos.2.noarch Sep 26 17:28:13 Installed: firewalld-filesystem-0.4.4.4-14.el7.noarch Sep 26 17:28:14 Updated: tzdata-2018e-3.el7.noarch Sep 26 17:28:14 Updated: ncurses-base-5.9-14.20130511.el7_4.noarch Sep 26 17:28:15 Updated: nss-softokn-freebl-3.36.0-5.el7_5.x86_64 

und ich suche einen ganzen tag in google, fand viele lösungen mag mein problem mögen, ich habe sie ausprobiert, aber nichts passiert.

sowie

Ich lade sogar das rpm https://centos.pkgs.org/7/centos-updates-x86_64/nss-softokn-freebl-3.36.0-5.el7_5.x86_64.rpm.html herunter

und rpm2cpio nss-softokn-freebl-3.36.0-5.el7_5.x86_64.rpm | cpio -idmvund kopiere ./usr/lib oder lib64 oder ./etc nach / usr / lib / usr / lib64 / etc, aber all das kann mein Problem nicht lösen.

Jemand erwähnte, dass yum ein Problem mit chroot hat ( https://bugs.centos.org/view.php?id=14767 ), aber es passt nicht zu meiner Situation. Ich habe es sogar versucht, aber nichts passiert.

0
Können Sie `rpm -qa | grep nss` überprüfen und Ihre Frage [bearbeiten], um die Ergebnisse zu veröffentlichen? user3788685 vor 5 Jahren 0
Nein, RPM -QA kann nicht ausgeführt werden, es wird derselbe Fehler angezeigt. Möglicherweise muss ich mein System neu installieren. rangercyh vor 5 Jahren 0
Haben Sie versucht, den Befehl `rpm2cpio` am Stammverzeichnis der Maschine auszuführen? Das würde automatisch die erforderlichen Dateien sichern. Versuchen Sie es vielleicht mit der _previous_-Version, die in `yum.log` angegeben ist Aaron D. Marasco vor 5 Jahren 0

1 Antwort auf die Frage

0
user2160372

Ich erlebe gerade das gleiche Problem. Ich habe Stunden gebraucht, um das Problem zu finden und es zu lösen. Mein Fall ist das Unterbrechen des yum updateund der letzte yum.logDatensatz ist genau wie Sie

Oct 22 19:04:36 Updated: 1:grub2-pc-modules-2.02-0.65.el7.centos.2.noarch Oct 22 19:04:36 Updated: tzdata-2018e-3.el7.noarch Oct 22 19:04:37 Updated: bash-4.2.46-30.el7.x86_64 Oct 22 19:04:37 Updated: nss-softokn-freebl-3.36.0-5.el7_5.x86_64 

Ich habe alle Lösungen gesucht und ausprobiert, aber kein Glück wie Sie. dann habe ich die rpm-quelle gelesen und in der gefundenrpm/rpmio/digest_nss.c

#if HAVE_NSS_INITCONTEXT PRUint32 flags = (NSS_INIT_READONLY|NSS_INIT_NOCERTDB| NSS_INIT_NOMODDB|NSS_INIT_FORCEOPEN| NSS_INIT_NOROOTINIT|NSS_INIT_OPTIMIZESPACE); _nss_ctx = NSS_InitContext(NULL, NULL, NULL, NULL, NULL, flags); if (_nss_ctx == NULL) { #else if (NSS_NoDB_Init(NULL) != SECSuccess) { #endif rpmlog(RPMLOG_ERR, _("Failed to initialize NSS library\n")); rc = -1; } else { _crypto_initialized = 1; } sigaction(SIGPIPE, &oact, NULL); }  /* Register one post-fork handler per process */ if (_new_process) { if (pthread_atfork(NULL, NULL, at_forkchild) != 0) { rpmlog(RPMLOG_WARNING, _("Failed to register fork handler: %m\n")); } _new_process = 0; } return rc; } 

dann habe ich versucht mit code wie folgt zu verifizieren

#include <stdio.h> #include <nss.h>  int main() { NSSInitContext * _nss_ctx = NULL; printf("hello world!\n"); PRUint32 flags = (NSS_INIT_READONLY|NSS_INIT_NOCERTDB| NSS_INIT_NOMODDB|NSS_INIT_FORCEOPEN| NSS_INIT_NOROOTINIT|NSS_INIT_OPTIMIZESPACE); _nss_ctx = NSS_InitContext(NULL, NULL, NULL, NULL, NULL, flags); if(_nss_ctx == NULL){ printf("Error"); }else{ printf("OK"); } return 0; } 

und habe das NSS_InitContextnicht referenziert. ~~ Es ist also klar, dass die lib-Version nicht übereinstimmt

wget beide nss-3.36.0-7.el7_5.x86_64.rpmund nspr-4.13.1-1.0.el7_3.x86_64.rpm(mein System ist centos7)

indem rpm2cpio *rpm | cpio -idmvdie Datei zu extrahieren, und kopieren Sie in / usr

Läuft rpmnoch den Fehler

version `NSSUTIL_3.31' not found (required by /lib64/libnss3.so) 

wget das nss-util-3.36.0-1.el7_5.x86_64.rpm und führt noch mehr aus rpm2cpio and copy

dann wird alles ok ~ hoffe das kann dir helfen

Trotzdem habe ich meinen centos7 bereits neu installiert, vielleicht probiere ich das nächste Mal Ihre Lösung. rangercyh vor 5 Jahren 0