Notes du 2018-09-20

Connaître la version Debian avant update

L'indice de version de distribution Debian

Dans le terminal :

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.1 (stretch)
Release:	9.1
Codename:	stretch

Autre commande :

$ cat /etc/debian_version
9.1

Version du noyau Linux

Dans le terminal :

$ uname -a
Linux vps408839.ovh.net 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux
Je m'aperçois que Ubuntu 16.04 de mon PC de Dev a le fichier /etc/debian_version :
stretch/sid

Trop fort Ubuntu !
Ils ont laissé en place le fichier debian_version !!
Connaître la version officielle d'Ubuntu :

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.5 LTS
Release:	16.04
Codename:	xenial

Les dépots Debian

Dépots avant update

# cat /etc/apt/sources.list
deb http://ftp.debian.org/debian/ stretch main
deb http://security.debian.org/ stretch/updates main

Dés-installation de paquets

Unison n'est pas à 100% compatible avec mon PC de Dev car problème de dépendances de lib ocaml :

# dpkg --get-selections | grep unison
unison						install
unison-all					install
unison2.32.52					install
 
# apt-get autoremove --purge unison2.32.52
# apt-get autoremove --purge unison-all
# apt-get autoremove --purge unison

Vérification de l'état des paquets

Docs : www.debian.org

# dpkg --audit
pas de réponse

Paquets actuels :

# dpkg --get-selections "*" > ~/paquets-actuels.txt

Recherche des blocages de paquets :

# aptitude search "~ahold" 
# dpkg --get-selections | grep 'hold$'

Pas de paquet en hold.

Enregistrer la session

Doc Debian :
Il est fortement recommandé d'utiliser le programme /usr/bin/script pour enregistrer une transcription de la session de mise à niveau. Ainsi, quand un problème survient, vous avez un enregistrement de ce qui s'est passé, et vous pouvez fournir les informations exactes pour un rapport de bogue. Pour démarrer un enregistrement, saisissez :

# script -t 2>~/upgrade-stretchetape.time -a ~/upgrade-stretchetape.script

ou quelque chose d'équivalent. Si vous devez utiliser à nouveau le script d'enregistrement (par exemple suite à un redémarrage), utilisez une nouvelle valeur pour etape afin d'indiquer quelle étape vous enregistrez. Ne mettez pas le fichier d'enregistrement dans un répertoire temporaire tel que /tmp ou /var/tmp (les fichiers de ces répertoires peuvent être détruits pendant la mise à niveau ou pendant un redémarrage).
Le fichier d'enregistrement vous permettra également de revoir les informations qui ont défilé. Basculez simplement sur la deuxième console (en utilisant Alt+F2) et, après la connexion, utilisez

# less -R ~root/upgrade-stretchetape.script

pour voir le fichier.
Après avoir terminé la mise à niveau, vous pouvez stopper l'enregistrement en entrant exit à l'invite de commande.

Si vous avez utilisé l'option -t de script, vous pouvez utiliser le programme scriptreplay pour rejouer la session entière :

# scriptreplay ~/upgrade-stretchetape.time ~/upgrade-stretchetape.script

Mise à jour du système

Mise à jour la liste des paquets

# apt-get update

Contrôle espace disque pour la mise à niveau

# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev               1,9G       0  1,9G   0% /dev
tmpfs              387M     40M  347M  11% /run
/dev/sda1           20G    6,4G   13G  34% /
tmpfs              1,9G       0  1,9G   0% /dev/shm
tmpfs              5,0M       0  5,0M   0% /run/lock
tmpfs              1,9G       0  1,9G   0% /sys/fs/cgroup
tmpfs              387M       0  387M   0% /run/user/0

Donc 13 Go de dispo.

Doc Debian :
Le programme apt-get peut afficher des informations détaillées à propos de l'espace disque nécessaire à l'installation. Vous pouvez obtenir cette estimation avant d'effectuer vraiment la mise à niveau avec la commande :

# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
Les NOUVEAUX paquets suivants seront installés :
  linux-image-4.9.0-8-amd64
