Дерево зависимостей библиотек Gpg2 - PullRequest
0 голосов
/ 19 сентября 2018

Существует ли какое-либо дерево зависимостей или граф для библиотек, используемых Gpg2, например libgpg-error или libassuan &c.?

Или другой способ определить, какие мне нужно перекомпилировать после того, как один из них получит новую версию?Например, libgpg-error, насколько я понимаю, довольно проста, и поэтому, если она будет обновлена, возможно, все остальные придется перекомпилировать?

Иногда у меня возникают проблемы, когда после обновления библиотеки я не могу скомпилировать новую версию Gpg2, так какон пытается связать старую, уже удаленную версию этой библиотеки (у меня есть нестандартная структура каталогов для них) и выдает сообщение «не могу найти библиотеку».И после некоторых - не очень тщательных - исследований, я полагаю, это вызвано тем, что информация об этой конкретной версии библиотеки взята из других библиотек, которые были созданы до обновления.

Пример: я недавно обновил libgpg-error до1,32.Сегодня я попытался (и не смог (и должен был это исправить вручную)) скомпилировать Gpg 2.2.10.

Команда, которая потерпела неудачу, была следующей (сокращенной):

/usr/local/bin/gcc -std=gnu99 ... \
-I/usr/local/libgpg-error-1.31/include \
-I/usr/local/libgpg-error-1.25/include \
-I/usr/local/libgpg-error-1.31/include \
-I/usr/local/libgpg-error-1.32/include \
-o dirmngr dirmngr.o server.o crlcache.o crlfetch.o certcache.o ... \
../common/libcommonpth.a -lresolv  \
-L/usr/local/libgpg-error-1.31/lib -lgpg-error \
-L/usr/local/libgpg-error-1.31/lib -lgpg-error \
-L/usr/local/libgpg-error-1.25/lib -lgpg-error \
...

Обратите внимание, как она пытается включить в версии 1.25, 1.31 и 1.32 заголовки libgpg-error и ссылки версии 1.25 и 1.31 (ноНЕ 1.32) из ​​libgpg-error.so, хотя на диске больше нет ни одной из этих версий, кроме текущей, т.е. 1.32.Однако они присутствовали ранее, когда были скомпилированы некоторые другие библиотеки.

1 Ответ

0 голосов
/ 25 сентября 2018

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

level 0
| libgpg-error
| nPth
level 1
| libgcrypt (libgpg-error)
| libksba (libgpg-error)
| libassuan (libgpg-error)
level 2
| ntbTLS (libgpg-error, libgcrypt, libksba)
| pinentry (libgpg-error, libassuan)
level N
| gpg2 (libgpg-error, libgcrypt, libassuan, libksba, nPth) [pinentry, ntbTLS]
level N+1
| GPGME (libgpg-error, libassuan)
level N+2
| GPA (libgpg-error, libassuan, GPGME)

(отредактировано в соответствии с предложением Бена в его комментарии.)

...