• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Installation aktueller Libraries ohne RPM?

Kyaha

Newbie
Hallo!

Ich bin jetzt durch die Uni genötigt worden, einige Libraries zu aktualisieren, weil eine dort entwickelte Software sich anderfalls nicht installieren läßt.

Um genau zu sein - bei den Libraries handelt es sich um GTK (2.12.3) und OpenCV (0.9.9).
Unter Windows dies zu installieren war nicht weiter schwer, aber wer schon Informatik studiert sollte auch gefälligst alles unter Linux (Suse 10.1 - 32bit) zum laufen bringen - soweit war mein Gedanke.
Aber leider Pustekuchen :cry:

Ich bin also folgendermaßen vorgegangen:
Den aktuellen Sourcecode von gtk.org und sourceforge heruntergeladen und auch die aktuellen Versionen der weiterhin benötigten Libraries (glib2, Pango, Cairo, atk, pkg-config).
Danach habe ich mich stur daran gehalten, was auch in den Installationsanleitungen stand. Das war fast ausschließlich der klassische 3er Schritt:

./configure
make
make install

Soweit keine Abhängigkeiten bestehen, compiliert auch alles wunderbar durch.
Wenn ich jetzt aber GTK installieren möchte, bricht mir alles beim ./configure ab, weil die Anforderungen an die Versionen von Pango & co nicht erfüllt werden.
Eine Abfrage per rpm -qi pango o.ä. sagt mir, daß die alten Versionen noch immer installiert sind.

