Qual é a diferença entre dependências e pré-dependências?

12

O que significa "depende" e "pré-depende", e a diferença entre esses 2 tipos de requisitos de pacotes quando eu estou instalando algo no Ubuntu?

    
por Bruno Pereira 28.11.2011 / 22:51

2 respostas

17

Como retirado deste link: link

Existem 5 tipos de dependências:

O significado dos cinco campos de dependência é o seguinte:

Depende

  • Isto declara uma dependência absoluta. Um pacote não será configurado a menos que todos os pacotes listados em seu campo Dependentes tenham sido configurados corretamente. O campo Depende deve ser usado se o pacote dependente for necessário para o pacote dependente fornecer 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 de configuração postinst, os pacotes dependentes serão descompactados e configurados primeiro.

  • No caso de prerm ou outras ações postinst, as dependências de pacote normalmente serão pelo menos descompactadas, mas elas podem ser apenas "Half-Installed" se um upgrade anterior da dependência falhar. Por fim, 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 de pacotes estarão disponíveis quando postrm for executado, mas o pacote dependido estará mais disponível se o pacote declarar uma dependência (particularmente no caso de remoção postrm). O script postrm deve ignorar as ações que exigem uma dependência, se essa dependência não estiver disponível.

Recomenda

  • Isso declara uma dependência strong, mas não absoluta. O campo Recomenda deve listar os pacotes que seriam encontrados juntos com este em todas as instalações, menos as incomuns.

Sugere

  • Isso é usado para declarar que um pacote pode ser mais útil com um ou mais outros. Usar esse campo informa ao sistema de empacotamento e ao usuário que os pacotes listados estão relacionados a este e podem, talvez, melhorar sua utilidade, mas que instalar este sem eles é perfeitamente razoável.

Melhora

  • Este campo é semelhante ao Suggests, mas funciona na direção oposta. É usado para declarar que um pacote pode melhorar a funcionalidade de outro pacote.

Pré-Depende

  • Este campo é como Depends, exceto que também força o dpkg a completar a instalação dos pacotes nomeados antes mesmo de iniciar a instalação do pacote que declara a pré-dependência , ele funciona como isto, quando um pacote que declara uma pré-dependência está prestes a ser descompactado, a pré-dependência pode ser satisfeita se o pacote dependido estiver totalmente configurado, ou mesmo se o (s) pacote (s) dependido (s) for descompactado ou no pacote Estado "Half-Configured", desde que eles tenham sido configurados corretamente em algum ponto no passado (e não removidos ou parcialmente removidos desde então).

  • Nesse caso, as versões configuradas anteriormente e atualmente descompactadas ou "Half-Configured" devem atender a qualquer cláusula de versão no campo Pre-Depends. Quando o pacote que declara uma pré-dependência está prestes a ser configurado, a pré-dependência será tratada como uma Depend normal. Ele será considerado satisfeito somente se o pacote dependido tiver sido configurado corretamente. No entanto, ao contrário do Depends, o Pre-Depends não permite que as dependências circulares sejam quebradas. Se uma dependência circular for encontrada durante a tentativa de honrar as pré-dependências, a instalação será cancelada.

  • As pré-dependências também são necessárias se o script preinst depender do pacote nomeado. É melhor evitar essa situação, se possível. As pré-dependências devem ser usadas com parcimônia, 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:

  • Ambos dependem e pre-depends mencionam as dependências que um pacote precisa antes de instalar, mas pré-depende força a instalação e configuração dos pacotes de dependência antes mesmo de iniciar o pacote que precisa das dependências. O dpkg não irá descompactar o pacote principal até que todos os pacotes pré-dependentes tenham sido tratados. Com depends, a ordem dos pacotes de dependência e a principal não é importante. Com o pre-depends leva em consideração isso e também a verificação se os pacotes pre-depends estão configurados e instalados ou não. Sem isso, o pacote principal não será descompactado, configurado ou instalado. Você deve ter as dependências instaladas antes de iniciar o processo de trabalho com o pacote principal. Caso contrário, eles precisam ser baixados / configurados / instalados primeiro antes de continuar.As pré-dependências são normalmente usadas nos casos em que a estabilidade do pacote é importante e não afetaria o sistema ou programa de maneira muito ruim, mas esses casos são evitados com várias normas também mencionadas no link acima.
