Como posso automatizar dpkg / apt-get?
Pergunta
Eu estou tentando criar um script que baixa automaticamente pacotes para novos servidores. No entanto, algumas coisas como 'mysql-server' não pode automaticamente instalado porque você precisa configurá-los nos ncurses primeira interface. Eu olhei através das páginas man e não consigo encontrar nada adequado.
Eu não me importo se eu tiver que carregar / editar um arquivo conf mais tarde -. Eu só preciso os pacotes apropriados instalados
Qualquer um sabe o que fazer além agarrando tarballs e construir-los eu mesmo?
Atualização Descobri que para coisas como mysql-server você pode apenas fazer:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
No entanto esperar parece algo que vou precisar para o sol-java6-jdk; Não avaliamos ainda
Solução
Para pacotes que fazem perguntas através de debconf (que é o que coloca as ncurses exibir), você pode pré-responder as perguntas. Para sol-java, as perguntas podem ser pré-respondidas, seguindo as instruções em http://www.davidpashley.com/blog/debian/java-license
Outras dicas
Resposta de ossramblings.com :
Primeiro, instale seu pacote normalmente; em seguida, extrair as respostas de configuração dos arquivos de dados debconf:
sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
Em seguida, para outras instalações, você pode aplicá-lo antes de instalar o pacote:
sudo debconf-set-selections ./something.seed
Qualquer pacote Debian que usos debconf
para obter valores de configuração pode ser executado sem supervisão. O truque é que debconf
irá primeiro procurar pré-instalado respostas para qualquer configuração questão que um determinado pacote tem.
Pré-instalar respostas de configuração
Basta criar um arquivo no seguinte formato,
# Use one line for each question
package-name question-name question-type answer
package-name question-name question-type really long \
answer here
package-name question-name question-type answer
...
e alimentá-lo para o sistema assim:
$ debconf-set-selections my-selections-file
Agora, você está pronto para apt-get install
, como de costume.
One-off
Uma vez que este comando também lê de stdin, você pode fazer:
$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections
Encontrar respostas padrão
Como você sabe quais pacotes usar essas respostas de configuração? Bem, se você já tiver instalado o pacote em questão de forma interativa, você pode consultar o seu sistema local para ver o que os valores são actualmente configurado. debconf-get-selections
imprime uma lista de todas as respostas de configuração para o sistema atual. Por exemplo
$ debconf-get-selections | grep '^man'
retorna o seguinte no meu sistema:
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Pode ser necessário instalar o pacote debconf-utils
para fazer este comando disponíveis.
Amostra
# Preset values to questions which would otherwise be asked while
# installing packages.
# Use debconf-set-selections to install
openssh-server openssh-server/permit-root-login boolean false
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Fontes
- Anthony Towns' & link-podre pouco
- debconf-set-selecções ( 1)
- Duplicate resposta em ServerFault
Eu não sei exatamente o que configuração necessidades mysql-servidor, mas você pode tentar algo como esperar
Gostaria de olhar para cron-apt . Eu não tentei isso sozinho, mas é de descrição de pacotes parece promissor.