O que exatamente acontece quando exec exec a atualização?

2

O que acontece com o pacote quando eu atualizo, em vez de remover e reinstalar? Qual é a diferença real entre os dois? Como os resultados serão diferentes?

Estão seguindo duas opções iguais (pelo pacote preinst / postint / prerm / postrm etapas)?

apt-get update
apt-get remove <packagename>
apt-get install <packagename>

e

apt-get update
apt-get install --only-upgrade <packagename>

Você pode manipular o comando de atualização especialmente? É possível fazer um manipulador para atualização em vez de excluir e instalar?

    
por Sild 27.07.2015 / 11:31

3 respostas

3

Atualizar um pacote não é o mesmo que remover e depois instalá-lo. A atualização cuida para minimizar o tempo durante o qual o pacote não está totalmente operacional, ao passo que a remoção e a instalação deixam uma janela durante a qual nenhum dos arquivos do pacote está presente. Além disso, eles não executam os mesmos scripts do mantenedor: o upgrade executa os scripts do mantenedor (antigo prerm , novo preinst , antigo postrm , novo postinst ) com a ação upgrade , ao passo que removê-lo a reinstalação executa o antigo prerm remove , antigo postrm remove , novo preinst install , novo postinst configure . Veja o manual de políticas do Debian para detalhes, ou o wiki para diagramas.

Se você estiver fazendo pacotes deb e quiser fazer algo especial em uma atualização, faça isso para a ação upgrade do script do mantenedor relevante (geralmente postinst para atualizar os arquivos de configuração e reiniciar os daemons).

    
por 28.07.2015 / 02:28
3

Para responder à sua pergunta, dpkg chama os mesmos scripts (por pacote) se você está usando --only-upgrade com apt ou não. Não faz diferença. --only-upgrade afeta apenas os pacotes em que apt opera. Como a man page diz:

--only-upgrade
       Do not install new packages; when used in conjunction with 
       install, only-upgrade will install upgrades for already 
       installed packages only and ignore requests to install new 
       packages. Configuration Item: APT::Get::Only-Upgrade.

Quando dpkg remove um pacote, os scripts correspondentes do prerm / postrm desse pacote são chamados. Quando dpkg instala um pacote, os scripts preinst / postint correspondentes são chamados. E mais uma vez, tudo isso é executado por dpkg . apt opera em um nível mais alto.

    
por 27.07.2015 / 12:42
1

"upgrade" significa atualizar todos os pacotes que possuem versões mais novas disponíveis nos repositórios de pacotes configurados, além daqueles que você instalou atualmente.

"instalar" significa adicionar um pacote específico (com a última versão disponível) ou atualizar para essa versão se uma versão anterior do pacote já estiver instalada.

Remover um pacote instalado, antes de executar a instalação para atualizá-lo, é desnecessário e pode ter efeitos colaterais desagradáveis.

É uma boa prática executar "upgrade" regularmente, para obter atualizações de segurança para todos os pacotes que você instalou.

    
por 27.07.2015 / 12:06

Tags