Automatize o proftpd-basic no ubuntu usando o apt-get

4

Eu estou tentando construir um script de shell para automatizar a instalação de vários pacotes em um servidor Ubuntu 10.04, e estou tendo problemas com o proftpd-basic.

Estou usando a linha de comando

apt-get -qy install proftpd-basic >/tmp/install.log

Para a maioria dos pacotes, essa abordagem funciona bem, mas o proftpd-basic parece exigir alguma interação (ele pergunta se deve executar uma instalação inetd ou standalone).

É possível pré-selecionar essa opção na linha de comando de alguma forma, já que não quero que o usuário seja incomodado por essa pergunta? - Para informações, se for importante, desejo escolher a opção "autônoma".

Editar:

A parte interativa do processo não requer apenas respostas simples do tipo y / n, requer que eu use as teclas de seta para navegar até a opção que quero, exigindo que eu pressione enter para fazer a seleção. Isso pode ter algum efeito sobre a solução para esse problema.

    
por Bryan 03.05.2010 / 17:51

2 respostas

10

Você pode "preseed" respostas para que debconf veja que você já tenha respondido a pergunta, e não se incomode em perguntar novamente.

Você precisa de algumas ferramentas do pacote debconf-utils :

sudo apt-get install debconf-utils

Instale seu programa e responda manualmente às perguntas uma vez. Então, você pode perguntar ao debconf o que ele armazenou em seu banco de dados:

debconf-get-selections | grep proftpd-basic

Essa informação pode ser inserida em debconf-set-selections (por canalização ou leitura de um arquivo).

A resposta da Warner é mais cross-platform (o debconf é uma tecnologia apenas para o Debian e derivados), mas nem sempre funciona entre as versões, se as questões mudarem; ou no caso de você ter algumas questões debconf que são apenas perguntadas se você tem outros pacotes instalados.

    
por 03.05.2010 / 18:25
3

Existe uma variedade de soluções diferentes para coisas como esta. Eu prefiro scripts de shell, outros podem preferir outros métodos.

Para interação com coisas que exigem entrada e não tem sinalizadores para especificar a resposta, você pode redirecionar a entrada. Gostaria de ler a página do apt-get antes de usar essa abordagem, pois ela pode ter suporte nativo para o que você está tentando especificar. Por exemplo:

apt-get -qy install proftpd-basic <<**
RESPONSES GO HERE
**

Você também pode usar algo como espera . Alguns clientes nem sempre manipulam o redirecionamento de entrada sem esforço adicional.

Para o registro, você pode usar tee e redirecionar STDERR e STDOUT ao executar o script principal. Exemplo:

bash -x script.sh 2>&1 | tee script.log

Eu também gosto de executar o bash com set -x também. Para scripts de construção, prefiro verbosidade sobre a saída mais limpa.

    
por 03.05.2010 / 18:04