Компиляция GnuPG связывает gpg2 с / lib вместо / usr / local / lib / [закрыто]

Иногда мне приходится устанавливать новые пакеты на серверы. Если мне повезет, я найду RPM, иначе я бьюсь головой об стену и пытаюсь скомпилировать пакет.

На этот раз я скомпилирую GnuPG, чтобы получить версию 2.1.15. Итак, я загружаю все зависимые библиотеки, запускаю configure && make install, наконец, повторяю для самого пакета gnupg-2.1.15, и все идет хорошо, и make помещает все в / usr / local /, включая библиотеки и двоичные файлы. Почувствовав удачу, проверяю версию:

$ /usr/local/bin/gpg2 --version
gpg: Fatal: libgcrypt is too old (need 1.7.0, have 1.6.6)

Ой. Что случилось, поэтому я проверяю связанные библиотеки:

$ ldd /usr/local/bin/gpg2
linux-vdso.so.1 (0x00007fff15db4000)
libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007fcab5431000)
libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fcab521d000)
libassuan.so.0 => /lib64/libassuan.so.0 (0x00007fcab5009000)
libc.so.6 => /lib64/libc.so.6 (0x00007fcab4c47000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fcab4a43000)
/lib64/ld-linux-x86-64.so.2 (0x00005615f5c77000)

Ух, старые встроенные в систему библиотеки были скомпонованы. Я не очень много компилирую программное обеспечение, поэтому я застрял здесь, пытаясь понять, как указать gcc через configure (или другое?), Чтобы связать зависимые библиотеки, которые были только что установлены в / usr / local / lib /

Это это моя команда configure для gnupg-2.1.15:

./configure --prefix=/usr/local --with-libgpg-error-prefix=/usr/local/\
--with-libgcrypt-prefix=/usr/local --with-libassuan-prefix=/usr/local\
--with-ksba-prefix=/usr/local --with-npth-prefix=/usr/local

Запуск ее в Fedora 24 с последними обновлениями, установленным ядром и gcc 6.2.1.

Спасибо, что нашли время рассмотреть мою проблему.

0
задан 3 October 2016 в 10:15
1 ответ

Похоже, вам нужна конкретная версия программы с зависимыми от нее библиотеками или вы экспериментируете со своей системой.

Вы можете использовать переменную окружения LD_LIBRARY_PATH для изменения пути поиска компоновщика, чтобы найти вашу новую библиотеку и использовать ее вместо старой. Вот страница для более подробной информации о ней.

Вы можете попробовать экспортировать LD_LIBRARY_PATH=/usr/local/path/to/lib/directory перед запуском вашей программы. Чтобы сделать это постоянным, вы можете изменить пути поиска ldconfig (обычно файлы под /etc/ld.so.conf.d), а затем вызвать ldconfig для обновления кэшей.

.
0
ответ дан 5 December 2019 в 09:29

Теги

Похожие вопросы