¿Puedo hacer una actualización de lanzamiento silenciosa o desatendida?

31

¿Cómo actualizo a una nueva versión de Ubuntu sin tener que reaccionar a las indicaciones?

Ahora estoy en 12.04 y me gustaría instalar 12.10. Cuando inicio la actualización, generalmente descarga cosas, luego hace una pregunta, se instala un poco, hace una pregunta, etc. Me gustaría simplemente iniciar el proceso, irme y tenerlo terminado después de un par de horas. Estoy de acuerdo con que actualice automáticamente los archivos de configuración en / etc y así sucesivamente. Entonces, ¿cómo comenzar una actualización desatendida?

jdm
fuente

Respuestas:

42

El siguiente comando se actualiza a la nueva versión estable sin avisos:

do-release-upgrade -f DistUpgradeViewNonInteractive

El siguiente comando se actualiza a la versión de desarrollo actual sin avisos:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

No lo he probado, pero parece que solo realiza la acción predeterminada cuando surge una pregunta. También agota el tiempo de espera de los scripts si se cuelgan durante demasiado tiempo.

Es posible que tenga que usarlo dpkg-reconfiguredespués si no está satisfecho con la configuración de ciertos paquetes, pero la mayoría de las veces debería estar bien.

Fuente: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ . En el enlace también hay otras formas de hacer esto.

jdm
fuente
Evite hacer referencia al contenido de los enlaces, pero incluya también la información relevante para evitar que se pierda información si no se puede acceder al sitio.
k0pernikus
Hice esto y todo pareció funcionar, pero después de un reinicio solo obtuve un error de grub , por lo que parece que tiene que agregar más configuración de grub después de esta actualización desatendida. tal vez con sudo apt-get install grub-emu?
rubo77
66
Esto no funciona para Trusty => Xenial. Todavía recibo preguntas sobre archivos modificados / etc.
Willem
¿No debería esto ejecutarse con sudo?
Cerin
Con respecto a las preguntas sobre los archivos modificados / etc, hay una solución genial aquí: awaseroot.wordpress.com/2012/04/29/… . Ejecute el comando con 'echo "y \ n \ ny \ ny \ ny \ n" | 'delante de do-release-upgrade. Siembra las respuestas a las preguntas. Agregue muchas respuestas en caso de que haya muchos archivos modificados en / etc.
nmgeek
6

Solo para ampliar las respuestas anteriores, a continuación se explica cómo hacer remotamente lo mismo que la respuesta aceptada, utilizando una actualización sin contraseña a través de ssh que actualizará su caja a la última versión. Se copia de mi propia entrada de blog .

Todos estos pasos asumen que su repositorio de paquetes está funcionando. Es decir, si ejecuta apt-get update, no se le presentan muchos 404 debido a que tiene una versión desactualizada. Primero debes arreglar eso, así que mira esta respuesta para eso.

0. Actualizar todos los paquetes existentes

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

1. Configurar la ejecución sin contraseña

Agregue su auto a la lista de usuarios que pueden ejecutar do-release-upgrade usando sudo sin ingresar una contraseña se logra ejecutando

sudo visudo -f /etc/sudoers.d/do-release-upgrade.

y agregando la siguiente línea, sustituyendo my-username por el tuyo, por supuesto:

my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade

2. Iniciar actualizaciones incrementales

Cierre sesión y ejecute el siguiente comando desde su computadora. Hará una actualización sin pedirle que ingrese (aceptando todas las respuestas predeterminadas), espere a que la computadora se reinicie y luego intente actualizar nuevamente. Se ejecuta hasta que se actualice a la última versión.

while true; do 
    ssh my-user@my-server sudo do-release-upgrade -f DistUpgradeViewNonInteractive;
    sleep 120; 
done

3. Fijar los archivos de configuración a su estado anterior

Luego, tendrá que mover los archivos de configuración respaldados a su ubicación anterior ya que el proceso de actualización ha puesto las configuraciones predeterminadas en su lugar.

¿No está satisfecho con las respuestas predeterminadas?

Este tipo tiene una forma de preparar las respuestas para cada pregunta, pero el inconveniente es que debes saber cuántas preguntas hay ...

oligofren
fuente
5

Para confirmar lo que dice Thomas Ward en su respuesta y contradecir la respuesta aceptada, do-release-upgrade -d -f DistUpgradeViewNonInteractiveNO FUNCIONA.

De hecho, en el primer aviso, rompió mi partición de prueba de 16.04 a 18.04 rota y tuve que reclinarla. Aquí es donde el guión se congela:

Setting up mount (2.31.1-0.4ubuntu3) ...
Setting up systemd (237-3ubuntu10) ...
Installing new version of config file /etc/pam.d/systemd-user ...
Installing new version of config file /etc/systemd/journald.conf ...

Configuration file '/etc/systemd/logind.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION...

Debido a los inhibidores de entrada, ni el reinicio ni el apagado funcionarán después de eliminar el script. Debe hacer un apagado en frío (mantenga presionado el botón de encendido ~ 10 segundos).

Gracias a Dios, esta fue una actualización de clon 16.04 y no en la partición real 16.04.


