Eu li as respostas emesta postagemmas não parece funcionar para o meu problema.
Estou executando um script bash via stdin do wget:
wget -O - http://serverip/subfolder/script | sudo bash
Eu tentei usar apt-get -y --force-yes install <packages..> || true
, mas ele ainda sai do script se um dos listados estiver instalado pelo apt-get.
Ele não sai do script se todos os pacotes listados já estiverem instalados.
A mesma coisa acontece se eu tiver um apt-get upgrade
e ele instalar pacote(s). Isso sairá do script.
Eu tenho outro conjunto de scripts que parece funcionar. Nesse cenário, o script de instalação é apenas um stub, que baixa, executa o script e bash <scriptname>
depois o exclui. O próprio script aumentará seu privilégio sudoando-se. apt-get
funciona como esperado aqui.
Qualquer ideia sobre como evitar apt-get
o encerramento do script será apreciada.
Responder1
Gostaria que as pessoas parassem de fazer: wget | bash
. É simplesmente bobo e tem efeitos indesejados como este aqui. Você tem o bash, então use seus recursos. Em particular, substituição de processo:
bash <(wget -O - http://serverip/subfolder/script)
Responder2
Você provavelmente só precisa parar apt-get
de ler avidamente a entrada padrão. Faça isso redirecionando stdin para /dev/null
, um arquivo que retorna eof para leituras. Por exemplo:
apt-get -y --force-yes install ... </dev/null