Wie erstellt man ein Tool mit bestimmten Bibliotheken, ohne Fedora zu beschädigen?

Wie erstellt man ein Tool mit bestimmten Bibliotheken, ohne Fedora zu beschädigen?

Bisher musste ich nie von den Standard-Kernentwicklungskomponenten von Fedora 16 abweichen. Ich muss bauenClutter-MX-Projekt, aber diese Bibliothek erfordert glib-2.0.32. Darüber hinaus benötigt glib-2 libffi-3.0.11.

Ich kann den Quellcode herunterladen und diese Bibliotheken erstellen, ich habe jedoch Bedenken, dass durch die Installation das restliche System beschädigt wird.

DerClutter-MX-Projektverwendet Autotools und sucht nach der Glib-2-Version.

Die Fragen sind:

  1. Wenn ich die neuen Komponenten erstelle und installiere und etwas schief geht, können Sie dann mit Yum oder etwas Ähnlichem zurückkommen?

  2. Gibt es eine Möglichkeit, Autotools dazu zu bringen, in einem anderen Verzeichnis nach den installierten Headern zu suchen?

Antwort1

Versuchen Sie nicht, neuere Gtk/Gnome-Bibliotheken in einem Systemverzeichnis zu installieren. Sie sind nicht gut abwärtskompatibel und es besteht die Gefahr, dass vorhandene Programme beschädigt werden.

Kompilieren und installieren Sie neue Bibliotheken in einer separaten Verzeichnishierarchie. Führen Sie es aus, ./configure --helpum zu erfahren, wie Sie Pfade zu Bibliotheken angeben und Dateien einschließen, wenn Sie eine Bibliothek kompilieren. Wenn Sie beispielsweise sehen

PANGO_CFLAGS
            C compiler flags for PANGO, overriding pkg-config
PANGO_LIBS  linker flags for PANGO, overriding pkg-config

Legen Sie dann die folgenden Umgebungsvariablen fest:

export PANGO_CFLAGS='-I /path/to/my/gnome/stuff/include'
export PANGO_LIBS='-L /path/to/my/gnome/stuff/libs'

Geben Sie --prefix=/path/to/my/gnome/stuffes an weiter ./configure, um alles in Ihrem eigenen Verzeichnis zu installieren.

Oder, und das ist einfacher, wenn Sie viele Bibliotheken installieren müssen, bauen Sie alles neu auf, einschließlich mitPaketkonfiguration. Installieren Sie auch pkg-configunter , dann setzen/path/to/my/gnome/stuff

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config

Antwort2

Quellen, die über Auto-Tools nach Abhängigkeiten suchen, haben eine configure.ac-Datei (und/oder Makefile.am, da bin ich mir nicht sicher), in der diese Abhängigkeiten definiert sind. Meistens fügen Benutzer/IDEs einfach ihre aktuell installierten Versionen der Bibliotheken als Abhängigkeit ein, benötigen sie aber in dieser aktuellen Version nicht wirklich.

Sie können versuchen, die erforderlichen Versionen an Ihre Versionen anzupassen und das Paket zu erstellen.

Sie können die Autotools nicht direkt dazu bringen, in einem alternativen Pfad zu suchen, aber wenn ich mich recht entsinne, verwenden die Autotools pkg-config, um die Paketinstallationsdetails zu ermitteln (man pkg-config). Sie können pkg-config mit der Umgebungsvariable PKG_CONFIG_PATH anweisen, in anderen Verzeichnissen zu suchen. Der pkg-config-Pfad funktioniert jedoch nur, wenn Sie die neueren Bibliotheken tatsächlich irgendwo installiert haben. Aber dann können Sie meines Erachtens die *.pc-Dateien bearbeiten, um clutter-mx zu zwingen, diese Bibliotheken statisch zu verknüpfen.

Wenn Sie zwei Versionen einer Bibliothek installieren und manchmal die eine und manchmal die andere verwenden, können Probleme auftreten. Wenn Sie tatsächlich Dateien ersetzen, die dort von rpm abgelegt wurden, sind Sie aufgeschmissen.

Mein Ratschlag ist, die Build-Abhängigkeiten zu ändern oder, falls nötig, festzustellen, warum die neuere Version der Bibliothek XY erforderlich ist, und die Clutter-MX-Quellen so zu ändern, dass diese neuere Version nicht erforderlich ist und Sie mit Ihrer aktuellen Version arbeiten können. Mein zweitbester Ratschlag ist, Pakete für Ihre Distribution der erforderlichen Bibliotheken zu besorgen/zu erstellen und diese zu installieren. Sie sollten wirklich nicht aus der von Ihrer Distribution eingerichteten Welt, d. h. dem Paketmanager, ausbrechen. Da draußen lauern böse Mächte. :-)

verwandte Informationen