1

Я преобразовал пакет .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 ответ1

1

Они находятся в одном каталоге. Но некоторые из них не существуют в Arch - или, по крайней мере, не являются точными .soname, которые нужны вашей программе.

Повышение является одной проблемой. В 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, просто не установлена в вашей системе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .