Como o FreeBSD lida com a instalação de 2 pacotes que compartilham uma dependência comum?

0

Estou trabalhando no FreeBSD 11 e já usando programas com tcpdump como dependência, que tem libpcap e libsmi como dependências.

Eu também quero instalar o tshark , a versão do console do wireshark. Eu terei que manter o tcpdump instalado embora o tshark tenha sua própria capacidade de captura. Tshark lista libsmi como uma dependência, bem como libgpg-error, libgpg-error, libgnutls, gnutls, libgcrypt, libgcrypt, libGeoIP, GeoIP, libsmi, libintl, gettext-runtime, libglib-2.0, glib20, libintl e py-pyshark , qualquer um dos quais pode ter versões instaladas ou usadas. A página man também declara que usa pcap , embora isso não apareça na lista em freshports.

Existe algum problema ou posso apenas pkg install tshark , como de costume, e o sistema operacional irá resolvê-lo? Por interesse, como o FreeBSD lida com esta situação comum?

Links do Freshports: net / tcpdump , net / tshark

    
por Stilez 15.07.2017 / 22:35

2 respostas

1

Normalmente, não será um problema. FreeBSD (e sistemas operacionais baseados em Unix em geral) usam links dinâmicos, então múltiplos programas podem usar as mesmas dependências. As dependências só precisam ser instaladas uma vez.

Contanto que os pacotes possam usar a mesma versão da dependência, você deve estar bem. Ocasionalmente, há problemas de compatibilidade quando dois programas exigem versões diferentes da mesma biblioteca ou implementações diferentes de bibliotecas que não podem coexistir. Normalmente, tudo funciona.

    
por 15.07.2017 / 23:38
0

Não é um problema. Uma lista de dependências é simplesmente isso - uma lista de pacotes que um pacote específico precisa ter instalado antes de funcionar. A dependência final é que o FreeBSD deve ser instalado!

A lista de dependências existe para que pkg possa instalar qualquer um que ainda não esteja lá.

Se você instalar o pacote A, e ele puxar a dependência B, é claro que está tudo bem. Se você, então, instalar o pacote C, que também precisa de B, ele já está lá, então nada acontece (mas ainda é lembrado por pkg ).

Mais importante ainda, se você desinstalar o pacote A, o não irá desinstalar o pacote B, porque o pacote C ainda precisa dele.

Isto não parece ser perfeito (embora deva ser). Ocasionalmente você acaba com pacotes órfãos ('leaf'), que não são necessários por nada (claro, às vezes você ainda os quer). O pacote pkg_cutleaves é útil para limpá-los.

    
por 16.07.2017 / 01:05