He leído las respuestas enesta publicaciónpero no parece funcionar para mi problema.
Estoy ejecutando un script bash a través de stdin desde wget:
wget -O - http://serverip/subfolder/script | sudo bash
Intenté usar apt-get -y --force-yes install <packages..> || true
, pero aún sale del script si uno de los enumerados está instalado mediante apt-get.
No sale del script si todos los paquetes enumerados ya están instalados.
Lo mismo sucede si tengo un apt-get upgrade
e instala paquetes. Saldrá del script.
Tengo otro conjunto de scripts que parecen funcionar. En ese escenario, el script de instalación es solo un código auxiliar, que se descarga, ejecuta el script y bash <scriptname>
luego lo elimina. El script en sí elevará su privilegio al hacer sudo. apt-get
funciona como se esperaba aquí.
apt-get
Se agradecería cualquier idea sobre cómo evitar que el script finalice.
Respuesta1
Ojalá la gente dejara de hacer: wget | bash
. Es simplemente una tontería y tiene efectos no deseados como el de aquí. Tienes bash, así que aprovecha sus funciones. En particular, sustitución de procesos:
bash <(wget -O - http://serverip/subfolder/script)
Respuesta2
Probablemente sólo necesites dejar apt-get
de leer con avidez la entrada estándar. Haga esto redirigiendo stdin a /dev/null
, un archivo que devuelve eof a las lecturas. P.ej:
apt-get -y --force-yes install ... </dev/null