Como reiniciar manualmente os serviços afetados pelos upgrades apt?

6

Como posso editar atualizações do apt sem parar / iniciar os daemons automaticamente? Gostaria de reiniciar manualmente os serviços.

Para citar um exemplo específico:

Vou revisitar uma máquina de longa duração e executar sudo apt-get update && time sudo apt-get dist-upgrade . Este é um meio muito direto de ver todas as atualizações disponíveis, seguido por uma simples tecla Enter para obter os sistemas totalmente corrigidos.

Se eu vir postgresql-9.1 na lista de atualização, eu aborto a atualização. Nesse caso, o apt interromperia o serviço no início do processo, aplicaria várias operações não críticas e reiniciaria o serviço muito mais tarde. Uma atualização de rotina pode causar minutos de inatividade.

Gostaria de dizer "sim" à atualização para que todos os patches sejam aplicados e reinicie o serviço manualmente em um horário conveniente.

    
por rduplain 06.12.2012 / 18:23

3 respostas

10

Você pode impedir a reinicialização do serviço com a camada de política do Debian que também funciona no Ubuntu.

Exemplo: Crie um arquivo chamado /usr/sbin/policy-rc.d com o seguinte conteúdo (não esqueça de tornar o arquivo executável):

#!/bin/sh

exit 101

Nenhum serviço¹ seria iniciado / interrompido / reiniciado automaticamente. Veja /usr/share/doc/sysv-rc/README.policy-rc.d.gz para detalhes e como ajustá-lo para simplesmente ignorar um único serviço.

1. contanto que os scripts de instalação sigam as diretrizes Debian e usem invoke-rc.d para reinicializações de serviço

    
por tlo 12.02.2013 / 18:52
2
  

Eu gostaria de dizer "sim" ao upgrade para que todos os patches sejam aplicados.   manualmente reinicie o serviço em um horário conveniente.

Você não pode fazer isso no caso geral, desculpe. Mesmo que um serviço não seja reiniciado, os pacotes não oferecem nenhuma garantia de que as atualizações sem reinicializações de serviço não quebrarão as coisas (por exemplo, qualquer coisa carregada dinamicamente, como módulos).

Se você deseja um sistema estável, deve-se reter a atualização de um pacote ou atualizá-lo totalmente, com a reinicialização do serviço.

Eu não posso realmente apontar para uma fonte credível aqui, já que não posso provar um negativo. A política Debian é relevante aqui; simplesmente não fornece a garantia que você está procurando. De acordo com a política Debian, a funcionalidade de um pacote não é necessária para funcionar até que o postinst seja concluído com sucesso. Assim, podemos inferir que, se o postinst incluir uma reinicialização obrigatória do serviço, isso precisa acontecer.

Alguns outros mecanismos que podem ajudar você:

  1. Use apt-get --download-only upgrade para fazer o download das atualizações com antecedência.
  2. Mantenha pacotes específicos de volta dos upgrades.
  3. Observe a "alta disponibilidade", para que os servidores possam ser atualizados sem interromper o serviço. Com o Postgres, isso provavelmente envolveria algum tipo de configuração replicada.
por Robie Basak 12.02.2013 / 18:33
1

Existe uma ferramenta baseada em CLI chamada sysv-rc-conf . Você também pode instalá-lo executando o seguinte comando no terminal:

sudo apt-get install sysv-rc-conf

Então você pode ativar / abrir executando:

sudo sysv-rc-conf

Screenshot:

    
por Ten-Coin 06.12.2012 / 18:34