Как FreeBSD обрабатывает установку двух пакетов с общей зависимостью?

Я работаю над 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

0
16.07.2017, 00:08
2 ответа

Как правило, это не проблема. Операционные системы на базе FreeBSD (и Unix -вообще )используют динамическую компоновку, поэтому несколько программ могут использовать одни и те же зависимости. Зависимости нужно установить только один раз.

Пока пакеты могут использовать одну и ту же версию зависимости, все будет в порядке. Иногда возникают проблемы совместимости, когда двум программам требуются разные версии одной и той же библиотеки или разные реализации библиотек, которые не могут -существовать вместе. Хотя обычно все просто работает.

1
28.01.2020, 02:45

Это не проблема. Список зависимостей — это просто -список пакетов, которые необходимо установить конкретному пакету, прежде чем он заработает. Конечной зависимостью является то, что FreeBSD должна быть установлена!

Список зависимостей существует, так что pkgможет установить все, чего еще нет.

Если вы устанавливаете пакет A, а он извлекает зависимость B, это, конечно, нормально. Если вы затем установите пакет C, которому также нужен B, он уже там, поэтому ничего не происходит (, но он все еще запоминаетсяpkg).

Что еще более важно, если вы затем удалите пакет A, это не удалит пакет B, потому что он все еще нужен пакету C.

Это не кажется совершенным (, хотя должно быть ). Иногда вы получаете сиротские ('листовые' )пакеты, которые, конечно, никому не нужны (, иногда они все еще нужны ). Пакет pkg_cutleavesполезен для их очистки.

0
28.01.2020, 02:45

Теги

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