Я работаю над FreeBSD 11 и уже использую программы с tcpdump
в качестве зависимости, у которых есть libpcap
и libsmi
в качестве зависимости.
Я также хочу установить tshark
, консольную версию wirehark. Мне придется оставить tcpdump установленным, хотя у tshark есть собственная возможность захвата.Tshark перечисляет libsmi
как зависимость, а также libgpg-error, libgpg-error, libgnutls, gnutls, libgcrypt, libgcrypt, libGeoIP, GeoIP, libsmi, libintl, gettext-runtime, libglib-2.0. , glib20, libintl
и py-pyshark
, для любой из которых могут быть установлены или использованы версии. На странице man
также указано, что он использует pcap
, хотя этого нет в списке на freshport.
Есть ли какие-нибудь проблемы, или я могу просто pkg установить tshark
как обычно, и операционная система решит все? Ради интереса, как FreeBSD справляется с этой распространенной ситуацией?
Ссылки Freshports: net / tcpdump , net / tshark
Как правило, это не проблема. Операционные системы на базе FreeBSD (и Unix -вообще )используют динамическую компоновку, поэтому несколько программ могут использовать одни и те же зависимости. Зависимости нужно установить только один раз.
Пока пакеты могут использовать одну и ту же версию зависимости, все будет в порядке. Иногда возникают проблемы совместимости, когда двум программам требуются разные версии одной и той же библиотеки или разные реализации библиотек, которые не могут -существовать вместе. Хотя обычно все просто работает.
Это не проблема. Список зависимостей — это просто -список пакетов, которые необходимо установить конкретному пакету, прежде чем он заработает. Конечной зависимостью является то, что FreeBSD должна быть установлена!
Список зависимостей существует, так что pkg
может установить все, чего еще нет.
Если вы устанавливаете пакет A, а он извлекает зависимость B, это, конечно, нормально. Если вы затем установите пакет C, которому также нужен B, он уже там, поэтому ничего не происходит (, но он все еще запоминаетсяpkg
).
Что еще более важно, если вы затем удалите пакет A, это не удалит пакет B, потому что он все еще нужен пакету C.
Это не кажется совершенным (, хотя должно быть ). Иногда вы получаете сиротские ('листовые' )пакеты, которые, конечно, никому не нужны (, иногда они все еще нужны ). Пакет pkg_cutleaves
полезен для их очистки.