BuildRequires: pkgconfig(foo) im Vergleich zu foo-devel
Fedora-Pakete, die pkg-config verwenden, um gegen eine Bibliothek (z. B. 'foo') zu kompilieren, von der sie abhängen, SOLLTEN ihre Bauabhängigkeit korrekt als pkgconfig(foo) ausdrücken.
Begründung
Die Bau-Infrastruktur für ein bestimmtes Paket findet und verwendet häufig die benötigten Bibliotheken mithilfe von pkg-config.
Somit ist pkgconfig(foo) die korrekte Aussage über die Bauabhängigkeit und sollte in der Spec-Datei so ausgedrückt werden.
Aus historischen Gründen scheinen viele Pakete eine fest kodierte Abhängigkeit wie „BuildRequires: foo-devel“ zu haben, wobei der Name des Pakets angegeben wird, das aktuell das benötigte pkgconfig-Modul bereitstellt. Dies ist fehleranfällig und weniger portabel als die direkte Angabe der tatsächlichen Abhängigkeit. Wenn sich Paketnamen ändern und/oder ein benötigtes pkgconfig-Modul später von einem anderen Paket bereitgestellt wird, funktionieren diese fest kodierten Abhängigkeiten nicht mehr.
Beachten Sie, dass es weiterhin zulässig ist, bestimmte Pakete namentlich anzufordern, wenn diese aus einem anderen Grund als einem von ihnen bereitgestellten pkg-config-Modul benötigt werden.
Beispiel
Pakete, die gegen libproxy kompiliert werden, sollten Folgendes enthalten:
BuildRequires: pkgconfig(libproxy-1.0)
-
… und nicht Folgendes:
BuildRequires: libproxy-devel
Auf diese Weise bleibt die Abhängigkeit korrekt, falls das pkgconfig-Modul libproxy-1.0.pc jemals von einem anders benannten Paket bereitgestellt wird (zum Beispiel von PacRunner, sobald dessen Integration abgeschlossen ist, oder von einem Abwärtskompatibilitätspaket ‘libproxy1’, wie es in der Vergangenheit bei einer Reihe anderer Bibliotheken der Fall war).
Want to help? Learn how to contribute to Fedora Docs ›