Como peço ao apt-get para pular todas as etapas de configuração pós-instalação?


11

Ao instalar alguns pacotes (como o RabbitMQ) em máquinas Debian / Ubuntu, a post-installetapa padrão é iniciar o serviço.

Embora isso seja ótimo na maioria dos casos, em alguns casos (quando você já possui um serviço em execução na porta necessária, por exemplo), isso falha, o que faz com que apt-getfalhe completamente.

Existe uma maneira de dizer apt-getpara pular todas essas post-installetapas para que ele ainda possa ser instalado corretamente?

Nota Não se trata de perguntas durante a instalação, mesmo em sessões interativas, essas instalações falham porque a post-installfalha na etapa não é tratada corretamente




1
Essa pergunta é semelhante, mas diferente. Trata-se de pular todas as etapas, não apenas as interativas. Algumas tarefas executam automaticamente scripts que nem sempre são desejados.
Wolph

Respostas:


8

Como peço ao apt-get para ignorar as etapas interativas da configuração pós-instalação?

export DEBIAN_FRONTEND=noninteractive
apt-get install -y [packagename]

Edit : sim, isso foi para pular (bem, automatizar) perguntas pós-instalação , é verdade - desculpe.

Não há como ignorar scripts de pós-instalação . A política oficial do Debian é editar o script para retornar um erro não terminal ou corrigir o script. Consulte http://www.debian-administration.org/articles/251

Parece que você está automatizando isso para muitos servidores; nesse caso, você provavelmente desejará criar sua própria versão do pacote e implantá-la. Outra opção é enviar um email ao mantenedor do pacote e discutir se uma falha ao iniciar deve ser um erro de terminal para a pós-instalação (não acredito que seja para outros pacotes como apache ou lighttpd, por exemplo, mas posso estar errado .)


Isso é apenas para pular as etapas interativas. Esse não é o problema aqui, são as post-installetapas não interativas que falham se algo como service rabbitmq-server startfalhar.
Wolph

Atualizada. Isso ajuda?
Brett Dikeman

é melhor saber que não é possível do que se perguntar se é :) Obrigado pela ajuda.
Wolph

Se você estiver usando sudo a exportação da variável de ambiente não vai funcionar, mas você pode fazê-lo desta maneira:sudo DEBIAN_FRONTEND=noninteractive apt-get -y [packagename]
aculich

4

O que você pode querer fazer é algo com o policy-rc.d . Consulte a página do manual para invoke-rc.d. Você pode definir uma política para que os serviços não sejam iniciados automaticamente.


Essa é uma maneira de contornar isso, mas seria uma medida temporária, presumo? Pelo menos ... Eu acho que dessa maneira você desativaria globalmente todos os serviços iniciados.
Wolph

2

isso deve funcionar

echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
apt-get install <packagename>
rm -f /usr/sbin/policy-rc.d

Um pouco hacky e muito específico para este caso, mas ajuda bastante! Obrigado :)
Wolph
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.