Portál AbcLinuxu, 10. srpna 2025 14:26
yum
a rpm
na Fedora Core 5 a teď i na 6.
Problém: při jakémkoliv použití rpm nebo yum se program zasekne. Přikládám výpis konce strace a adresáře /var/lib/rpm. Pomůže jediné zabití devítkou.
Díky za jakékoliv rady. Případně dotazy zodpovím.
Výpis:
stat64("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/var/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/var/lib/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat64("/var/lib/rpm", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 access("/var/lib/rpm", W_OK) = 0 access("/var/lib/rpm/__db.001", F_OK) = 0 access("/var/lib/rpm/Packages", F_OK) = 0 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US.utf8/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en.UTF-8/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en.utf8/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en/LC_MESSAGES/messages.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/proc/stat", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb79bc000 read(3, "cpu 833795 57319 262930 7495076"..., 4096) = 715 read(3, "", 4096) = 0 close(3) = 0 munmap(0xb79bc000, 4096) = 0 stat64("/var/lib/rpm/DB_CONFIG", 0xbfe92c4c) = -1 ENOENT (No such file or directory) open("/var/lib/rpm/DB_CONFIG", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) stat64("/var/lib/rpm/__db.001", {st_mode=S_IFREG|0644, st_size=24576, ...}) = 0 open("/var/lib/rpm/__db.001", O_RDWR|O_LARGEFILE) = 3 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 fstat64(3, {st_mode=S_IFREG|0644, st_size=24576, ...}) = 0 close(3) = 0 open("/var/lib/rpm/__db.001", O_RDWR|O_LARGEFILE) = 3 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 mmap2(NULL, 24576, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0xb79b7000 close(3) = 0 futex(0xb79b7000, FUTEX_WAIT, 2, NULL ^^^ TADY SE TO ZASEKNE [root@m252d ~]# ll /var/lib/rpm/ total 65744 -rw-r--r-- 1 rpm rpm 10498048 Oct 24 01:20 Basenames -rw-r--r-- 1 rpm rpm 12288 Oct 23 22:34 Conflictname -rw-r--r-- 1 root root 0 Oct 23 22:33 __db.000 -rw-r--r-- 1 root root 24576 Oct 23 22:32 __db.001 -rw-r--r-- 1 root root 1318912 Oct 23 22:32 __db.002 -rw-r--r-- 1 root root 450560 Oct 23 22:32 __db.003 -rw-r--r-- 1 rpm rpm 1937408 Oct 24 01:20 Dirnames -rw-r--r-- 1 rpm rpm 10498048 Oct 24 01:20 Filemd5s -rw-r--r-- 1 rpm rpm 28672 Oct 24 01:20 Group -rw-r--r-- 1 rpm rpm 28672 Oct 24 01:20 Installtid -rw-r--r-- 1 rpm rpm 81920 Oct 24 01:20 Name -rw-r--r-- 1 rpm rpm 45797376 Oct 24 01:20 Packages -rw-r--r-- 1 rpm rpm 643072 Oct 24 01:20 Providename -rw-r--r-- 1 rpm rpm 122880 Oct 24 01:20 Provideversion -rw-r--r-- 1 rpm rpm 12288 Sep 30 01:18 Pubkeys -rw-r--r-- 1 rpm rpm 450560 Oct 24 01:20 Requirename -rw-r--r-- 1 rpm rpm 274432 Oct 24 01:20 Requireversion -rw-r--r-- 1 rpm rpm 155648 Oct 24 01:20 Sha1header -rw-r--r-- 1 rpm rpm 81920 Oct 24 01:20 Sigmd5 -rw-r--r-- 1 rpm rpm 12288 Oct 17 19:46 Triggername
# yum clean all Loading "installonlyn" plugina konec. Přepínač
--noplugins
taky nepomůže. Opět se to zasekne na stejném místě.
Zkoušel jsem ještě rpm -rebuilddb
, co jsem našel v manu, ale zase to skončí na futex(0xb7d32b70, FUTEX_WAIT, 2, NULL
rpm --rebuilddb
, tak se mi v /var/lib
objeví adresář rpmrebuilddb.PID
s obsahem:
# ll rpmrebuilddb.2709/ total 40 -rw-r--r-- 1 root root 24576 Oct 29 12:40 __db.001 -rw-r--r-- 1 root root 1318912 Oct 29 12:40 __db.002 -rw-r--r-- 1 root root 12288 Oct 29 12:40 PackagesTakže by možná mohlo být něco s některým ze souborů
__db.*
, když se tam nedostanou všechny 4 z původního adresáře /var/lib/rpm
. Ale netuším co a jak to napravit. lsof /var/lib/rpm/*
zádný proces, který by je měl otevřený neukáže.
The dead rpm you killed left behind locks in its databases.
rm -f /var/lib/rpm/__db*
and it should work again.
No a pak rpm --rebuilddb
(nevím, jestli to je nutné, ale neuškodilo to
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.