Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe von rpm -qp --requires um Sollpfad der Bibliotheken erweitern
Hallo zusammen,
kurz zu meiner Person:
Ich bin 20, studiere Elektrotechnik und beschäftige mich auch privat viel mit Elektronik und sonstigen technischen Spielereien. Seit mittlerweile über 5 Jahren nutze ich ausschließlich Linux, anfangs Ubuntu, mitlerweile aber Fedora auf allen meinen System. Bei meinen bisherigen Problemen konnte ich mir die Lösung immer mehr oder weniger leicht ergooglen, aber diesmal komme ich einfach nicht weiter, weswegen ich mir hier auch angemeldet habe.
Mein derźeitiges System ist Fedora 14 64bit.
Vor 3 Tagen bin ich auf FreeCAD (http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Main_Page) gestoßen und wollte dieses Programm gerne mal ausprobieren. Ich habe mir also das .deb heruntergeladen und mittels Alien in ein .rpm umgewandelt, welches ich nach Auflösung von 2-3 Abhängigkeiten auch problemlos installieren konnte.
FreeCAD ließ sich nach der Installation jedoch nicht starten. Ein Blick ins Terminal verriet mir, dass immer noch mehrere Abhängigkeiten unerfüllt waren.
Mein aktuelles Problem stellt nun die Bibliothek libzipios.so.0 dar. Da ich das zugehörige Packet in den Packetquellen leider nicht finden konnte, habe ich versucht diese für Mandriva gedachte Version (http://pkgs.org/mandriva-2011/mandriva-contrib-backports-i586/libzipios0-0.1.5.9+cvs.2007.04.28-1-mdv2011.0.i586.rpm.html#download) zu installieren. Das scheitert jedoch wiederum an einer Abhängigkeit von libstdc++.so.6. Das Seltsame dabei ist aber, dass diese Datei bereits in /usr/lib existiert und das zugehörige Packet sowohl in der 32bit als auch in der 64bit Version installiert ist. Bei bisherigen Problemen dieser Art musste die Bibliothek einfach noch in einen anderen Ordner verlinkt werden, wohin genau, ließ sich meist in diversen Foren oder Wikis nachlesen.
Wie aber kann ich den Pfad selbst herausfinden, in dem sich die Datei befinden sollte? rpm -qp --requires <PFAD_ZUM_RPM> spuckt leider nur die Namen der abhängigen Dateien aus, nicht aber deren Sollpfade und auch -v (verbose) hilft mir nicht weiter.
Ich hoffe einfach mal, dass ihr mir bei diesem Problem helfen könnt.
Gruß, Felix
Wieso installierst du freecad nicht aus den repos?
Hi,
ich hatte es nicht aus den Repos installiert, weil ich es dort nicht enthalten ist. Ein FreeCAD-Repo, das ich einbinden könnte, habe ich nicht gefunden.
Was ich in der Zwischenzeit gefunden habe, ist dieses, offenbar Fedora-kompatible rpm von FreeCAD unter http://packman.links2linux.de/package/FreeCAD .
Leider macht das die Sache nicht einfacher, eher im Gegenteil.
Gruß, Felix
Wie aber kann ich den Pfad selbst herausfinden, in dem sich die Datei befinden sollte? rpm -qp --requires <PFAD_ZUM_RPM> spuckt leider nur die Namen der abhängigen Dateien aus, nicht aber deren Sollpfade und auch -v (verbose) hilft mir nicht weiter.
Versuch mal
whereis freecad
ldd /pfad/zu/freecad
oder du musst "strace" verwenden.
Hi,
Danke für deine Antwort!
ldd kann ich zwar auf freecad anwenden, jedoch hilft mir das bei meinem Problem nicht weiter. Die unerfüllten Abhängigkeiten von freecad kenne ich bereits, jedoch muss ich diese teilweise manuell mit Bibliotheken von rpmseek etc auflösen.
Und genau hier liegt nun das eigentliche Problem, wegen dem ich diesen Thread eröffnet habe. Eine dieser, noch zu installierenden Bibliotheken hat ihrerseits ein Abhängigkeit, wegen der sie sich nicht installieren lässt. Die angeblich fehlende Datei existiert jedoch bereits auf meinem Rechner, nur wahrscheinlich am falschen Ort.
Ich muss also herausfinden, an welchen Ort ich die abhängige Datei von einem, noch nicht installierten rpm verlinken muss, welches sich nicht in den Paketquellen befindet.
Hier kann mir ldd nicht weiterhelfen, da man ldd nur auf installierte Programme anwenden kann und "rpm -qp --requires" hilft mir nicht weiter, weil es mir zwar die Abhängigkeiten anzeigt aber nicht die Pfade dazu.
Ich hoffe, ich konnte mein Problem einigermaßen verständlich erklären.
Gruß, Felix
Eine dieser, noch zu installierenden Bibliotheken hat ihrerseits ein Abhängigkeit, wegen der sie sich nicht installieren lässt. Die angeblich fehlende Datei existiert jedoch bereits auf meinem Rechner, nur wahrscheinlich am falschen Ort.
Ich muss also herausfinden, an welchen Ort ich die abhängige Datei von einem, noch nicht installierten rpm verlinken muss, welches sich nicht in den Paketquellen befindet.
Hier kann mir ldd nicht weiterhelfen, da man ldd nur auf installierte Programme anwenden kann und "rpm -qp --requires" hilft mir nicht weiter, weil es mir zwar die Abhängigkeiten anzeigt aber nicht die Pfade dazu.
Die Pfade werden auch eher nicht im RPM festgelegt, sondern eben nur die Abhängigkeiten überhaupt.
Für Pfade gibts doch $PATH.
Ist denn der Pfad zu den libs, welche schon installiert sind, aber nicht gefunden werden in $PATH?
Hallo,
also von $PATH höre bzw lese ich gerade zum ersten mal.
Demzufolge, was ich nach kurzem Suchen lesen konnte, handelt es sich dabei um eine Art Liste von Pfaden zu den Ordnern, in denen ausführbare Programmdateien abgelegt sind, die dafür sorgt, dass zB FreeCAD mit dem einfachen Befehl "freecad" ausführen zu können, ohne erst in das entsprechende Verzeichnis wechseln zu müssen. Ist das so korrekt?
Falls ja, ist mir nicht klar, was das mit meinem Problem zu tun hat, da Bibliotheksordner darin ja gar nicht aufgeführt sind, oder?
Die Abhängigkeit von freecad, die Probleme macht und die ich nun gerne installieren würde, ist libzipios.so.0, und diese hängt wiederum von libstdc++.so.6 ab. Letztere Bibliothek ist derzeit in /usr/lib und in /usr/lib64 zu finden, da ja, wie schon erwähnt beide Versionen installiert sind. Zusätzlich habe ich die 32bit Bibliothek testweise noch in /lib verlinkt, was jedoch nichts gebracht hat.
Gruß, Felix
also von $PATH höre bzw lese ich gerade zum ersten mal.
Demzufolge, was ich nach kurzem Suchen lesen konnte, handelt es sich dabei um eine Art Liste von Pfaden zu den Ordnern, in denen ausführbare Programmdateien abgelegt sind, die dafür sorgt, dass zB FreeCAD mit dem einfachen Befehl "freecad" ausführen zu können, ohne erst in das entsprechende Verzeichnis wechseln zu müssen. Ist das so korrekt?
Ja, stimmt ... bezügl. libs bringt das nichts ... sorry.
Letztere Bibliothek ist derzeit in /usr/lib und in /usr/lib64 zu finden, da ja, wie schon erwähnt beide Versionen installiert sind. Zusätzlich habe ich die 32bit Bibliothek testweise noch in /lib verlinkt, was jedoch nichts gebracht hat.
Das hat dann eher etwas mit dem LD_LIBRARY_PATH zu tun.
Hallo nochmal,
ist es denn normal, dass "echo $LD_LIBRARY_PATH" nichts zurück gibt? Mir kommt das seltsam vor, zumal andere Programme ja auch laufen.
In /usr/lib liegen ja extrem viele Bibliotheken, die von diversen Programmen gebraucht werden. Läge der Fehler also darin, dass /usr/lib nicht eine etwaige Pfad-Liste eingetragen wäre, dann dürfte ja viel mehr nicht funktionieren. Oder sehe ich das jetzt komplett falsch?
Gruß, Felix
Jo, LD_LIBRARY_PATH wird meines wissen heute fast gar nicht mehr (außer von autoconf) benutzt. Die Konfiguration sollte über die /etc/ld.so.conf und ganz neumodisch über /etc/ld.so.conf.d erfolgen
Nun gut, die /etc/ld.so.conf verweist bei mir lediglich auf den Ordner /etc/ld.so.conf.d und darin befinden sich dann zwar einige .conf Dateien, diese verweisen aber alle lediglich auf eine einzige Bibliothek oder sind Platzhalterdateien.
Ich denke mal, wir suchen den Fehler an der falschen Stelle.
Woher kommt denn die Information, wo eine Bibliothek bei der Installation abgespeichert werden soll? Gibts dazu eine Online-Datenbank, und wenn ja, ist diese distributionsabhängig? Ich versuche ja immerhin Bibliotheken zu installieren, die nicht den Paketquellen sind, deshalb die Frage.
Gruß, Felix
Woher kommt denn die Information, wo eine Bibliothek bei der Installation abgespeichert werden soll?
Im Spec-File des jeweiligen RPMs.
Übrigens sollte man immer RPMs installieren, die auch zur Distri passen!
ist es denn normal, dass "echo $LD_LIBRARY_PATH" nichts zurück gibt? Mir kommt das seltsam vor, zumal andere Programme ja auch laufen.
In /usr/lib liegen ja extrem viele Bibliotheken, die von diversen Programmen gebraucht werden. Läge der Fehler also darin, dass /usr/lib nicht eine etwaige Pfad-Liste eingetragen wäre, dann dürfte ja viel mehr nicht funktionieren. Oder sehe ich das jetzt komplett falsch?
Libraries befinden sich üblicherweise unter /lib oder /usr/lib, je nachdem ob sie auch dann benötigt werden, falls /usr auf einer separaten, aber noch nicht gemounteten Partition liegt. Für diese beiden Verzeichnisse ist kein Eintrag in /etc/ld.so.conf erforderlich, dort werden nur zusätzliche Verzeichnisse eingetragen. Wo sich welche Bibliothek im einzelnen befindet, steht im Binärformat in /etc/ld.so.cache. Die Datei kannst du dir mit strings angucken. Sie muss durch Aufruf von ldconfig aktualisiert werden, wenn neue Bibliotheken installiert worden sind. Wenn nötig, kann man für einzelne Programme über die Variable LD_LIBRARY_PATH zusätzliche Pfade angeben, die dann bevorzugt werden.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.