O que se entende por "depende" e "pré-depende", e a diferença entre esses dois tipos de requisitos de pacote quando estou instalando algo no Ubuntu?
O que se entende por "depende" e "pré-depende", e a diferença entre esses dois tipos de requisitos de pacote quando estou instalando algo no Ubuntu?
Respostas:
Conforme extraído deste link: https://www.debian.org/doc/debian-policy/#document-ch-relationships
Existem 5 tipos de dependências:
O significado dos cinco campos de dependência é o seguinte:
Isso declara uma dependência absoluta. Um pacote não será configurado, a menos que todos os pacotes listados em seu campo Depends tenham sido configurados corretamente. O campo Depends deve ser usado se o pacote dependente for necessário para que o pacote dependente forneça uma quantidade significativa de funcionalidade. O campo Depends também deve ser usado se os scripts postinst ou prerm exigirem que o pacote dependente seja descompactado ou configurado para ser executado. No caso do postinst configure, os pacotes dependentes serão descompactados e configurados primeiro.
No caso de ações prerm ou outras postinst, as dependências do pacote normalmente serão pelo menos descompactadas, mas podem ser "meia-instaladas" apenas se uma atualização anterior da dependência falhar. Finalmente, o campo Depends deve ser usado se o pacote dependente for necessário pelo script postrm para limpar completamente após a remoção do pacote. Não há garantia de que as dependências do pacote estejam disponíveis quando o postrm for executado, mas é mais provável que o pacote dependente esteja disponível se o pacote declarar uma dependência (principalmente no caso do postrm remove). O script postrm deve ignorar ações que requerem dependência, se essa dependência não estiver disponível.
Esse campo é como Depends, exceto que ele também força o dpkg a concluir a instalação dos pacotes nomeados antes mesmo de iniciar a instalação do pacote que declara a pré-dependência . Funciona assim, quando um pacote que declara uma pré-dependência está prestes a ser descompactada, a pré-dependência poderá ser satisfeita se o pacote dependente estiver totalmente configurado ou mesmo se o (s) pacote (s) dependente (s) forem descompactados apenas ou no estado "Semi-configurado", desde que tenham sido configurados corretamente em algum momento no passado (e não removido ou parcialmente removido desde então).
Nesse caso, as versões configuradas anteriormente e atualmente descompactadas ou "semi-configuradas" devem atender a qualquer cláusula de versão no campo Pré-dependências. Quando o pacote que declara uma pré-dependência está prestes a ser configurado, a pré-dependência será tratada como um Depends normal. Será considerado satisfeito apenas se o pacote dependente tiver sido configurado corretamente. No entanto, diferentemente do Depends, o Pré-Depends não permite que dependências circulares sejam quebradas. Se uma dependência circular for encontrada ao tentar honrar as pré-dependências, a instalação será abortada.
As pré-dependências também são necessárias se o script pré-instalação depender do pacote nomeado. É melhor evitar essa situação, se possível. As pré-dependências devem ser usadas com moderação, de preferência apenas por pacotes cuja atualização ou instalação prematura prejudicaria a capacidade do sistema de continuar com qualquer atualização que possa estar em andamento.
Versão menor:
O termo "dependência" pode ser usado amplamente para abranger os relacionamentos "Depende" e "Pré-Depende" (e às vezes até outros relacionamentos mais fracos), ou pode ser usado estritamente como sinônimo de "Depends".
A diferença entre os relacionamentos de pacotes "Depende" e "Pré-depende" é que, se X depende de Y, Y deve ser totalmente configurado antes que X seja configurado. (A configuração é a etapa de instalação em que um pacote, uma vez que seus arquivos são descompactados nos locais apropriados - ou seja, uma vez "instalados" - realiza as outras alterações necessárias para que seja possível usar o software que ele fornece. Por exemplo , a configuração de um servidor HTTP pode envolver a garantia de que há um www
usuário com as habilidades adequadas e um /var/www
diretório com permissões adequadas.) Por outro lado, se o X depende previamente de Y, ele deve ser instalado e (geralmente) totalmente configurado antes que o X seja executado. instalado .
Veja a Seção 7.2 do Manual de Políticas Debian para mais detalhes. Cito as duas seções mais relevantes aqui, mas há outras informações nessa seção (e no capítulo 7 em geral) que ajudam a esclarecer como as dependências funcionam.
Depends
Isso declara uma dependência absoluta. Um pacote não será configurado a menos que todos os pacotes listados em seu
Depends
campo tenham sido configurados corretamente (a menos que exista uma dependência circular conforme descrito acima).O
Depends
campo deve ser usado se o pacote dependente for necessário para que o pacote dependente forneça uma quantidade significativa de funcionalidade.O
Depends
campo também deve ser usado se os scriptspostinst
ouprerm
exigirem que o pacote dependente seja descompactado ou configurado para ser executado. No caso do postinst configure, os pacotes dependentes serão descompactados e configurados primeiro. (Se os dois pacotes estiverem envolvidos em um loop de dependência, isso pode não funcionar como esperado; veja a explicação alguns parágrafos atrás.) No caso deprerm
ou de outraspostinst
ações, as dependências do pacote normalmente serão pelo menos descompactadas, mas podem ser apenas "Semi-instalado" se uma atualização anterior da dependência falhar.Por fim, o
Depends
campo deve ser usado se o pacote dependente for necessário para opostrm
script limpar completamente após a remoção do pacote. Não há garantia de que as dependências do pacote estejam disponíveis quandopostrm
executadas, mas é mais provável que o pacote dependente esteja disponível se o pacote declarar uma dependência (principalmente no caso depostrm remove
). Opostrm
script deve ignorar ações que requerem dependência, se essa dependência não estiver disponível.
Pre-Depends
Esse campo é semelhante
Depends
, exceto que ele também forçadpkg
a conclusão da instalação dos pacotes nomeados antes mesmo de iniciar a instalação do pacote que declara a pré-dependência, da seguinte maneira:Quando um pacote que declara uma pré-dependência está prestes a ser descompactado, a pré-dependência pode ser satisfeita se o pacote dependente estiver totalmente configurado ou mesmo se o (s) pacote (s) dependente (s) forem descompactados apenas ou no "Meio -Configurado ", desde que tenham sido configurados corretamente em algum momento no passado (e não removidos ou parcialmente removidos desde então). Nesse caso, as versões configuradas anteriormente e atualmente descompactadas ou "semi-configuradas" devem atender a qualquer cláusula de versão no
Pre-Depends
campo.Quando o pacote que declara uma pré-dependência está prestes a ser configurado , a pré-dependência será tratada como normal
Depends
. Será considerado satisfeito apenas se o pacote dependente tiver sido configurado corretamente. No entanto, ao contrário deDepends
,Pre-Depends
não permite que dependências circulares sejam quebradas. Se uma dependência circular for encontrada ao tentar honrarPre-Depends
, a instalação será abortada.
Pre-Depends
também serão necessários se opreinst
script depender do pacote nomeado. É melhor evitar essa situação, se possível.
Pre-Depends
deve ser usado com moderação, de preferência apenas por pacotes cuja atualização ou instalação prematura prejudicaria a capacidade do sistema de continuar com qualquer atualização que possa estar em andamento.Você não deve especificar uma
Pre-Depends
entrada para um pacote antes que isso seja discutido nadebian-devel
lista de discussão e que um consenso sobre isso seja alcançado. Veja Dependências, Seção 3.5 .