Les paquets suivants seront mis à jour :
  apt apt-utils base-files bind9-host bsdutils ca-certificates cpp-6 cron dbus dirmngr discover dnsutils dpkg dpkg-dev exim4 exim4-base exim4-config
  exim4-daemon-light file fuse g++-6 gcc-6 gcc-6-base git git-man gnupg gnupg-agent gnupg-l10n gnupg2 gpgv gunicorn3 host iproute2 isc-dhcp-client
  isc-dhcp-common krb5-locales libapparmor1 libapt-inst2.0 libapt-pkg5.0 libasan3 libatomic1 libbind9-140 libblkid1 libc-bin libc-dev-bin libc-l10n
  libc6 libc6-dev libcc1-0 libcilkrts5 libcups2 libcurl3-gnutls libdb5.3 libdbus-1-3 libdiscover2 libdns-export162 libdns162 libdpkg-perl libfdisk1
  libfuse2 libgcc-6-dev libgcc1 libgcrypt20 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgnutls-openssl27 libgnutls30 libgomp1 libgssapi-krb5-2
  libhogweed4 libicu57 libisc-export160 libisc160 libisccc140 libisccfg140 libitm1 libk5crypto3 libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common
  liblsan0 liblwres141 libmagic-mgc libmagic1 libmount1 libmpx2 libncurses5 libncurses5-dev libncursesw5 libnettle6 libpam-systemd libperl5.24 libpq5
  libprocps6 libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0 libselinux1 libsmartcols1 libsqlite3-0 libssl-dev
  libssl1.0.2 libssl1.1 libstdc++-6-dev libstdc++6 libsystemd0 libtasn1-6 libtiff5 libtinfo-dev libtinfo5 libtsan0 libubsan0 libudev1 libuuid1
  libxapian30 libxcursor1 libxml-libxml-perl libxml2 linux-image-amd64 linux-libc-dev locales mount multiarch-support mutt ncurses-base ncurses-bin
  ncurses-term nginx openssh-client openssh-server openssh-sftp-server openssl patch perl perl-base perl-modules-5.24 postgresql postgresql-9.6
  postgresql-client-9.6 postgresql-client-common postgresql-common postgresql-contrib postgresql-contrib-9.6 procmail procps publicsuffix python2.7
  python2.7-dev python2.7-minimal python3-gunicorn python3-reportbug qemu-utils reportbug rsync sensible-utils shared-mime-info systemd systemd-sysv
  tzdata udev util-linux util-linux-locales vim-common vim-tiny w3m wget whois xkb-data xxd
172 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 191 Mo dans les archives.
Après cette opération, 195 Mo d'espace disque supplémentaires seront utilisés.
E: L'option --trivial-only a été indiquée mais il ne s'agit pas d'une opération triviale.

→ 172 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 191 Mo dans les archives, pour 13 Go de dispo.

Histoire de partir propre !

# apt-get clean

puis

# apt-get autoremove
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 172 non mis à jour.

Mise à niveau minimale du système

Il est possible que le lancement d'une mise à niveau complète (décrite ci-dessous) supprime un grand nombre de paquets que vous voudriez garder. Nous recommandons donc une action en deux temps : commencer par une mise à niveau minimale pour éviter ces conflits, puis faire une mise à niveau totale.

# apt-get upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
Les paquets suivants ont été conservés :
  linux-image-amd64
