web-dev-qa-db-fra.com

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

Comment puis-je passer à une nouvelle version d'Ubuntu sans avoir à réagir aux invites?

Je suis sur 12.04 maintenant et voudrais installer 12.10. Lorsque je lance la mise à jour, il télécharge généralement des éléments, puis pose une question, en installe un peu, pose une question, etc. Je la laisse du jour au lendemain et constate parfois que la mise à jour n'a pratiquement pas progressé. Je voudrais juste entamer le processus, partir et le terminer au bout de quelques heures. Je vais bien avec la mise à jour automatique des fichiers de configuration dans/etc et ainsi de suite. Alors, comment démarrer une mise à niveau sans surveillance?

31
jdm

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

do-release-upgrade -f DistUpgradeViewNonInteractive

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

do-release-upgrade -d -f DistUpgradeViewNonInteractive

Je ne l'ai pas testé, mais il semble qu'il ne fasse que l'action par défaut lorsqu'une question se pose. Il expire également tous les scripts s’ils sont bloqués trop longtemps.

Vous devrez peut-être utiliser dpkg-reconfigure après si vous n'êtes pas satisfait de la configuration de certains paquets, mais la plupart du temps, tout devrait bien se passer.

Source: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ . Dans le lien, il existe également d'autres moyens de le faire.

39
jdm

Juste pour développer les réponses précédentes, voici comment procéder à distance avec la réponse acceptée, en utilisant une mise à niveau sans mot de passe sur ssh qui permettra à votre boîte de passer à la dernière version. Il est copié ma propre entrée de blog .

Toutes ces étapes supposent que votre référentiel de paquets fonctionne. Cela signifie que si vous exécutez apt-get update, vous n'êtes pas présenté avec beaucoup de 404 en raison d'une version obsolète. Vous devez d'abord résoudre ce problème, donc voir 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 une exécution sans mot de passe

Ajoutez-vous à la liste des utilisateurs pouvant exécuter do-release-upgrade à l'aide de Sudo sans entrer de mot de passe est obtenue en exécutant

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

et en ajoutant la ligne suivante, en remplaçant bien sûr mon nom d'utilisateur par le vôtre:

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

2. Commencez les mises à niveau incrémentielles

Déconnectez-vous et exécutez la commande suivante à partir de votre ordinateur. Il effectuera une mise à niveau sans vous inviter à entrer (en acceptant toutes les réponses par défaut), attendra le redémarrage de l'ordinateur, puis recommencera la mise à niveau. Il s'exécute 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. Fixer les fichiers de configuration à leur état précédent

Ensuite, vous devrez déplacer les fichiers de configuration sauvegardés à 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 un moyen de préparer des réponses pour chaque invite, mais l'inconvénient est que vous devez savoir combien d'invites il y a…

6
oligofren

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

En fait, au tout premier instant, ma partition d’essai du 16.04 au 18.04 est tombée en panne et j’ai dû la refendre. C'est là que le script se fige:

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...

En raison d'inhibiteurs d'entrée, ni le redémarrage ni l'arrêt ne fonctionneront après la suppression du script. Vous devez effectuer un arrêt à froid (maintenez le bouton d'alimentation enfoncé pendant environ 10 secondes).

Dieu merci, il s’agissait d’une mise à niveau de 16.04 clones et non de la partition 16.04 réelle.


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 se trouvait là où se trouvait ma partition Ubuntu 16.04, mais elle se trouve maintenant sur nvme0n1p7
  • nvme0n1p8 était le lieu où se trouvait ma partition de test 18.04 mais il est maintenant sur nvme0n1p8

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

5
WinEunuuchs2Unix

Vous pouvez le faire via le terminal, en utilisant Sudo apt-get -y upgrade. Cela répondra "oui" à toutes les invites. Cependant, il ne fonctionnera pas automatiquement, vous devez donc l'exécuter. Cela devrait fonctionner. Si je comprends bien, il n’est pas possible d’utiliser le gestionnaire de mises à jour de l’interface graphique pour effectuer des mises à niveau logicielles sans surveillance (ce n’est pas la même chose qu’une mise à niveau de version!)

Si vous essayez de passer à une autre version d'Ubuntu (c'est-à-dire release upgrade, et généralement la prochaine version dans la ligne des versions relatives à votre version d'Ubuntu), vous devez l'activer manuellement . Sudo do-release-upgrade peut fonctionner. Il n’existe cependant aucun moyen de passer les invites précédentes. C'est la raison pour laquelle vous lancez des mises à niveau lorsque vous êtes sur le point de recevoir de telles invites - il y aura des invites.

2
Thomas Ward