Я пытаюсь собрать библиотеку на удаленном CI-сервере, но у меня нет привилегий root. Для библиотеки требуются пакеты autoconf, automake и libtool. Я не могу сделать это с помощью apt-get install, поэтому я попытался обойти эту проблему: загрузить пакеты .deb и экспортировать PATH, чтобы можно было найти autoconf, libtoolize и т.д.

Проблема заключается в том, что двоичные файлы в этих пакетах имеют некоторые пути к дополнительным сценариям (устанавливаемым как часть пакетов) в жестком коде. Теперь я получаю эту ошибку:

libtoolize: $pkgltdldir is not a directory: `/usr/share/libtool'

Есть ли способ изменить этот путь по умолчанию с помощью переменной среды (так же, как здесь https://superuser.com/a/1144948/62460)?

Я попытался экспортировать $pkgltdldir но это не сработало.

1 ответ1

0

В сценарии оболочки libtoolize (версии 2.4.2 и 2.4.6) жестко заданы четыре переменные:

   datadir=/usr/share
   pkgdatadir=/usr/share/libtool
   pkgltdldir=/usr/share/libtool
   aclocaldir=/usr/share/aclocal

Вскоре после этого появляется следующий раздел:

# Allow the user to override the master libtoolize repository:
if test -n "$_lt_pkgdatadir"; then
    pkgltdldir="$_lt_pkgdatadir"
    pkgdatadir="$_lt_pkgdatadir/libltdl"
    aclocaldir="$_lt_pkgdatadir/libltdl/m4"

Таким образом, установка $ _lt_pkgdatadir в каталог libtool будет работать (работает для меня - но только если каталог aclocal находится в подкаталоге libltdl с именем m4).

Учитывая это, ваше решение sed кажется довольно разумным.

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