
Я преобразовал пакет .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, которое требуется вашей программе.
Boost — это одна из проблем. В Arch он уже версии 1.64, и, к сожалению, у него нет стабильности ABI — другими словами, программы, использующие Boost, должны быть перекомпилированы для каждой версии. (Вот почему цифры после ".so" изменились.)
Итак, сначала вам нужно будет создать пакет для Boost 1.61, аналогично различным существующим пакетам "старой версии" (например, glew1.10). Он будет содержать только файлы .so, но не будет ничего другого, так что его можно будет установить рядом с последней версией.
(И нет, вы не можете просто создать символическую ссылку или переименовать другую версию — .soname меняется по какой-то причине.)
Хотя у cURL нет таких проблем с версионированием (он уже долгое время находится на версии .so.4), у него есть триварианты– Arch предоставляет только OpenSSL и GnuTLS. Так что вам снова нужно будет создать пакет, который компилирует cURL с библиотекой NSS, чтобы получить libcurl-nss. Вы можете использовать пакет "curl-gnutls" в качестве основы.
Последняя библиотека, xalan-c, просто не установлена в вашей системе.