Les paquets suivants seront mis à jour :
  apt apt-utils base-files bind9-host bsdutils ca-certificates cpp-6 cron dbus dirmngr discover dnsutils dpkg dpkg-dev exim4 exim4-base exim4-config
  exim4-daemon-light file fuse g++-6 gcc-6 gcc-6-base git git-man gnupg gnupg-agent gnupg-l10n gnupg2 gpgv gunicorn3 host iproute2 isc-dhcp-client
  isc-dhcp-common krb5-locales libapparmor1 libapt-inst2.0 libapt-pkg5.0 libasan3 libatomic1 libbind9-140 libblkid1 libc-bin libc-dev-bin libc-l10n
  libc6 libc6-dev libcc1-0 libcilkrts5 libcups2 libcurl3-gnutls libdb5.3 libdbus-1-3 libdiscover2 libdns-export162 libdns162 libdpkg-perl libfdisk1
  libfuse2 libgcc-6-dev libgcc1 libgcrypt20 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgnutls-openssl27 libgnutls30 libgomp1 libgssapi-krb5-2
  libhogweed4 libicu57 libisc-export160 libisc160 libisccc140 libisccfg140 libitm1 libk5crypto3 libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common
  liblsan0 liblwres141 libmagic-mgc libmagic1 libmount1 libmpx2 libncurses5 libncurses5-dev libncursesw5 libnettle6 libpam-systemd libperl5.24 libpq5
  libprocps6 libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0 libselinux1 libsmartcols1 libsqlite3-0 libssl-dev
  libssl1.0.2 libssl1.1 libstdc++-6-dev libstdc++6 libsystemd0 libtasn1-6 libtiff5 libtinfo-dev libtinfo5 libtsan0 libubsan0 libudev1 libuuid1
  libxapian30 libxcursor1 libxml-libxml-perl libxml2 linux-libc-dev locales mount multiarch-support mutt ncurses-base ncurses-bin ncurses-term nginx
  openssh-client openssh-server openssh-sftp-server openssl patch perl perl-base perl-modules-5.24 postgresql postgresql-9.6 postgresql-client-9.6
  postgresql-client-common postgresql-common postgresql-contrib postgresql-contrib-9.6 procmail procps publicsuffix python2.7 python2.7-dev
  python2.7-minimal python3-gunicorn python3-reportbug qemu-utils reportbug rsync sensible-utils shared-mime-info systemd systemd-sysv tzdata udev
  util-linux util-linux-locales vim-common vim-tiny w3m wget whois xkb-data xxd
171 mis à jour, 0 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 152 Mo dans les archives.
Après cette opération, 2 074 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] 

Bon j'ai répondu oui et j'ai oublier de lancer le script d'enregistrement :/

Upgrade terminé, tout c'est bien passé. A ce stade je contôle les versions : Avant upgrade : Pour rappel avant mise à jour, voici les versions :

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.1 (stretch)
Release:	9.1
Codename:	stretch
 
# uname -a
Linux vps408839.ovh.net 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux

Après upgrade :

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.5 (stretch)
Release:	9.5
Codename:	stretch
 
# uname -a
Linux vps408839.ovh.net 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux
On constate que :
  • Debian passe de 9.1 à 9.5
  • Le noyau passe de 4.9.30-2+deb9u5 (2017-09-19) à 4.9.30-2+deb9u5 (2017-09-19)

Mettre à niveau le système

Lancement du script de record :

# script -t 2>~/upgrade-stretchetape.time -a ~/upgrade-stretchetape2.script
Le script a débuté, le fichier est /root/upgrade-stretchetape2.script

Puis dist-upgrade :

# apt-get dist-upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
Les NOUVEAUX paquets suivants seront installés :
  linux-image-4.9.0-8-amd64
Les paquets suivants seront mis à jour :
  linux-image-amd64
1 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 39,1 Mo dans les archives.
Après cette opération, 193 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] 
 
