45 votes

Puis-je effectuer une mise à niveau silencieuse ou sans surveillance?

Comment passer à une nouvelle version d'Ubuntu sans devoir répondre aux invites?

Je suis actuellement sur la version 12.04 et j'aimerais installer la version 12.10. Lorsque je lance la mise à jour, cela télécharge généralement des fichiers, pose une question, installe un peu, pose une question, etc. Je laisse tourner la nuit et je constate parfois que la mise à jour n'a presque pas progressé. J'aimerais juste lancer le processus, partir et le retrouver terminé après quelques heures. Je suis d'accord pour que les fichiers de configuration dans /etc se mettent à jour automatiquement. Comment lancer une mise à jour automatique?

56voto

jdm Points 1929

La commande suivante met à niveau vers la nouvelle version stable sans demandes:

do-release-upgrade -f DistUpgradeViewNonInteractive

La commande suivante met à niveau vers la version de développement actuelle sans demandes:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

Je ne l'ai pas testé, mais il semble qu'il exécute simplement l'action par défaut lorsqu'une question se pose. Il arrête également tout script qui prend trop de temps.

Vous devrez peut-être utiliser dpkg-reconfigure par la suite si vous n'êtes pas satisfait de la configuration de certains paquets, mais la plupart du temps vous devriez être satisfait.

Source: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/. Dans le lien, il y a aussi d'autres façons de le faire.

9voto

WinEunuuchs2Unix Points 91128

Confirmer ce que Thomas Ward affirme dans sa réponse et contredire la réponse acceptée, do-release-upgrade -d -f DistUpgradeViewNonInteractive NE FONCTIONNE PAS.

En fait, dès le tout premier prompt, cela a cassé ma partition de test 16.04 vers 18.04 et j'ai dû la recréer. C'est là que le script se bloque :

Configuration de mount (2.31.1-0.4ubuntu3) ...
Configuration de systemd (237-3ubuntu10) ...
Installation de la nouvelle version du fichier de configuration /etc/pam.d/systemd-user ...
Installation de la nouvelle version du fichier de configuration /etc/systemd/journald.conf ...

Fichier de configuration '/etc/systemd/logind.conf'
 ==> Modifié (par vous ou par un script) depuis l'installation.
 ==> Le distributeur de paquets a livré une version mise à jour.
   Que souhaitez-vous faire à ce sujet ?  Vos options sont :
    Y ou I  : installer la version du mainteneur du paquet
    N ou O  : conserver votre version actuellement installée
      D     : afficher les différences entre les versions
      Z     : ouvrir un shell pour examiner la situation
 L'action par défaut est de conserver votre version actuelle.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
PLANTAGE... PLUS RIEN NE SE PASSE MAINTENANT... VAIS ARRÊTER ET RECOMMENCER SANS L'OPTION -f...

En raison des inhibiteurs d'entrée, ni le redémarrage ni l'arrêt ne fonctionneront après avoir arrêté le script. Vous devez effectuer un arrêt à froid (maintenir le bouton d'alimentation enfoncé ~ 10 secondes).

Heureusement, il s'agissait d'une mise à niveau d'un clone de 16.04 et non de la vraie partition 16.04.


Pour rendre la vie encore plus intéressante, une nouvelle partition de 898 Mo a été ajoutée à mon SSD NVMe et mes partitions habituelles ont été déplacées :

$ 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 était l'endroit où se trouvait ma partition Ubuntu 16.04 mais elle est maintenant sur nvme0n1p7
  • nvme0n1p8 était l'endroit où se trouvait ma partition de test 18.04 mais elle est maintenant sur nvme0n1p8

REMARQUE : J'ai également mis à niveau Windows 10 de la version 1709 à la version 1803 cet après-midi, il est donc possible qu'il ait créé la nouvelle partition nvme0n1p5 de 898 Mo au format ntfs.

6voto

oligofren Points 548

Juste pour approfondir les réponses précédentes, voici comment faire la même chose à distance que la réponse acceptée, en utilisant une mise à niveau sans mot de passe via ssh qui mettra à niveau votre machine vers la dernière version. Il est copié de mon propre article de blog.

Toutes ces étapes supposent que votre dépôt de paquets fonctionne. Cela signifie que si vous exécutez apt-get update, vous ne voyez pas beaucoup de 404 en raison d'une version obsolète. Vous devez d'abord corriger cela, alors consultez cette réponse pour cela.

0. Mettre à jour tous les packages existants

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

1. Configurer l'exécution sans mot de passe

Ajouter votre nom d'utilisateur à la liste des utilisateurs pouvant exécuter do-release-upgrade avec sudo sans entrer de mot de passe est réalisé en exécutant

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

et en ajoutant la ligne suivante, en remplaçant my-username par le vôtre bien sûr:

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

2. Démarrer les mises à niveau incrémentielles

Déconnectez-vous et exécutez la commande suivante depuis votre ordinateur. Il fera une mise à niveau sans vous demander d'entrée (en acceptant toutes les réponses par défaut), attendra que l'ordinateur redémarre, puis essaiera de se mettre à niveau à nouveau. Il fonctionne jusqu'à ce que vous soyez mis à niveau vers la dernière version.

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

3. Réparer les fichiers de configuration pour retrouver leur état précédent

Ensuite, vous devrez déplacer les fichiers de configuration sauvegardés vers leur emplacement précédent car le processus de mise à niveau a mis les configurations par défaut à leur place.

Pas satisfait des réponses par défaut ?

Ce gars a une méthode pour préparer à l'avance des réponses pour chaque invite, mais l'inconvénient est que vous devez savoir combien d'invites il y a...

1voto

Joe the Person Points 5090

Vous pouvez le faire via le terminal, en utilisant sudo apt-get -y upgrade. Cela répondra "oui" à toutes les invitations. Cependant, il ne s'exécutera pas automatiquement, vous devez donc l'exécuter. Cela devrait fonctionner. À ma connaissance, il n'y a aucun moyen d'utiliser le gestionnaire de mises à jour graphique pour effectuer des mises à jour de logiciels non assistées (ceci n'est PAS la même chose qu'une mise à niveau de version !)

Si vous essayez de passer à une version d'Ubuntu différente (appelée mise à niveau de version, et généralement la version suivante de la ligne des versions par rapport à votre version d'Ubuntu), vous devez activer cela manuellement. sudo do-release-upgrade peut fonctionner. Il n'y a cependant aucun moyen de passer outre les invitations. C'est pourquoi vous déclenchez les mises à niveau lorsque vous êtes présent pour de telles invitations - il y aura des invitations.

-4voto

blogger Points 1

Essayez d'ajouter l'option -y à apt-get mais sachez que cela répondra y à toutes les requêtes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X