Habe ich die Pfade falsch gesetzt? Wenn ja, was müßte ich genau beachten?
Oder gibt es von allem bereits rpm Packete, die ich einfach installieren kann? Kann man auch PMs benutzen, die nicht für Suse 10.1 erstelllt wurden? Falls ja, wo kann ich diese finden? Ich habe schon einige Suchmaschinen ausprobiert, aber nichts gefunden, was mir geholfen hätte (Ich brauche leider die fast aktuellste Version jeweils). :(

Das selbstständige Erstellen von RPMs per rpmbuild habe ich derweil aufgegeben, da ich dort absolut nicht durchsteige mit dem spec-File. :(

Ich hoffe, ihr könnt mir N00b bei diesem Problem weiterhelfen.

Besten Dank auf jeden Fall im voraus!

Grüße

Kyaha
 
OP
K

Kyaha

Newbie
Martin Breidenbach schrieb:
Dabei wird ja die rpm Datenbank nicht aktualisiert. Eine Abfrage der rpm Dtaenbank ergibt also die zuletzt installierte Version.

Das hatte ich schon fast befürchtet. :?

Aber wie kann ich die Datenbank entsprechend aktualisieren? Oder wo bekomme ich die passenden RPMs?

Grüße

Kyaha
 
Wenn Du Bibliotheken aus dem Quellcode kompilierst, dann ersetzen diese nicht die mittels RPM installierten Versionen, sondern werden zusätzlich nach /usr/local installiert. In der RPM-Datenbank bleibt die alte Version stehen, im Dateisystem gibt es zwei Versionen, die neue in /usr/local und die alte anderswo, z.B. /opt/gnome oder /usr.

Was das Auffinden der Bibliotheken angeht: Dazu wird das Tool pkg-config benutzt. Relevant ist nicht die Situation in der RPM-Datenbank, die man mittels rpm abfragt, sondern die im Dateisystem, die man mittels pkg-config abfragt.

Also frag die pango-Version nicht so ab
Code:
rpm -q pango
sondern so
Code:
pkg-config --modversion pango
und überprüf die Umgebungsvariable PKG_CONFIG_PATH
Code:
echo "$PKG_CONFIG_PATH"
und lies die Dokumentation zu pkg-config.

Die sauberste Lösung ist die Erstellung eines eigenen RPMs. Wenn Du damit nicht klarkommst, dann ändere das, d.h. schau die spec-Dateien anderer Pakete an, lies Dokumentation, soweit vorhanden und eigne Dir soviel an, bis Du eben doch damit klarkommst.

PS: Im Factory-Zweig gibt es im Moment noch kein 2.12.3, sondern 2.10.2.
 
OP
K

Kyaha

Newbie
Hi!

Danke für die schnellen Beiträge - und sorry für die falsche Versionsangabe - habe mich im Filenamen verguckt. :?

Das mit pkg-config hatte ich schon leicht im Verdacht.
Darum hatte ich testweise einmal alle libs in meinem home-Verzeichnis installiert und dann die PK_CONFIG_PATH um eben diesen Pfad per export erweitert.

Leider hat dies auch nichts gebracht - will meinen, die Version ist immer noch die alte, aus Suse RPM installierte Version.

Das mit den spec-Files ist schon ein harter Brocken, ein leichtes "für Dummies" Tutorial habe ich auch noch nicht finden können.
Gibt es nicht irgendwo eine Seite mit relativ aktuellen RPMs?

Grüße

Kyaha
 
Bist Du sicher, dass Du die Umgebungsvariable korrekt gesetzt hast?

- Es ist nicht PK_CONFIG_PATH, sondern PKG_CONFIG_PATH

- Das Verzeichnis muss vorne, nicht hinten hinzugefügt werden und es muss direkt das Verzeichnis mit den .pc-Dateien sein.

Angenommen, die .pc-Dateien lägen in /home/Kyaha/lib/pkgconfig, dann müsstest Du die Variable so setzen:
Code:
export PKG_CONFIG_PATH="/home/Kyaha/lib/pkgconfig:$PKG_CONFIG_PATH
Dass pkg-config die .pc-Dateien trotz korrekt gesetzter Umgebungsvariable immer noch im falschen Verzeichnis suchen soll, habe ich noch nie gehört.

- Die Umgebungsvariable muss in derselben Shell gesetzt werden, in der auch alle weiteren Tests gemacht werden.

Aktuelle RPMs gibt es im Factory-Zweig - wenn die Version dort nicht die richtige ist, dann bedeutet das, dass nicht mal Novell selbst eine aktuellere Version hat. Außerdem ist das mit dem Ersetzen der systemeigenen gtk2-Version so eine Sache - gtk2 ist eine relativ komplexe Bibliothek, die man nicht einfach nur installieren kann, sondern auch richtig integrieren muss.

Wenn Du wirklich überhaupt nicht mit den spec-Dateien klarkommst, dann erstelle ein "Quick&Dirty"-RPM mit checkinstall.
 
OP
K

Kyaha

Newbie
Hi!

Ja, die Variable habe ich richtig benannt. Meine alte Tastatur hackt nru manchmal und so verschlucke ich beim schreiben schon einmal einen Buchstaben.

Das Verzeichnis habe ich bisher tatsächlich immer hinten drangehängt - so hatte ich es in einem Tutorial einmal gelesen.

Leider hat das setzen der Variable auch auf 1. Position im Verzeichnis mich noch nicht meinem Ziel näher gebracht. Das braucht wohl doch etwas mehr Bastelzeit, als ich angenommen hatte.

Ich versuche jetzt erst einmal mein Glück mit den RPMs aus dem Factory Verzeichnis.

Wünsche eine geruhsame Nacht - bei Problemen belästige ich euch morgen wieder :wink:

Grüße

Kyaha
 

admine

Ultimate Guru
Evt. ist ja auch "checkinstall" eine Möglichkeit für dich:

[HowTo] checkInstall
http://www.linux-club.de/viewtopic.php?t=36214
 
OP
K

Kyaha

Newbie
Hi!

Ich habe mir jetzt aus dem Factory Verzeichnis die src.rpm Dateien heruntergeladen, die ich auch benötige.
Flugs habe ich ein rpmbuild --rebuild filename.src.rpm gemacht.
Soweit hat dann alles durchcompiliert und mir ein paar Dateien herausgespuckt, die unter /usr/src/packages/RPMS/iX86 liege.
Soweit so gut, und ich versuchte (beim Beispiel glib2) zu updaten per
sudo rpm -Uvh glib2-2.12.1-3.i586.rpm.
Leider gab es die folgende Fehlermeldung:

error: Failed dependencies:
glib2 = 2.8.5 is needed by (installed) glib2-devel-2.8.5-19.i586

und daraus werde ich nicht wirklich schlau. Ach per reinen Installparameter -i kommt dieser Fehler.
Wie kann ich dieses Package nun updaten, wenn doch diese Abhängigkeit besteht?

Wenn ich das rpm-Package manuell auswähle in Konquerer und dort "Packet mit YaST installieren" auswähle, startet YaST zwar, aber installiert einzig von der Suse-DVD die alte Version nochmals.
Bisher habe ich es noch nicht geschafft, dieses RPM Verzeichnis bei YaST als Installationsquelle hinzuzufügen.
Was mache ich falsch?

Grüße

Kyaha
 
glib2-devel-2.8.5-19 benötigt nun einmal glib2 in der Version 2.8.5.
Wenn du versuchst glib2 zu aktualisieren, dann enstehen bei glib2-devel ungelöste Abhängigkeiten.
Entweder glib2-devel auch aktualisieren, oder deinstallieren.

Um ein Verzeichnis als YAST-Installationsquelle hinzuzufügen, musst du zuerst mit createrepo ein lokales Repository erstellen.
=> http://en.opensuse.org/Creating_YaST_Installation_Sources
 
OP
K

Kyaha

Newbie
Hi!
Das mit dem createrepo hat prima funktioniert - bis jetzt.

Nachdem ich glib2, cairo und pango updated habe, ging ich nun an gtk2.
Jetzt gibt es aber Probleme mit einer libpangocairo - und nicht nur dass, ich komme unter Suse nicht mehr ins Internet. Firefox verlangt eben dies nun auch und kann nicht mehr starten.

Jemand eine Idee wie ich das wieder hingebogen bekomme?
Nahc meiner bisherigen Recherche soll die libpangocairo zum pango packet gehören :?:

Ich dachte dadran, per YaSt das ganze neu einzuspielen, aber YaST bleibt dauernd hängen (da kommt man sich ja schlimmer vor als unter Windows...).
Ich habe es geschafft die alte Installationsquelle zu löschen, aber immer wenn ich eine neue hinzufügen möchte und auf beenden klicke, eiert die Uhr endlos herum und nichts passiert.
Bin dann gezwungen yast zu killen.
Was mache ich falsch?

grüße

Kyaha
 
Oben