Réception de:1 http://security.debian.org stretch/updates/main amd64 linux-image-4.9.0-8-amd64 amd64 4.9.110-3+deb9u4 [39,0 MB]
Réception de:2 http://security.debian.org stretch/updates/main amd64 linux-image-amd64 amd64 4.9+80+deb9u6 [7 080 B]
39,1 Mo réceptionnés en 3s (11,0 Mo/s)  
Lecture des fichiers de modifications (« changelog »)... Terminé
Sélection du paquet linux-image-4.9.0-8-amd64 précédemment désélectionné.
(Lecture de la base de données... 55391 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../linux-image-4.9.0-8-amd64_4.9.110-3+deb9u4_amd64.deb ...
Dépaquetage de linux-image-4.9.0-8-amd64 (4.9.110-3+deb9u4) ...
Préparation du dépaquetage de .../linux-image-amd64_4.9+80+deb9u6_amd64.deb ...
Dépaquetage de linux-image-amd64 (4.9+80+deb9u6) sur (4.9+80+deb9u1) ...
Paramétrage de linux-image-4.9.0-8-amd64 (4.9.110-3+deb9u4) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.9.0-3-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-4.9.0-3-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-4.9.0-8-amd64
I: /initrd.img is now a symlink to boot/initrd.img-4.9.0-8-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.9.0-8-amd64
/etc/kernel/postinst.d/zz-update-grub:
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-4.9.0-8-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.9.0-8-amd64
Image Linux trouvée : /boot/vmlinuz-4.9.0-3-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.9.0-3-amd64
Image Linux trouvée : /boot/vmlinuz-3.16.0-4-amd64
Image mémoire initiale trouvée : /boot/initrd.img-3.16.0-4-amd64
fait
Paramétrage de linux-image-amd64 (4.9+80+deb9u6) ...

Un peu de stat :

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.5 (stretch)
Release:	9.5
Codename:	stretch
 
# uname -a
Linux vps408839.ovh.net 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux
 
# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev               1,9G       0  1,9G   0% /dev
tmpfs              387M     40M  347M  11% /run
/dev/sda1           20G    6,5G   13G  35% /
tmpfs              1,9G       0  1,9G   0% /dev/shm
tmpfs              5,0M       0  5,0M   0% /run/lock
tmpfs              1,9G       0  1,9G   0% /sys/fs/cgroup
tmpfs              387M       0  387M   0% /run/user/0

Mise à niveau du noyau et des paquets liés

Installer un métapaquet du noyau

Doc Debian :

Quand vous faites une mise à niveau de Jessie vers Stretch, il est fortement recommandé d'installer un métapaquet linux-image-*, si cela n’avait pas été déjà fait. Ces métapaquets vont automatiquement récupérer une nouvelle version par le processus de mise à niveau. Vous pouvez vérifier cela en exécutant :

# dpkg -l "linux-image*" | grep ^ii | grep -i meta
ii  linux-image-amd64          4.9+80+deb9u6    amd64        Linux for 64-bit PCs (meta-package)

Si cela ne donne rien, vous devez alors soit installer un nouveau paquet linux-image vous-même ou installer un métapaquet linux-image.

→ Ici on à un retour qui est :

ii  linux-image-amd64          4.9+80+deb9u6    amd64        Linux for 64-bit PCs (meta-package)

Donc pas d'installation manuelle du noyau ! Youpi! \o/
Fin de la procédure Installer un métapaquet du noyau.

Préparations pour la prochaine version

Doc Debian :
Après la mise à niveau, il y a plusieurs choses que vous pouvez faire pour préparer la prochaine version.

# apt-get clean
# apt-get autoremove
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  linux-image-3.16.0-4-amd64
0 mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
Après cette opération, 164 Mo d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] o
 
(Lecture de la base de données... 59618 fichiers et répertoires déjà installés.)
Suppression de linux-image-3.16.0-4-amd64 (3.16.43-2+deb8u5) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-3.16.0-4-amd64
/etc/kernel/postrm.d/zz-update-grub:
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-4.9.0-8-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.9.0-8-amd64
Image Linux trouvée : /boot/vmlinuz-4.9.0-3-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.9.0-3-amd64
fait

Arrêt du script de record par Ctrl-D

Reboot

Un petit uptime avant de reboot :

# uptime
 15:20:58 up 315 days,  2:11,  3 users,  load average: 0,01, 0,01, 0,00

Rappel des versions avant reboot :

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.5 (stretch)
Release:	9.5
Codename:	stretch
 
# uname -a
Linux vps408839.ovh.net 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux

Versions après reboot :

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.5 (stretch)
Release:	9.5
Codename:	stretch
 
# uname -a
Linux vps408839.ovh.net 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux

Bilan montée de version

Petit récap. de la monté de version :

Versions Avant Après
Debian 9.1 9.5
Noyau GNU/Linux 4.9.30-2+deb9u5 (2017-09-19) 4.9.110-3+deb9u4 (2018-08-21)

Unison

Ré-installation d'Unison

# apt install unison

Unison fonctionne parfaitment maintenant. C'est un logiciel libre de synchronisation de fichiers que j'utilise depuis 2004. Il est multi plateforme et à la particularité de pouvoir synchroniser très rapidement une machine distante en ssh. unison

Voilà pour cette mise à jour qui m'aura pris environ 2h en comptant la re-lecture de la doc officiel Debian et la rédaction de ce tuto.

Thanks for reading !!