прервано yum, когда я прерываю обновление nss-softokn-freebl-3.36.0-5.el7_5.x86_64

475
rangercyh

У меня система 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 

Моя система работает в виртуальной коробке.

Когда я запускаю cmd yum -y updateи нажимаю, ctrl+cпока yum что-то обновляет. после этого я обнаружил, что больше не могу использовать yum или rpm. когда я ввожу yum или rpm, он отображается как:

[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 

наиболее ни или команда оборотов не могут работать, например yum install, yum clean allдаже yum --help.

Я проверяю /var/log/yum.log, это показывают как:

[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 

и я ищу в Google целый день, нашел много решений, которые могут понравиться моей проблеме, я попробовал их, но ничего не произошло.

такие как

Я даже загружаю rpm https://centos.pkgs.org/7/centos-updates-x86_64/nss-softokn-freebl-3.36.0-5.el7_5.x86_64.rpm.html

и rpm2cpio nss-softokn-freebl-3.36.0-5.el7_5.x86_64.rpm | cpio -idmvскопируйте ./usr/lib или lib64 или ./etc в / usr / lib / usr / lib64 / etc, но все это не может решить мою проблему.

Кто-то упомянул, что у yum есть проблема с chroot ( https://bugs.centos.org/view.php?id=14767 ), но это не соответствует моей ситуации, я даже пытался это сделать, но ничего не произошло.

0
Можете ли вы проверить `rpm -qa | grep nss` и [отредактировать] свой вопрос, чтобы опубликовать результаты, пожалуйста (если это позволит вам запустить это) user3788685 6 лет назад 0
нет, не могу запустить rpm -qa, показать ту же ошибку, возможно, мне нужно переустановить систему. rangercyh 6 лет назад 0
Вы пробовали запустить эту команду `rpm2cpio` в корне машины? Это автоматически сбросит необходимые файлы. Может быть, попробуйте это с _previous_ версией, отмеченной в `yum.log` Aaron D. Marasco 6 лет назад 0

1 ответ на вопрос

0
user2160372

Я просто испытываю ту же проблему. Мне потребовались часы, чтобы найти проблему и решить ее. мой случай прервать yum updateи последняя yum.logзапись так же, как вы

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 

Я искал и пробовал все решения, но не так, как вы. Затем я прочитал источник RPM и нашел вrpm/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; } 

Затем я попытался с кодом, как это, чтобы проверить

#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; } 

и получил NSS_InitContextэто не ссылка. ~~ так ясно, что версия lib не совпадает

Wget nss-3.36.0-7.el7_5.x86_64.rpmи nspr-4.13.1-1.0.el7_3.x86_64.rpm(моя система - centos7)

использовать rpm2cpio *rpm | cpio -idmvдля извлечения файла и копирования в / usr

запустить rpmвсе еще получил ошибку

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

wget nss-util-3.36.0-1.el7_5.x86_64.rpm и сделать больше rpm2cpio and copy

тогда все ок ~ надеюсь, это поможет вам

спасибо все равно, хотя я уже переустанавливал свой centos7, может в следующий раз попробую ваше решение. rangercyh 6 лет назад 0

Похожие вопросы