por Luis Alvarado 28.11.2011 / 23:15
3

O termo "dependência" pode ser usado amplamente para abranger os relacionamentos "Depende" e "Pré-Depende" (e às vezes até mesmo relacionamentos mais fracos), ou pode ser usado estreitamente como sinônimo de "Depende".

A diferença entre os relacionamentos de pacotes "Depends" e "Pre-Depends" é que, se X depende de Y, Y deve ser totalmente configurado antes de X ser configurado. (Configuração é a etapa de instalação em que um pacote, uma vez que seus arquivos são descompactados para os locais apropriados - ou seja, uma vez "instalado") possui quaisquer outras alterações necessárias feitas para que seja possível realmente usar o software fornecido. , a configuração de um servidor HTTP pode envolver garantir que haja um usuário www com habilidades adequadas e um diretório /var/www com permissões adequadas. Em contraste, se X pré-depende de Y, então Y deve ser instalado e (geralmente) totalmente configurado antes de o X ser instalado .

Consulte Seção 7.2 do Manual de Normas Debian para obter mais detalhes . Cito as duas seções mais relevantes aqui, mas há outras informações nessa seção (e no capítulo 7, mais geralmente) que ajudam a esclarecer como funcionam as dependências.


  

Depends

     

Isto 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 (a menos que haja uma dependência circular, conforme descrito acima).

     

O campo Depends deve ser usado se o pacote dependente for necessário para o pacote dependente fornecer uma quantidade significativa de funcionalidade.

     

O campo Depends também deve ser usado se os scripts postinst ou prerm exigirem que o pacote depended-on seja descompactado ou configurado para ser executado. No caso de configuração postinst, os pacotes dependentes serão descompactados e configurados primeiro. (Se ambos os pacotes estiverem envolvidos em um loop de dependência, isso pode não funcionar como esperado; consulte a explicação de alguns parágrafos.) No caso de prerm ou outras postinst actions, as dependências de pacote normalmente serão descompactadas pelo menos , mas eles podem ser apenas "Half-Installed" se um upgrade anterior da dependência falhou.

     

Por fim, 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 de pacotes estarão disponíveis quando postrm for executado, mas o pacote dependido estará mais propenso a estar disponível se o pacote declarar uma dependência (particularmente no caso de postrm remove ). O script postrm deve pular normalmente as ações que exigem uma dependência, se essa dependência não estiver disponível.


  

Pre-Depends

     

Este campo é como Depends , exceto que também força dpkg a concluir a instalação dos pacotes nomeados antes mesmo de iniciar a instalação do pacote que declara a pré-dependência, da seguinte forma:

     

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) dependido (s) é (ão) descompactado (s) ou no estado "Meio Configurado", desde que eles tenham sido configurados corretamente em algum ponto no passado (e não removidos ou parcialmente removidos desde então). Nesse caso, as versões configuradas anteriormente e atualmente descompactadas ou "Half-Configured" devem satisfazer qualquer cláusula de versão no campo Pre-Depends .

     

Quando o pacote que declara uma pré-dependência estiver prestes a ser configurado , a pré-dependência será tratada como% normal co_de%. Ele será considerado satisfeito somente se o pacote dependido tiver sido configurado corretamente. No entanto, diferentemente de Depends , Depends não permite que as dependências circulares sejam quebradas. Se uma dependência circular for encontrada ao tentar honrar Pre-Depends , a instalação será abortada.

     

Pre-Depends também são necessários se o script Pre-Depends depender do pacote nomeado. É melhor evitar essa situação, se possível.

     

preinst 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 entrada Pre-Depends para um pacote antes que isso seja discutido na lista de e-mail Pre-Depends e um consenso sobre isso foi alcançado. Veja Dependências, Seção 3.5 .

    
por Eliah Kagan 28.11.2011 / 23:23