| Linux/UNIX Linuxverfechter finden hier Weggefährten. |
Diskussion: "could not open RPM database" und .rpmmacros im Forum Linux/UNIX, in der Kategorie Operating Systems; Anzeige Ich hab hier einen Benutzer, der eine eigene .rpmmacros-Datei in seinem $HOME liegen hat. Diese hat folgenden Inhalt: Code: ...
![]() |
| | #1 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | "could not open RPM database" und .rpmmacros Anzeige Ich hab hier einen Benutzer, der eine eigene .rpmmacros-Datei in seinem $HOME liegen hat. Diese hat folgenden Inhalt: Code: %_var /home/user/.apt/.apt/var
%_cache_dbpath /home/user/.apt/.apt/var/spool/up2date/cache
%_repackage_dir /home/user/.apt/.apt/var/spool/repackage
%_localstatedir /home/user/.apt/.apt/var
%_dbpath /home/user/.apt/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000
%_topdir /home/user/.apt/rpm
%_specdir /home/user/.apt/rpm/SPECS
%_tmppath /home/user/.apt/tmp
%_tmpdir /home/user/.apt/tmp
%_rpm_root /home/user/.apt/rpm/
%_rpmdir %{_topdir}/RPMS/
%_binary_payload w9.gzdio Code: error: cannot open Packages database in /var/lib/rpm E: could not open RPM database Edit: Ein Anzeigen der Config zeigt auch keinen Hinweis darauf, dass /var/lib/rpm noch genutzt wird. Code: rpm --macros ~/.rpmmacros --showrc
ARCHITECTURE AND OS:
build arch : x86_64
compatible build archs: x86_64 noarch
build os : Linux
compatible build os's : Linux
install arch : x86_64
install os : Linux
compatible archs : x86_64 amd64 em64t athlon noarch i686 i586 i486 i386 fat
compatible os's : Linux
RPMRC VALUES:
optflags : -O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables
Features supported by rpmlib:
rpmlib(BuiltinLuaScripts) = 4.2.2-1
rpmlib(CompressedFileNames) = 3.0.4-1
rpmlib(ConcurrentAccess) = 4.1-1
rpmlib(ExplicitPackageProvide) = 4.0-1
rpmlib(FileDigests) = 4.6.0-1
rpmlib(HeaderLoadSortsTags) = 4.0.1-1
rpmlib(PartialHardlinkSets) = 4.0.4-1
rpmlib(PayloadFilesHavePrefix) = 4.0-1
rpmlib(PayloadIsBzip2) = 3.0.5-1
rpmlib(PayloadIsLzma) = 4.4.2-1
rpmlib(PayloadIsXz) = 5.2-1
rpmlib(ScriptletInterpreterArgs) = 4.0.3-1
rpmlib(VersionedDependencies) = 3.0.3-1
========================
-14: _binary_payload w9.gzdio
-14: _cache_dbpath /home/user/.apt/.apt/var/spool/up2date/cache
-14: _dbpath /home/user/.apt/var/lib/rpm
-14: _localstatedir /home/user/.apt/.apt/var
-14: _repackage_dir /home/user/.apt/.apt/var/spool/repackage
-14: _rpm_root /home/user/.apt/rpm/
-14: _rpmdir %{_topdir}/RPMS/
-14: _rpmlock_path %{_dbpath}/__db.000
-14: _specdir /home/user/.apt/rpm/SPECS
-11: _target x86_64-linux
-11= _target_cpu x86_64
-11= _target_os linux
-14: _tmpdir /home/user/.apt/tmp
-14: _tmppath /home/user/.apt/tmp
-14: _topdir /home/user/.apt/rpm
-14: _var /home/user/.apt/.apt/var
-11: optflags -O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables
======================== active 17 empty 0
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ Geändert von bitmuncher (05.11.10 um 14:16 Uhr) Grund: %_dbpath in die .rpmmacros hinzugefügt |
| | |
| | #2 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Unter welchem User führst du das "apt-get update" aus? Unter dem User, in dessen $home das ".rpmmacros" liegt? Ich musste meinem User nämlich erst einmal Schreibrechte auf "/var/lib/apt/lists/lock" geben damit das funktioniert. Wenn du das nicht unter diesem User ausführst, dann ".rpmmacros" nach /etc/rpm/macros kopieren und nochmal versuchen. Code: mime@openvas-qa1:~> strace -e trace=open apt-get update
[...]
open("/etc/rpm/macros.gconf2", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.jpackage", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.kde4", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.kernel-source", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.mkinitrd", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.python", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.ruby", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros.tcl", O_RDONLY|O_LARGEFILE) = 5
open("/etc/rpm/macros", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/rpm/i586-linux/macros", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/mime/.rpmmacros", O_RDONLY|O_LARGEFILE) = 5
[...]
open("/home/mime/.apt/.apt/var/lib/rpm/DB_CONFIG", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/mime/.apt/.apt/var/lib/rpm/Packages", O_RDONLY|O_LARGEFILE) = 5
open("/home/mime/.apt/.apt/var/lib/rpm/Packages", O_RDONLY|O_LARGEFILE) = 5 Im zweifel das "apt-get update" mal mit strace (wie oben zu sehen) laufen lassen. Vielleicht siehst du dann woran es bei dir liegt. Getestet mit OpenSuSE 11.1 HTH Micha
__________________ http://www.openvas.org | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Das apt-get wird mit dem User ausgeführt, dem auch die .rpmmacros gehört. Diese liegt in seinem Home. Da das Apt auch User-spezifisch ist, das in $HOME/.apt liegt, sollte eine Anpassung von globalen Pfaden nicht notwendig sein. Damit das korrekte Apt verwendet wird hat der User folgende Daten in seiner .bashrc Code: # APT Config, libs and paths APT_CONFIG=$HOME/.apt/etc/apt/apt.conf.d/apt.conf #PATH=$PATH:$HOME/.apt/bin PATH=$HOME/.apt/bin:$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.apt/lib export PATH LD_LIBRARY_PATH APT_CONFIG alias apt-get="apt-get -c $APT_CONFIG" alias apt-cache="apt-cache -c $APT_CONFIG" alias apt-config="apt-config -c $APT_CONFIG"
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #4 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Micha
__________________ http://www.openvas.org | |
| | |
| | #5 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Ich ging auch davon aus, dass strace keinen Einfluss auf die Runtime hat. Das scheint aber nicht zu stimmen, denn apt-get ohne strace findet seine SSH-Module und mit strace findet es diese nicht. Komischerweise wird laut strace gar keine rpmmacros-Datei ausgewertet, was auch nicht stimmen kann, da wenigstens die globale rpmmacros-Datei ausgewertet werden muss, da rpm sonst nicht weiss wo es seine RPM-Datenbank suchen soll. Evtl. liegt es aber auch daran, dass das SSH-Transport-Modul nicht gefunden wird.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #6 (permalink) | |||
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Zitat:
Zitat:
Nimm mal den Schalter "-f" bei strace dazu. Wenn du magst, kannst du den Output von Code: strace -o /tmp/apt.trace -f apt-get update Micha
__________________ http://www.openvas.org | |||
| | |
| | #7 (permalink) | |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Ich weiss es daher: Code: user@meinserver:~> apt-get update Get:1 ssh://user@meinserver.de release repomd.xml [1950B] Fetched 1950B in 0s (2132B/s) Hit ssh://user@meinserver.de release/ primary.xml Hit ssh://user@meinserver.de release/ filelists.xml Damit kann die Meldung, die in Verbindung mit strace kommt nicht korrekt sein: Code: E: The method driver /usr/lib64/apt/methods/ssh could not be found. Dass keine Macros-Datei ausgewertet wird, zeigt aber auch der folgende Output: Code: user@meinserver:~> strace -o strace.out -f apt-get -c .apt/etc/apt/apt.conf.d/apt.conf update Get:1 ssh://user@meinserver.de release repomd.xml [1950B] Fetched 1950B in 1s (1792B/s) Hit ssh://user@meinserver.de release/ primary.xml Hit ssh://user@meinserver.de release/ filelists.xml error: cannot open Packages database in /var/lib/rpm E: could not open RPM database user@meinserver:~> grep macro strace.out user@meinserver:~> Zitat:
Kurzum: Ich glaube nicht, dass strace mir grossartig weiter hilft solange es behauptet, dass keine rpmmacros-Datei ausgewertet wird. Das kann jedenfalls nicht stimmen, sonst wäre der Pfad zur RPM-DB nicht ermittelbar. Seltsam ist das alles irgendwie...
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ | |
| | |
| | #8 (permalink) | |||
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Code: mime@openvas-qa1:~> strace -f apt-get update
18592 execve("/home/mime/.apt/bin/apt-get", ["apt-get", "update"], [/* 58 vars */]) = 0
[...]
18592 stat64("/home/mime/.apt/etc/apt/apt.conf.d/apt.conf", {st_mode=S_IFREG|0644, st_size=390, ...}) = 0 Zitat:
Code: openvas-qa1:~ # strings /usr/lib/librpm-4.4.so | grep /var
/var
%{?_tmppath:%{_tmppath}}%{!?_tmppath:/var/tmp}
/var
/var/tmp
/var/lib/rpm Zitat:
Micha
__________________ http://www.openvas.org Geändert von mime (05.11.10 um 19:25 Uhr) | |||
| | |
| | #9 (permalink) | |||
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Zitat:
Code: user@meinserver:~> alias | grep apt alias apt-cache='apt-cache -c /home/user/.apt/etc/apt/apt.conf.d/apt.conf' alias apt-config='apt-config -c /home/user/.apt/etc/apt/apt.conf.d/apt.conf' alias apt-get='apt-get -c /home/user/.apt/etc/apt/apt.conf.d/apt.conf' Zitat:
Zitat:
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ | |||
| | |
| | #10 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Code: mime@linux-ivxr:~> cat .rpmmacros %_hackerboard %_var /home/mime/.apt/.apt/var [...] Code: mime@linux-ivxr:~> ls -l .apt/lib/librpm* -rwxr-xr-x 1 mime users 407204 5. Nov 23:05 .apt/lib/librpm-4.4.so -rwxr-xr-x 1 mime users 1073688 5. Nov 23:02 .apt/lib/librpmdb-4.4.so -rwxr-xr-x 1 mime users 776752 5. Nov 23:02 .apt/lib/librpmio-4.4.s mime@linux-ivxr:~> strace -o /tmp/ibrpm-4.4.trace -e trace=open apt-get update [...] error: cannot open Packages database in /var/lib/rpm E: konnte RPM-Datenbank nicht öffnen mime@linux-ivxr:~> grep macro /tmp/ibrpm-4.4.trace mime@linux-ivxr:~> Code: mime@linux-ivxr:~> ls -l .apt/lib/librpm* lrwxrwxrwx 1 mime users 20 5. Nov 23:10 .apt/lib/librpm-4.4.so -> /usr/lib/librpm.so.0 -rwxr-xr-x 1 mime users 1073688 5. Nov 23:02 .apt/lib/librpmdb-4.4.so -rwxr-xr-x 1 mime users 776752 5. Nov 23:02 .apt/lib/librpmio-4.4.so mime@linux-ivxr:~> strace -o /tmp/ibrpm-so.0.trace -e trace=open apt-get update error: Macro %_hackerboard has empty body *** glibc detected *** apt-get: realloc(): invalid pointer: 0x08087d64 *** Aber wie du siehst... Code: mime@linux-ivxr:~> grep macro /tmp/ibrpm-so.0.trace
open("/usr/lib/rpm/macros", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/rpm/platform/pentium4-linux/macros", O_RDONLY|O_LARGEFILE) = 4
open("/usr/lib/rpm/suse/macros", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.gconf2", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.jpackage", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.kde4", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.mkinitrd", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.perl", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.python", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.tcl", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros.update-desktop-files", O_RDONLY|O_LARGEFILE) = 4
open("/etc/rpm/macros", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/rpm/pentium4-linux/macros", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/mime/.rpmmacros", O_RDONLY|O_LARGEFILE) = 4 Also strace hat recht. Mit der librpm-4.4.so wird unter einem SuSE 11.2 die ~/.rpmmacros ignoriert. Jetzt stellt sich nur noch die Frage nach dem warum. Mache mal ein 'strings librpm-4.4.so | grep macro'' und vergleiche das mit "strings /usr/lib/librpm.so.0 | grep macro". Da scheint sich was geändert zu haben. Du hast übrigens recht, aliase werden tatsächlich ignoriert. Micha
__________________ http://www.openvas.org | |
| | |
| | #11 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Danke. Das ist schonmal ein Ansatz. Ich werde mich damit am Montag weiter auseinandersetzen. Jetzt ist erstmal Feierabend und im TV läuft Jarhead. Edit: Ich hab übrigens einen Verdacht... ich denke, dass das von OpenSuSE 11.2 mitgelieferte RPM nicht mehr mit librpm-4.4 zusammenarbeitet, da sich ja die Struktur der librpm komplett geändert hat. Vermutlich muss ich also auch noch für den User ein eigenes RPM installieren, das explizit gegen die librpm-4.4 gelinkt wird. Viele Funktionen aus der aktuellen librpm gab's nicht in der 4.4 und umgekehrt genauso. Die librpm wurde ja komplett überarbeitet, wie ich feststellen musste, also ich apt-rpm für SuSE 11.3. umbauen wollte.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #12 (permalink) | ||
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Zitat:
Code: echo "macrofiles: ~/.rpmmacros" >> ~/.rpmrc HTH Micha
__________________ http://www.openvas.org | ||
| | |
| | #13 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Also deine Lösung funktioniert soweit. Leider bringt mich das zum nächsten Problem... Code: error: cannot open Packages database in /home/user/.apt/.apt/var/lib/rpm
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #14 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
~/.rpmrc Code: macrofiles: ~/.rpmmacros:/usr/lib/rpm/macros:/usr/lib/rpm/platform/pentium4-linux/macros:/usr/lib/rpm/suse/macros:/etc/rpm/macros.gconf2:/etc/rpm/macros.jpackage:etc/rpm/macros.kde4:/etc/rpm/macros.mkinitrd:/etc/rpm/macros.perl:/etc/rpm/macros.python:/etc/rpm/macros.tcl:/etc/rpm/macros.update-desktop-files:/etc/rpm/macros:/etc/rpm/pentium4-linux/macros Code: pt-get: symbol lookup error: /home/mime/.apt/lib/libapt-pkg-libc6.9-6.so.2: undefined symbol: rpmCheckRpmlibProvides HTH Micha
__________________ http://www.openvas.org | |
| | |
| | #15 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Fast... aber du hast mich mal wieder auf die richtige Spur gesetzt. Ich musste die globale /usr/lib/rpm/macros nach ~/.rpmmacros kopieren und dort meine userspezifischen Variablen entsprechen anpassen. Wenn ich den Macrofiles-Eintrag erweitert habe, hatte der User plötzlich die Paketliste für's System. Er soll aber ja nur seine eigene Paketliste sehen. Speziell %_dbpath und die ganzen Build-spezifischen Variablen mussten angepasst werden. Vielen Dank!
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |