Portál AbcLinuxu, 29. prosince 2025 19:48
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
). Ale tohle "řešení" bych viděl až jako poslední vzhledem k tomu, že mi ten stroj teď dočasně slouží jako server pro pár lidí.
Jo a zjistil jsem, že na FC6 už se zasekne jen yum, aspoň rpm -q už funguje, ale to mi je zase k ničemu
# 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
)
PS: Ne, netrpím samomluvou.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.