
我將 .deb 套件轉換為 PKGBUILD,以取得沒有原始碼的程式。問題是這個二進位檔案會尋找 Ubuntu 16.10 上可用的一些共用函式庫,這些函式庫在 Arch 上有不同的路徑。這是我ldd
在二進位檔案上運行時輸出的一部分:
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
告訴該程式在 Arch 上哪裡可以找到庫的最佳方法是什麼?
答案1
它們位於同一目錄中。但其中一些不存在在 Arch 上 – 或至少不是您的程式所需的確切 .soname。
提升是一個問題。在 Arch 中它已經是 1.64 版本了,不幸的是它沒有任何 ABI 穩定性——換句話說,使用 Boost 的程式必須為每個版本重新編譯。 (這就是「.so」後面的數字改變的原因。)
因此,首先您需要為 Boost 1.61 製作一個軟體包,其方式與各種現有的「舊版」軟體包(例如 glew1.10)類似。它只有 .so 文件,而沒有其他文件,因此它可以與最新版本並排安裝。
(不,您不能簡單地符號連結或重命名不同的版本 - .soname 的更改是有原因的。)
儘管 cURL 在版本控制方面沒有這樣的問題(它已經在 .so.4 很長一段時間了),但它有三個變體– Arch僅提供OpenSSL和GnuTLS。因此,您再次需要製作一個針對 NSS 函式庫編譯 cURL 的套件,以獲得 libcurl-nss。您可以使用“curl-gnutls”套件作為基礎。
最後一個函式庫 xalan-c 根本沒有安裝在您的系統上。