Erstellen von PKGBUILD aus deb für eine Binärdatei

Erstellen von PKGBUILD aus deb für eine Binärdatei

Ich habe ein .deb-Paket für ein Programm, das ohne Quellen geliefert wird, in PKGBUILD konvertiert. Das Problem ist, dass diese Binärdatei nach einigen gemeinsam genutzten Bibliotheken sucht, die unter Ubuntu 16.10 verfügbar sind, aber unter Arch andere Pfade haben. Dies ist ein Teil der Ausgabe, wenn ich ldddie Binärdatei ausführe:

    libcurl-nss.so.4 => not found
    liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x00007f460d645000)
    libboost_thread.so.1.61.0 => not found
    libboost_system.so.1.61.0 => not found
    libboost_filesystem.so.1.61.0 => not found
    libboost_program_options.so.1.61.0 => not found
    libxalan-c.so.111 => not found

Wie kann ich diesem Programm am besten mitteilen, wo es Bibliotheken auf Arch findet?

Antwort1

Sie befinden sich im selben Verzeichnis. Aber einige von ihnenexistiert nichtauf Arch – oder zumindest nicht die genaue .soname-Datei, die Ihr Programm benötigt.

Boost ist ein Problem. In Arch ist es bereits in der Version 1.64 und hat leider keine ABI-Stabilität – mit anderen Worten, Programme, die Boost verwenden, müssen für jede Version neu kompiliert werden. (Das ist der Grund, warum sich die Nummern nach „.so“ ändern.)

Sie müssen also zunächst ein Paket für Boost 1.61 erstellen, ähnlich wie bei verschiedenen vorhandenen Paketen für „alte Versionen“ (wie z. B. glew1.10). Es enthält nur die .so-Dateien, aber nichts anderes, sodass es parallel zur neuesten Version installiert werden kann.

(Und nein, Sie können nicht einfach einen symbolischen Link zu einer anderen Version erstellen oder diese umbenennen – die .soname-Datei ändert sich aus einem bestimmten Grund.)

Obwohl cURL keine derartigen Probleme mit der Versionierung hat (es liegt schon seit langem bei .so.4), hat es dreiVarianten– Arch stellt nur OpenSSL und GnuTLS bereit. Sie müssen also erneut ein Paket erstellen, das cURL mit der NSS-Bibliothek kompiliert, um libcurl-nss zu erhalten. Sie können das Paket „curl-gnutls“ als Basis verwenden.

Die letzte Bibliothek, xalan-c, ist auf Ihrem System einfach nicht installiert.

verwandte Informationen