Назад | Перейти на главную страницу

Компиляция 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 /

Это моя команда настройки для 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.

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

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

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

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