Проблема с сокетом nmap

Если ваша библиотека правильно определяет свое сонам, вы можете без проблем установить несколько версий. Например, в настоящее время у меня установлены три версии libreadline:

$ ls -l /lib/x86_64-linux-gnu/libreadline.so.*
lrwxrwxrwx 1 root root     18 Dec  4  2015 /lib/x86_64-linux-gnu/libreadline.so.5 -> libreadline.so.5.2
-rw-r--r-- 1 root root 263352 Dec  4  2015 /lib/x86_64-linux-gnu/libreadline.so.5.2
lrwxrwxrwx 1 root root     18 Oct  4  2016 /lib/x86_64-linux-gnu/libreadline.so.6 -> libreadline.so.6.3
-rw-r--r-- 1 root root 296792 Oct  4  2016 /lib/x86_64-linux-gnu/libreadline.so.6.3
lrwxrwxrwx 1 root root     18 Jan 24 16:17 /lib/x86_64-linux-gnu/libreadline.so.7 -> libreadline.so.7.0
-rw-r--r-- 1 root root 309168 Jan 24 16:17 /lib/x86_64-linux-gnu/libreadline.so.7.0

Это работает, потому что программы ссылаются на soname, поэтому все, что создано для версии 5, ссылается на libreadline.so.5, все, что создано для версии 6, ссылается на libreadline.so.6 и т. д.Требование со стороны библиотеки состоит в том, что все версии с одним и тем же именем soname должны сохранять свой ABI: новые версии могут добавлять функции, но они не могут нарушать существующие функции. Любое критическое изменение подразумевает изменение сонейма.

Если все это сделано правильно (на стороне библиотеки), вам никогда не понадобится несколько версий библиотеки с одним и тем же именем soname: пока у вас есть последняя версия, вы будете иметь возможность запускать любое программное обеспечение, созданное для любой версии библиотеки с тем же именем soname. Продолжая пример libreadline, программное обеспечение, созданное с помощью библиотеки версии 5.1, прекрасно работает с версией 5.2. (Обратное не обязательно верно; программы, использующие новые функции версии 5.2, не будут работать с версией 5.1.)

Возможно, стоит заглянуть в libtool (да, я знаю), если вы не уже использует его: у него есть разумно используемая схема управления версиями, которая обрабатывает неровности сонимов.

Некоторые библиотеки идут на крайние меры, чтобы свести к минимуму необходимость в использовании сонимов; библиотека GNU C является примером, она широко использует управление версиями символов, чтобы избежать нарушения ABI, в то же время добавляя новые функции и обратно несовместимые изменения (она просто сохраняет старые версии, внутри библиотеки).

1
22.06.2016, 22:05
1 ответ

В моем случае причиной проблемы был ipv6 dns в /etc/resolv.conf, так как ipv6 был отключен в системе, после комментирования все ipv6 dns nmapфункционировали должным образом.

0
28.01.2020, 01:14

Теги

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