Instalação silenciosa para o apt-get

0

Para o trabalho, tenho que preparar muitos PCs. Eu tenho que empurrar um bando de comandos sudo apt-get install para o terminal - isso é muito entediante. Eu provavelmente poderia colocar todos eles em sh script (talvez), mas alguns dos comandos requerem adição de novo repositório ( sudo add-apt-repository ) ou adição de nova chave (??) via comando gpg - e eles exigem que o usuário pressione ENTER .

Qualquer maneira de dizer "sim" a tudo ou algo assim? Isso provavelmente exigiria adicionar algumas opções aos comandos apt-get e gpg?

    
por user1463822 17.12.2014 / 10:39

2 respostas

0

Com exceção de uma instalação personalizada de um sistema pré-configurado, eu provavelmente usaria um script de instalação em cada sistema.

Quais são os comandos que precisam pressionar enter? A ajuda de add-apt-repository anuncia que é -y opção:

$ sudo add-apt-repository --help
Usage: add-apt-repository [options] repository

Options:
  -h, --help  show this help message and exit
  -y, --yes   force yes on all confirmation questions

O link de ajuda abaixo diz que para adicionar PPAs "Se uma chave pública for necessária e estiver disponível, ela será baixada e registrada automaticamente." Também existem pacotes como ubuntu-keyring , ubuntu-extras-keyring , linuxmint-keyring etc que contêm as chaves para vários repositórios. E man gpg deve informar como fazer isso para instalar automaticamente uma chave, se você estiver preso ao usá-la.

E / ou você pode editar os arquivos sources.list diretamente com sed / awk , ou se os sistemas forem idênticos, basta copiar os arquivos "acabados".
Esta página de ajuda do Ubuntu tem mais informações sobre como gerenciar repositórios de software a partir da linha de comando.

E se você está preparando muitos sistemas, posso supor que você só estará baixando os pacotes .deb uma vez, e instalando todos eles em cada máquina, em vez de atualizá-los e baixá-los para todos os sistemas? Se você tiver todos os .deb em uma pasta, este comando instalará todos eles:

  • sudo dpkg -iR [deb-directory]

FYI, eu costumava ver um pacote ímpar que esperaria por um enter antes de terminar a instalação, aparentemente ele estava dentro de um dos seus próprios scripts de configuração, e até apt-get --force-yes não trabalharia com isso. Você não tem nada desse tipo, sabe?

Ou, se você pretende apenas forçar um monte de pressionamentos de teclas em um terminal telnet (deve funcionar para outros métodos também), você pode usar um script bash como este:

{
echo "open 192.168.55.55"
sleep 0.5
echo "$login"
sleep 0.5
echo "$password"
sleep 0.5
echo "command1"
sleep 2
echo " "
sleep 5
echo "exit"
} | telnet

Usando tempos de espera diferentes para atrasos entre "digitação", ecoar um espaço com " " ou mesmo apenas eco deve enviar uma nova linha "retorno".

    
por Xen2050 17.12.2014 / 12:00
2

Você pode anexar as sinalizações --assume-yes e --force-yes para dizer automaticamente sim a todos.

sudo apt-get --assume-yes --force-yes install <packagename(s)>

Para tornar essas alterações permanentes, edite /etc/apt/apt.conf e adicione as linhas

APT::Get::Assume-Yes "true";    
APT::Get::force-yes "true";

Isto é o que a página man do apt-get diz -

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

   --force-yes
       Force yes; this is a dangerous option that will cause apt to
       continue without prompting if it is doing something potentially
       harmful. It should not be used except in very special situations.
       Using force-yes can potentially destroy your system! Configuration
       Item: APT::Get::force-yes.
    
por Rohith Madhavan 17.12.2014 / 10:46