Script pré-inst do mantenedor do pacote `install` vs `upgrade`

Script pré-inst do mantenedor do pacote `install` vs `upgrade`

De acordo com o pacote Debiandocumentação do script do mantenedor, o script de pré-instalação pode ser chamado com o installou o upgradeprimeiro argumento:

O preinstscript pode ser chamado das seguintes maneiras:

  • new-preinstinstalar
  • new-preinstinstalarversão antiga nova versão
  • new-preinstatualizarversão antiga nova versão

Qual é a diferença entre install old-version new-versione upgrade old-version new-version? A primeira forma (apenas install) parece clara, mas não entendo a diferença entre installe upgradeonde os números de versão antigos e novos também são especificados.

Responder1

Isto é explicado ema seção “detalhes”:

  • se o pacote já estiver totalmente instalado, preinsté chamado com upgradeas versões antiga e nova;
  • se o pacote foi instalado anteriormente e ainda possui seus arquivos de configuração (está no estado “Config-Files”,ou sejaaparece como rcna dpkg -lsaída de), preinsté chamado com installas versões antiga e nova;
  • se o pacote estiver sendo instalado recentemente ou tiver sido eliminado anteriormente, preinstserá chamado com installe sem informações de versão.

Já que preinsté executado antes da fase de descompactação, upgradeindica que uma versão anterior do conteúdo do pacote está disponível, enquanto installindica que nenhuma versão do conteúdo do pacote está presente (além dos arquivos de configuração). Separadamente, se forem fornecidas informações sobre a versão, isso indica que pode haver arquivos de configuração que precisam ser manipulados.

Não há muitos cenários em que a diferença entre upgradee installseja significativa, mas um que vem à mente são as atualizações que envolvem a exportação de dados. Por exemplo, no upgrademodo,slapd's preinstexporta seus bancos de dados; não pode fazer isso no installmodo porque as ferramentas apropriadas não estão presentes.

Responder2

Considerar:

  1. Você instala o pacote A, versão x.
  2. Você remove o pacote A, mas sem purgar, então conffiles, usuários, grupos etc.
  3. Você instala o pacote A, versão y.

Agora os scripts do mantenedor precisam lidar com esses conffiles, usuários, grupos, etc., embora, estritamente falando, você não esteja atualizando, mas apenas instalando. Você pode ver isso no segundo fluxograma aqui:"Instalando um pacote que foi removido anteriormente, mas não eliminado"

informação relacionada