Para hacer la vida aún más interesante, se agregó una nueva partición de 898 MB a mi SSD NVMe y mis particiones regulares cambiaron:

$ lsdrv
NAME        FSTYPE  LABEL                  MOUNTPOINT          SIZE MODEL

nvme0n1                                                        477G Samsung SSD 960 PRO 512G
├─nvme0n1p5 ntfs                                               858M 
├─nvme0n1p3                                                     16M 
├─nvme0n1p1 ntfs                                               450M 
├─nvme0n1p8 ntfs    Shared_WSL+Linux       /mnt/e                9G 
├─nvme0n1p6 ext4    Ubuntu18.04                               23.7G 
├─nvme0n1p4 ntfs    NVMe_Win10             /mnt/c            390.4G 
├─nvme0n1p2 vfat                           /boot/efi            99M 
├─nvme0n1p9 swap    Linux Swap             [SWAP]              7.9G 
└─nvme0n1p7 ext4    NVMe_Ubuntu_16.0       /                  44.6G 
  • nvme0n1p5 solía ser donde residía mi partición Ubuntu 16.04 pero ahora está en nvme0n1p7
  • nvme0n1p8 solía ser donde residía mi partición de prueba 18.04 pero ahora está en nvme0n1p8

NOTA: También actualicé Windows 10 de Build 1709 a Build 1803 esta tarde, por lo que es posible que haya creado la nueva nvme0n1p5partición de 898 MB en ntfsformato.

WinEunuuchs2Unix
fuente
Sin embargo, eso es muy grande, por lo que debe informarlo en Launchpad. Utilicé la forma no interactiva a través de varias actualizaciones de distribución anteriores
oligofren
¿actualizó ubuntu y windows en la misma caja el mismo día? debes disfrutar el dolor
JDS
@JDS Windows se enojó. Faltan 1700 actualizaciones, todo tipo de dependencias rotas Python 2 vs Python 3. Tengo que borrar y reinstalar Ubuntu 16.04 del suspiro de la Tienda Windows .
WinEunuuchs2Unix
2

Puede hacerlo a través de la terminal, usando sudo apt-get -y upgrade. Esto responderá "sí" a todas las indicaciones. Sin embargo, no se ejecutará automáticamente, por lo que debe ejecutarlo. Se debe trabajar. AFAIK no hay forma de usar el administrador de actualizaciones de la GUI para realizar actualizaciones desatendidas al software (¡ esto NO es lo mismo que una actualización de lanzamiento! )

Si está intentando actualizar a una versión diferente de Ubuntu (también conocida como una actualización de lanzamiento , y generalmente la próxima versión en la línea de lanzamientos relativa a su versión de Ubuntu), debe activarla manualmente . sudo do-release-upgradepodría funcionar. Sin embargo, no hay forma de saltear las indicaciones anteriores. Esta es la razón por la que inicia las actualizaciones cuando va a estar presente para tales avisos: habrá avisos.

Thomas Ward
fuente
1
"Sin embargo, no hay forma de saltear las indicaciones anteriores". ¿Qué pasa con el distintivo DistUpgradeViewNonInteractive? Eso omite las indicaciones.
oligofren
1
@oligofren Thomas tiene razón porque la -f DistUpgradeViewNonInteractivebandera hace que el script se bloquee en el primer (Y/I/N/O/D/Z)aviso. Vea mi respuesta que acabo de publicar.
WinEunuuchs2Unix
-4

Intente agregar la -yopción apt-getpero sepa que responderá ytodas las consultas.

blogger
fuente
1
Estoy usando el administrador de actualizaciones gráficas, no apt-get. Podría hacer la actualización en la consola, pero he escuchado que 'apt-get dist-upgrade' no funcionó en años (para actualizar entre versiones), por lo que el comando no sería 'apt-get'.
jdm
@jdm apt-get dist-upgradedebería funcionar bien. ¿Dónde estuviste aquí ya no funciona?
Seth
3
@Seth apt-get dist-upgradeno lo hace ahora y nunca, en ningún sistema operativo, realizó una actualización de lanzamiento por su cuenta. Ver man apt-get. upgradesolo actualiza los paquetes que se pueden actualizar sin instalar o desinstalar ningún paquete. dist-upgradeactualiza paquetes incluso cuando significa que los paquetes se eliminan o se agregan. Esto es principalmente útil para realizar actualizaciones ordinarias; por ejemplo, upgradeno actualizará los núcleos.
Eliah Kagan
2
Si cambia sources.listpara apuntar a los archivos de la próxima versión y luego se ejecuta apt-get dist-upgrade, si tiene éxito , realizará una actualización de la versión. Esto es compatible con Debian, aunque se recomienda su uso aptitude dist-upgradedebido a su resolución de dependencia más avanzada. En Ubuntu, nada de esto es compatible , aunque podría tener éxito. En cambio, para actualizar a una versión posterior en la línea de comandos, do-release-upgradese utiliza. Esa utilidad no lleva una -ymarca, por lo que esta respuesta no se aplica a la situación de actualizar a una nueva versión .
Eliah Kagan
Huh, interesante Debo haber estado leyendo sobre Debian entonces.
Seth