Estou tentando instalar um pacote sem ser solicitado. A resposta que encontrei online foi usar isto, que está funcionando perfeitamente bem para o pacote que estou instalando;
DEBIAN_FRONTEND=noninteractive apt install myPackage -y
No entanto, recentemente mudei para outro provedor de nuvem e executar o mesmo comando no mesmo servidor Ubuntu 20.04 não produz o mesmo resultado. Desta vez, falha. Acredito que eles estejam usando versões diferentes do Ubuntu 20.04 (provavelmente regular vs minimal). Por "falha", quero dizer que ainda me avisa, mesmo quando executado a partir de um script bash.
Tentei métodos diferentes, como os seguintes, mas nada responde à última pergunta que o pacote está fazendo, que é simplesmente uma pergunta sim/não, e mesmo na GUI interativa, não consigo simplesmente pressionar enter
para responder yes
. Isso me força a digitar yes
. Além disso, o comando acima ainda me exibe a GUI de texto em preto e branco, embora eu tenha noninteractive
definido.
Métodos que tentei e que não funcionaram;
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo apt-get install -y myPackage
yes yes | sudo DEBIAN_FRONTEND=noninteractive apt-get install -y myPackage
DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get --option=Dpkg::Options::=--force-confold --option=Dpkg::options::=--force-unsafe-io --assume-yes --quiet install myPackage
Como posso fazer isso funcionar para que eu possa responder às perguntas apenas com respostas padrão sem ser solicitado? Estava funcionando bem em um servidor Ubuntu 20.04, mas não está funcionando em outro de um provedor diferente.
A instalação
apt-utils
resolveu o problema. Agoranoninteractive
funciona como pretendido.Acho que você deve conseguir fazer apenas:
Acredito que qualquer uma das variáveis de ambiente 'exportadas' será descartada assim que você entrar no campo 'sudo', porque é um espaço de usuário diferente.
Parece semelhante a aqui: https://stackoverflow.com/questions/70236670/debian-frontend-noninteractive-not-working-inside-shell-script-with-apt-get
apt e seus derivados (
apt-get
,apt-cache
, ...) são apenas frontends para o gerenciador de pacotes Debian, que édpkg
. Você pode usarpara instalar um arquivo de pacote que você baixou do servidor do repositório.
Veja
man dpkg
para mais informações sobre isso.Você está fazendo tudo certo com
DEBIAN_FRONTEND=noninteractive apt-get install -y
! Qualquer pacote .deb correto usariaapt-get
os recursos do para falar com você (o usuário), e quando você disserapt-get
(ouapt
) (ou melhor, o comando subjacentedpkg
, não que isso importe aqui) que você não quer ser perguntado, isso resolveria o problema. Problema resolvido!No entanto, como demonstrado, há fornecedores de software que apenas criam pacotes quebrados. Se este for um pacote dos repositórios de software do Ubuntu, então isso justificaria um relatório de bug, e o pacote deve ser corrigido bem rápido.
A abordagem estúpida de "digitar yes" me leva a acreditar que este é um pacote de terceiros com alguma
besteira de licença...um wrapper de EULA questionável.O que acontece aqui é o seguinte: um pacote é apenas um arquivo compactado, com
E no seu caso, há um pacote que tem um script, pós ou pré-instalação, que faz perguntas desagradáveis.
Então, nossa missão é modificar o pacote!
CONTINUA; TENHO QUE SAIR AGORA