2020-11-01: Création

Il s'agit de la mise à jour du serveur Debian https://open1024.fr sur lequel est hébergé ce Wiki.
La doc Debian pour la mise à jour:
https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html

Uptime ?

Avant toute chose, et pour le fun, je suis curieux de voir si le serveur à rebooté depuis sa dernière mise à jour du 2018-09-20 :

# uptime 
 12:18:58 up 766 days, 20:02,  1 user,  load average: 0,00, 0,00, 0,00
 
# uptime -p
up 2 years, 5 weeks, 3 days, 20 hours, 2 minutes

Youhou ! nickel ! pas de reboot depuis !

Backup du Dokuwiki, Django et système

Dossier www

Dokuwiki n'a pas de base de données (c'était l'un de mes critères de choix), donc pas de dump à faire. Coté Django c'est juste quelques test utilisant SQLight donc rien à faire non plus.
Un simple backup de /var/www suffit :

# cd /var
root@vps408839:/var# zip -r www_2020-11-01.zip www

rsync du backup www.zip depuis la machine locale:

$ rsync -avz -e "ssh -p xxxx" yyyy@open1024.fr:/var/www_2020-11-01.zip .

Suppression du backup (espace disque limité sur le serveur) :

# rm www_2020-11-01.zip

Coté système

  • Backup de supervisor qui gère le démarrage de crossbar
  • Backup d'Nginx qui sert les statiques de Django comme les images etc.
  • En discutant avec Thierry, le /etc compressé n'est pas bien lourd donc inutile de cibler quelques dossier de config. au risque d'en oublier.
  • j'utilise gzip cette fois-ci, sinon je suis la honte de la famille Geek !
# cd /
# gzip -r -c -9 etc > etc_2020-11-01.gz

Coté remote :

$ rsync -avz --progress -e "ssh -p xxxx" yyyy@open1024.fr:/etc_2020-11-01.gz .
receiving incremental file list
etc_2020-11-01.gz
     21,627,094 100%  590.30kB/s    0:00:35 (xfr#1, to-chk=0/1)
 
sent 43 bytes  received 21,407,878 bytes  570,877.89 bytes/sec
total size is 21,627,094  speedup is 1.01

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.5 (stretch)
Release:	9.5
Codename:	stretch

Autre commande :

$ cat /etc/debian_version
9.5

Version du noyau Linux

Dans le terminal :

$ 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

Les dépots Debian

Dépôts avant update

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

Dés-installation de paquets

Ici pas de paquet installé sauvagement.

Vérification de l'état des paquets

Docs : www.debian.org

# dpkg --audit
pas de réponse

Paquets actuels :

# mkdir debian_9.5_to_10.6
# cd debian_9.5_to_10.6
# dpkg --get-selections "*" > paquets-actuels_2020-11-01.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 :

# mkdir script
# script -t 2>/root/debian_9.5_to_10.6/script/upgrade_9-5_10-6_etape.time -a /root/debian_9.5_to_10.6/script/upgrade_9-5_10-6_etape.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/debian_9.5_to_10.6/upgrade_9-5_10-6_etape.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 /root/debian_9.5_to_10.6/upgrade_9-5_10-6_etape.time /root/debian_9.5_to_10.6/upgrade_9-5_10-6_etape.script

Mise à jour du système

Mise à jour la liste des paquets

# apt update
Atteint:1 http://nginx.org/packages/mainline/debian jessie InRelease
Ign:2 http://ftp.debian.org/debian stretch InRelease                                                                  
Atteint:3 http://security.debian.org stretch/updates InRelease                                                        
Réception de:4 http://ftp.de.debian.org/debian testing InRelease [116 kB]                          
Atteint:5 http://ftp.debian.org/debian stretch Release                                             
Réception de:7 http://ftp.de.debian.org/debian testing/main amd64 Packages.diff/Index [2686 B]   
Réception de:8 http://ftp.de.debian.org/debian testing/main Translation-en.diff/Index [1710 B]
Réception de:7 http://ftp.de.debian.org/debian testing/main amd64 Packages.diff/Index [2686 B]
Réception de:8 http://ftp.de.debian.org/debian testing/main Translation-en.diff/Index [1710 B]
Réception de:9 http://ftp.de.debian.org/debian testing/main amd64 Packages [7820 kB]
Réception de:10 http://ftp.de.debian.org/debian testing/main Translation-en [5978 kB]
13,9 Mo réceptionnés en 4s (2907 ko/s)                             
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
578 packages can be upgraded. Run 'apt list --upgradable' to see them.

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              386M     40M  347M  11% /run
/dev/sda1           20G    8,7G   11G  46% /
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              386M       0  386M   0% /run/user/1001

Donc 11 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 paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  camlp4 dh-python g++-6 geoip-database gnupg-agent ledit libbind9-140 libboost-filesystem1.62.0
  libboost-iostreams1.62.0 libboost-system1.62.0 libcamlp4-ocaml-dev libcgi-fast-perl libcgi-pm-perl
  libclass-accessor-perl libcroco3 libcwidget3v5 libdns-export162 libdns162 libevent-2.0-5 libfcgi-perl
  libfindlib-ocaml libfindlib-ocaml-dev libgeoip1 libgmime-2.6-0 libhogweed4 libicu57 libio-string-perl
  libio-stringy-perl libip4tc0 libip6tc0 libiptc0 libisc-export160 libisc160 libisccc140 libisccfg140 liblwres141
  libncurses-dev libncurses5-dev libnettle6 libnotmuch4 libparse-debianchangelog-perl libperl5.24 libprocps6
  libpython2-dev libpython2.7 libpython2.7-dev libpython3.5-minimal libpython3.5-stdlib libpython3.6 libpython3.6-dev
  libssl1.0.2 libstdc++-6-dev libtalloc2 libtinfo-dev libunistring0 ocaml-base-nox ocaml-compiler-libs ocaml-findlib
  ocaml-interp ocaml-man ocaml-nox perl-modules-5.24 python-cffi-backend python-configargparse python-configobj
  python-cryptography python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress python-meld3
  python-mock python-openssl python-parsedatetime python-pbr python-psutil python-pyasn1 python-pycurl python-pyicu
  python-pyparsing python-rfc3339 python-six python-urllib3 python-zope.component python-zope.event
  python-zope.hookable python-zope.interface python2.7-dev python3-cairo python3-dbus python3-entrypoints
  python3-gunicorn python3-jeepney python3-keyring python3-keyrings.alt python3-prettytable python3-pyasn1
  python3-pycryptodome python3-secretstorage python3-xdg python3.5 python3.5-minimal python3.6-dev rename sgml-base
  tcpd xml-core
Veuillez utiliser « apt autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
  gunicorn3 libapt-inst2.0 libapt-pkg5.0 libpython-dev libsensors4 libtirpc1 ocaml-native-compilers python-acme
  python-apt python-boto python-certbot python-chardet python-debian python-debianbts python-dev python-httplib2
  python-pysimplesoap python-reportbug python-requests python2-dev
Les NOUVEAUX paquets suivants seront installés :
  alsa-topology-conf alsa-ucm-conf apparmor bind9-dnsutils bind9-libs binutils-common binutils-x86-64-linux-gnu
  bsdextrautils calendar cpp-10 e2fsprogs-l10n eatmydata fdisk g++-10 gcc-10 gcc-10-base gcc-8-base gnupg-utils gpg
  gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm libapt-pkg6.0 libargon2-1 libasan6 libasound2 libasound2-data
  libbinutils libboost-iostreams1.71.0 libbrotli1 libcairo-gobject2 libcanberra0 libcbor0 libclone-perl libcom-err2
  libcrypt-dev libcrypt1 libcryptsetup12 libctf-nobfd0 libctf0 libcwidget4 libdata-dump-perl libdns-export1110
  libeatmydata1 libefiboot1 libefivar1 libevent-2.1-7 libext2fs2 libffi7 libfido2-1 libfl2 libfribidi0 libfstrm0
  libgcc-10-dev libgcc-s1 libgdbm-compat4 libgdbm6 libgdk-pixbuf2.0-bin libgnutls-dane0 libgpg-error-l10n libhogweed6
  libicu67 libio-stringy-perl libip4tc2 libip6tc2 libisc-export1105 libisl22 libjansson4 libjson-c5 libllvm10
  liblmdb0 libltdl7 libmaxminddb0 libmpfr6 libncurses-dev libncurses6 libnettle8 libnftables1 libnftnl11 libnsl-dev
  libnsl2 libnss-nis libnss-nisplus libnss-systemd libogg0 libpcre2-8-0 libperl5.30 libprocps8 libprotobuf-c1
  libpython3.8 libpython3.8-dev libpython3.8-minimal libpython3.8-stdlib libreadline8 libsensors-config libsensors5
  libstdc++-10-dev libtdb1 libtirpc-common libtirpc-dev libtirpc3 libtry-tiny-perl libubsan1 libuchardet0 libunbound8
  libunistring2 liburing1 libuv1 libvorbis0a libvorbisfile3 libwebp6 libx11-xcb1 libxxhash0 libz3-4 libzstd1
  linux-image-5.9.0-1-amd64 logsave ncal nftables ocaml-man pci.ids perl-modules-5.30 pigz postgresql-13
  postgresql-client-13 python3-acme python3-appdirs python3-attr python3-certbot python3-certbot-nginx
  python3-certifi python3-configargparse python3-debconf python3-distlib python3-distro python3-filelock
  python3-future python3-icu python3-importlib-metadata python3-jeepney python3-josepy python3-jsonschema
  python3-more-itertools python3-openssl python3-parsedatetime python3-pycryptodome python3-pyparsing
  python3-pyrsistent python3-requests-toolbelt python3-rfc3339 python3-tz python3-zipp python3-zope.component
  python3-zope.event python3-zope.hookable python3-zope.interface python3.8 python3.8-dev python3.8-minimal
  runit-helper sound-theme-freedesktop systemd-timesyncd unison-2.48 zlib1g-dev
Les paquets suivants ont été conservés :
  dh-python libpython2-stdlib python2 python2-minimal w3m w3m-img
Les paquets suivants seront mis à jour :
  acl acpi acpi-support-base acpid adduser apt apt-listchanges apt-utils aptitude aptitude-common aptitude-doc-en at
  augeas-lenses base-files base-passwd bash bash-completion bc bind9-host binutils bsd-mailx bsdmainutils bsdutils
  build-essential busybox bzip2 ca-certificates camlp4 certbot cloud-guest-utils cloud-image-utils cloud-init
  cloud-initramfs-growroot cloud-utils console-common console-data console-setup console-setup-linux coreutils cpio
  cpp cron dash dbus dc debconf debconf-i18n debian-archive-keyring debian-faq debianutils deborphan dialog
  dictionaries-common diffutils dirmngr discover distro-info distro-info-data dmidecode dmsetup dnsutils dpkg
  dpkg-dev e2fslibs e2fsprogs eject emacsen-common exim4 exim4-base exim4-config exim4-daemon-light fakeroot file
  findutils firmware-linux-free fontconfig fontconfig-config fonts-dejavu-core ftp fuse g++ gcc gdisk genisoimage
  geoip-database gettext-base gir1.2-glib-2.0 git git-man gnome-icon-theme gnupg gnupg-agent gnupg-l10n gnupg2 gpgv
  grep groff-base grub-common grub-pc grub-pc-bin grub2-common gtk-update-icon-cache gzip hicolor-icon-theme host
  hostname htop iamerican ibritish ienglish-common ifupdown info init init-system-helpers initramfs-tools
  initramfs-tools-core initscripts insserv install-info installation-report iproute2 iptables iputils-ping irqbalance
  isc-dhcp-client isc-dhcp-common iso-codes ispell kbd keyboard-configuration keyutils klibc-utils kmod krb5-locales
  laptop-detect ledit less libacl1 libaio1 libalgorithm-diff-perl libalgorithm-diff-xs-perl libapparmor1 libassuan0
  libatk1.0-0 libatk1.0-data libatomic1 libattr1 libaudit-common libaudit1 libaugeas0 libavahi-client3
  libavahi-common-data libavahi-common3 libbind9-140 libblkid1 libbsd0 libbz2-1.0 libc-bin libc-dev-bin libc-l10n
  libc6 libc6-dev libcairo2 libcamlp4-ocaml-dev libcap-ng0 libcap2 libcap2-bin libcc1-0 libcgi-fast-perl
  libcgi-pm-perl libclass-accessor-perl libclass-isa-perl libcomerr2 libcroco3 libcups2 libcurl3-gnutls libdatrie1
  libdb5.3 libdbus-1-3 libdebconfclient0 libdevmapper1.02.1 libdiscover2 libdns-export162 libdns162 libdpkg-perl
  libedit2 libelf1 liberror-perl libestr0 libexpat1 libexpat1-dev libfakeroot libfastjson4 libfcgi-perl libfdisk1
  libffi-dev libfile-fcntllock-perl libfile-listing-perl libfindlib-ocaml libfindlib-ocaml-dev libfont-afm-perl
  libfontconfig1 libfreetype6 libfuse2 libgail-common libgail18 libgcrypt20 libgdk-pixbuf2.0-0
  libgdk-pixbuf2.0-common libgeoip1 libgif7 libgirepository-1.0-1 libglib2.0-0 libglib2.0-data libgmp10
  libgnutls-openssl27 libgnutls30 libgomp1 libgpg-error0 libgpgme11 libgpm2 libgraphite2-3 libgssapi-krb5-2
  libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz0b libhtml-form-perl libhtml-parser-perl libhtml-tagset-perl
  libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl
  libhttp-negotiate-perl libicu57 libid3tag0 libidn11 libidn2-0 libimlib2 libio-socket-ip-perl libio-socket-ssl-perl
  libiptc0 libisc-export160 libisc160 libisccc140 libisccfg140 libitm1 libjpeg62-turbo libk5crypto3 libkeyutils1
  libklibc libkmod2 libkrb5-3 libkrb5support0 libksba8 libldap-2.4-2 libldap-common liblocale-gettext-perl
  liblockfile-bin liblockfile1 liblognorm5 liblsan0 liblwp-mediatypes-perl liblwp-protocol-https-perl liblwres141
  liblz4-1 liblzma5 libmagic-mgc libmagic1 libmailtools-perl libmnl0 libmount1 libmpc3 libmpdec2 libmpx2 libncurses5
  libncurses5-dev libncursesw5 libncursesw6 libnet-http-perl libnet-ssleay-perl libnetfilter-acct1
  libnetfilter-conntrack3 libnewt0.52 libnfnetlink0 libnghttp2-14 libnpth0 libnuma1 libp11-kit0 libpam-modules
  libpam-modules-bin libpam-runtime libpam-systemd libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libparted2 libpci3 libpcre3 libperl5.24 libpipeline1 libpixman-1-0 libpng16-16 libpopt0 libpq5 libpsl5
  libpython2-dev libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libpython3-dev
  libpython3-stdlib libpython3.5-minimal libpython3.5-stdlib libqdbm14 libquadmath0 librsvg2-2 librsvg2-common
  librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libseccomp2 libsecret-1-0 libsecret-common libselinux1
  libsemanage-common libsemanage1 libsepol1 libsigc++-2.0-0v5 libsigsegv2 libslang2 libsmartcols1 libsqlite3-0 libss2
  libssh2-1 libssl-dev libssl1.0.2 libssl1.1 libstdc++6 libsub-name-perl libsystemd0 libtalloc2 libtasn1-6
  libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0 libtiff5 libtimedate-perl
  libtinfo-dev libtinfo5 libtinfo6 libtokyocabinet9 libtsan0 libudev1 liburi-perl libusb-0.1-4 libuuid1 libwrap0
  libwww-perl libwww-robotrules-perl libx11-6 libx11-data libxapian30 libxau6 libxcb-render0 libxcb-shm0 libxcb1
  libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxinerama1 libxml-libxml-perl
  libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libxml2
  libxmuu1 libxslt1.1 libxtables12 libyaml-0-2 linux-base linux-image-amd64 linux-libc-dev locales login logrotate
  lsb-base lsb-release lsof m4 make man-db manpages manpages-dev mawk mc mc-data mime-support mlocate mount
  multiarch-support mutt nano ncurses-base ncurses-bin ncurses-term net-tools netbase netcat-traditional nfacct
  nfs-common nginx ocaml-base-nox ocaml-compiler-libs ocaml-findlib ocaml-interp ocaml-nox openssh-client
  openssh-server openssh-sftp-server openssl os-prober parted passwd patch pciutils perl perl-base perl-modules-5.24
  perl-openssl-defaults pinentry-gtk2 postgresql postgresql-9.6 postgresql-client-9.6 postgresql-client-common
  postgresql-common postgresql-contrib postgresql-contrib-9.6 procmail procps psmisc publicsuffix python-apt-common
  python-certbot-nginx python-cryptography python-dnspython python-parsedatetime python-pip-whl python-pkg-resources
  python-setuptools python-six python2.7 python2.7-dev python2.7-minimal python3 python3-apt python3-blinker
  python3-cairo python3-cffi-backend python3-chardet python3-configobj python3-crypto python3-cryptography
  python3-dbus python3-debian python3-debianbts python3-dev python3-distutils python3-entrypoints python3-gi
  python3-gunicorn python3-httplib2 python3-idna python3-jinja2 python3-json-pointer python3-jsonpatch python3-jwt
  python3-keyring python3-keyrings.alt python3-lib2to3 python3-markupsafe python3-minimal python3-oauthlib
  python3-pip python3-pkg-resources python3-prettytable python3-pyasn1 python3-pycurl python3-pysimplesoap
  python3-reportbug python3-requests python3-secretstorage python3-setuptools python3-six python3-urllib3
  python3-virtualenv python3-wheel python3-xdg python3-yaml python3.5 python3.5-minimal qemu-utils ranger
  readline-common rename reportbug rpcbind rsync rsyslog sed sensible-utils sgml-base shared-mime-info startpar sudo
  supervisor sysstat systemd systemd-sysv sysv-rc sysvinit-utils tar task-english tasksel tasksel-data tcpd telnet
  tex-common texinfo traceroute tree tzdata ucf udev unison unzip util-linux util-linux-locales vim vim-common
  vim-runtime vim-tiny virtualenv vsftpd wamerican wget whiptail whois xauth xdg-user-dirs xkb-data xml-core xxd
  xz-utils zlib1g
566 mis à jour, 166 nouvellement installés, 20 à enlever et 6 non mis à jour.
Il est nécessaire de prendre 525 Mo dans les archives.
Après cette opération, 1151 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.

En résumé :

566 mis à jour, 166 nouvellement installés, 20 à enlever et 6 non mis à jour.
Il est nécessaire de prendre 525 Mo dans les archives.
Après cette opération, 1151 Mo d'espace disque supplémentaires seront utilisés.

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
Les paquets suivants seront ENLEVÉS :
  libpython3.5-minimal libpython3.5-stdlib python3.5 python3.5-minimal
0 mis à jour, 0 nouvellement installés, 4 à enlever et 574 non mis à jour.
Après cette opération, 23,9 Mo d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] o
(Lecture de la base de données... 60119 fichiers et répertoires déjà installés.)
Suppression de python3.5 (3.5.3-1) ...
Suppression de libpython3.5-stdlib:amd64 (3.5.3-1) ...
Suppression de python3.5-minimal (3.5.3-1) ...
Unlinking and removing bytecode for runtime python3.5
Suppression de libpython3.5-minimal:amd64 (3.5.3-1) ...
Traitement des actions différées (« triggers ») pour mime-support (3.60) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...

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
[...]
180 Mo réceptionnés en 22s (8162 ko/s)                                                                               
Lecture des fichiers de modifications (« changelog »)... Terminé
apt-listchanges : Envoi des modifications par courriel à root : apt-listchanges : nouveautés pour vps408839.ovh.net
Extraction des modèles depuis les paquets : 100%
Préconfiguration des paquets...
(Lecture de la base de données... 59287 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../base-files_11_amd64.deb ...
Dépaquetage de base-files (11) sur (9.9+deb9u5) ...
Paramétrage de base-files (11) ...
Installation de la nouvelle version du fichier de configuration /etc/debian_version ...
Installation de la nouvelle version du fichier de configuration /etc/issue ...
Installation de la nouvelle version du fichier de configuration /etc/issue.net ...
Updating /root/.profile to current default.
(Lecture de la base de données... 59288 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../debianutils_4.11.2_amd64.deb ...
Dépaquetage de debianutils (4.11.2) sur (4.8.1.1) ...
Paramétrage de debianutils (4.11.2) ...
(Lecture de la base de données... 59288 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../bash_5.1~rc1-2_amd64.deb ...
Dépaquetage de bash (5.1~rc1-2) sur (4.4-5) ...
Paramétrage de bash (5.1~rc1-2) ...
Installation de la nouvelle version du fichier de configuration /etc/bash.bashrc ...
Installation de la nouvelle version du fichier de configuration /etc/skel/.profile ...
update-alternatives: utilisation de « /usr/share/man/man7/bash-builtins.7.gz » pour fournir « /usr/share/man/man7/built
ins.7.gz » (builtins.7.gz) en mode automatique
(Lecture de la base de données... 59290 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../libsmartcols1_2.36-3+b1_amd64.deb ...
Dépaquetage de libsmartcols1:amd64 (2.36-3+b1) sur (2.29.2-1+deb9u1) ...
Paramétrage de libsmartcols1:amd64 (2.36-3+b1) ...
(Lecture de la base de données... 59291 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../bsdmainutils_12.1.7_all.deb ...
'/etc/default/bsdmainutils' -> '/etc/default/bsdmainutils.dpkg-remove'
'/etc/cron.daily/bsdmainutils' -> '/etc/cron.daily/bsdmainutils.dpkg-remove'
Dépaquetage de bsdmainutils (12.1.7) sur (9.0.12+nmu1) ...
dpkg: avertissement: impossible de supprimer l'ancien répertoire  « /etc/calendar » : Le dossier n'est pas vide
Sélection du paquet bsdextrautils précédemment désélectionné.
Préparation du dépaquetage de .../bsdextrautils_2.36-3+b1_amd64.deb ...
Dépaquetage de bsdextrautils (2.36-3+b1) ...
dpkg: erreur de traitement de l'archive /var/cache/apt/archives/bsdextrautils_2.36-3+b1_amd64.deb (--unpack) :
 tentative de remplacement de « /usr/share/bash-completion/completions/hexdump », qui appartient aussi au paquet bash-c
ompletion 1:2.1-4.3
Préparation du dépaquetage de .../libbsd0_0.10.0-1_amd64.deb ...
Dépaquetage de libbsd0:amd64 (0.10.0-1) sur (0.8.3-1) ...
Sélection du paquet gcc-10-base:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../gcc-10-base_10.2.0-15_amd64.deb ...
Dépaquetage de gcc-10-base:amd64 (10.2.0-15) ...
Des erreurs ont été rencontrées pendant l'exécution :
 /var/cache/apt/archives/bsdextrautils_2.36-3+b1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@vps408839:~/debian_9.5_to_10.6/script# 
 
root@vps408839:~/debian_9.5_to_10.6/script# apt upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Vous pouvez lancer « apt --fix-broken install » pour corriger ces problèmes.
Les paquets suivants contiennent des dépendances non satisfaites :
 bsdmainutils : Dépend: bsdextrautils (>= 2.35.2-7) mais il n'est pas installé
                Dépend: calendar mais il n'est pas installé
                Dépend: ncal mais il n'est pas installé
E: Dépendances non satisfaites. Essayez « apt --fix-broken install » sans paquet
   (ou indiquez une solution).

Là, ça sent pas bon

En résumé :

# apt --fix-broken install  #ne parvient pas à résoudre le problème car 
bsdextrautils dépend de man-db
# dpkg -r man-db         -> ok
# dpkg --configure -a    -> pas de réponse
# apt-get install -f     -> Erreur car bsdextrautils dépend de bash-completion
# apt remove bash-completion     -> Erreur
# apt --fix-broken install       -> Erreur 
# dpkg -r bash-completion        -> ok
# apt --fix-broken install       -> ok

Reprise de la procédure

# script -t 2>/root/debian_9.5_to_10.6/script/upgrade_9-5_10-6_etape_2.time -a /root/debian_9.5_to_10.6/script/upgrade_9-5_10-6_etape_2.script
Le script a débuté, le fichier est /root/debian_9.5_to_10.6/script/upgrade_9-5_10-6_etape_2.script
 
# apt-get upgrade
-> PC générique 105 touches (internat.)
-> Français -> clavier Français (azerty standard AFNOR)
 
L'utilitaire « update-passwd » a détecté une différence entre les comptes système et les comptes Debian définis par défaut. Il est          │ 
 │ recommandé de permettre à « update-passwd » de modifier le système ; sans ces changements, certains paquets risquent de ne pas fonctionner  │ 
 │ correctement. Davantage d'informations concernant la politique des comptes Debian se trouvent dans le fichier                               │ 
 │ « /usr/share/doc/base-passwd/README ».                                                                                                      │ 
 │                                                                                                                                             │ 
 │ La modification proposée est :                                                                                                              │ 
 │                                                                                                                                             │ 
 │ Modification du répertoire personnel de l'utilisateur « irc » de /var/run/ircd à /run/ircd                                                  │ 
 │                                                                                                                                             │ 
 │ En acceptant cette modification, une sauvegarde des fichiers modifiés sera créée avec l'extension .org, qui pourra être utilisée plus tard  │ 
 │ pour restaurer les réglages actuels. Si la modification n'est pas effectuée maintenant, elle pourra l'être ultérieurement en utilisant      │ 
 │ « update-passwd ».                                                                                                                          │ 
 │                                                                                                                                             │ 
 │ Faut-il modifier le répertoire personnel de l'utilisateur irc ?
 
-> <Oui>

Différence /etc/crontab:

--- /etc/crontab        2017-09-10 18:18:31.388000000 +0200
+++ /etc/crontab.dpkg-new       2020-02-10 20:16:06.000000000 +0100
@@ -7,12 +7,16 @@
 SHELL=/bin/sh
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
-# m h dom mon dow user command
+# Example of job definition:
+# .---------------- minute (0 - 59)
+# |  .------------- hour (0 - 23)
+# |  |  .---------- day of month (1 - 31)
+# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
+# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
+# |  |  |  |  |
+# *  *  *  *  * user-name command to be executed
 17 *   * * *   root    cd / && run-parts --report /etc/cron.hourly
 25 6   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
 47 6   * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
 52 6   1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
 #
-## Mise a jour automatique des certificats ssl le premier de chaque mois a 4h00
-0 4 1 * * root /home/jc/installation/install_cerbot/certbot-auto renew --quiet --no-self-upgrade
-#

Je décide de prendre la nouvelle version et d'y remettre certbot-auto plus tard

Fin d'apt-get upgrade sans erreur !

Version à ce stade

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux bullseye/sid
Release:	9.13
Codename:	stretch
 
# cat /etc/debian_version
bullseye/sid
 
# 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

Mettre à niveau le système

# apt dist-upgrade
 
 │ Running services and programs that are using NSS need to be restarted, otherwise they might not be able to do lookup or authentication any  │ 
 │ more. The installation process is able to restart some services (such as ssh or telnetd), but other programs cannot be restarted            │ 
 │ automatically. One such program that needs manual stopping and restart after the glibc upgrade by yourself is xdm - because automatic       │ 
 │ restart might disconnect your active X11 sessions.                                                                                          │ 
 │                                                                                                                                             │ 
 │ This script detected the following installed services which must be stopped before the upgrade: postgresql                                  │ 
 │                                                                                                                                             │ 
 │ If you want to interrupt the upgrade now and continue later, please answer No to the question below.                                        │ 
 │                                                                                                                                             │ 
 │ Do you want to upgrade glibc now?                                                                                                           │ 
 │                                                                                                                                             │ 
 │                                          <Yes>                                             <No>

Validation <Yes>

Fichier de configuration « /etc/ssh/ssh_config »
 ==> Modifié (par vous ou par un script) depuis l'installation.
 ==> Le distributeur du paquet a fourni une version mise à jour.
   Que voulez-vous faire ? Vos options sont les suivantes :
    Y ou I  : installer la version du responsable du paquet
    N ou O  : garder votre version actuellement installée
      D     : afficher les différences entre les versions
      Z     : suspendre ce processus pour examiner la situation
 L'action par défaut garde votre version actuelle.
*** ssh_config (Y/I/N/O/D/Z) [défaut=N] ? 

→ Y

  ┌────────────────────────────────────────────────────┤ Configuration de openssh-server ├────────────────────────────────────────────────────┐
  │ Une nouvelle version (/tmp/tmp.U4UpEPkBSf) du fichier de configuration /etc/ssh/sshd_config est disponible mais la version actuellement   │ 
  │ utilisée a été modifiée localement.                                                                                                       │ 
  │                                                                                                                                           │ 
  │ Action souhaitée pour le fichier de configuration modifié sshd_config :                                                                   │ 
  │                                                                                                                                           │ 
  │                                      Installer la version du responsable du paquet                                                        │ 
  │                                      Garder la version actuellement installée                                                             │ 
  │                                      Montrer les différences entre les versions                                                           │ 
  │                                      Montrer côte à côte les différences entre les versions                                               │ 
  │                                      Montrer les différences entre les trois versions du fichier                                          │ 
  │                                      Fusionner les différences entre les trois versions du fichier                                        │ 
  │                                      Lancer un shell pour examiner la situation                                                           │ 
  │                                                                                                                                           │ 
  │                                                                                                                                           │ 
  │                                                                  <Ok>                                                                     │ 
  │                                                                                                                                           │ 
  └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 

→ Sélection: Installer la version du responsable du paquet

 ┌───────────────────────────────────────────────────┤ Configuration de postgresql-common ├────────────────────────────────────────────────────┐
 │                                                                                                                                             │ 
 │ Version majeure 9.6 obsolète                                                                                                                │ 
 │                                                                                                                                             │ 
 │ La version 9.6 de PostgreSQL est obsolète, mais le paquet du client ou du serveur est toujours installé. Veuillez installer la version la   │ 
 │ plus récente des paquets postgresql-13 et postgresql-client-13 et mettre à niveau les grappes (« clusters ») en version  avec               │ 
 │ « pg_upgradecluster ». Veuillez consulter la page de manuel pour plus de précisions.                                                        │ 
 │                                                                                                                                             │ 
 │ Veuillez noter que l'installation de postgresql-13 créera par défaut une grappe (« cluster ») 13/main. Si vous souhaitez mettre à niveau    │ 
 │ la grappe 9.6/main, il faudra supprimer la grappe 13 en exécutant la commande « pg_dropcluster--stop 13 main ». Veuillez consulter la page  │ 
 │ de manuel pour plus de précisions.                                                                                                          │ 
 │                                                                                                                                             │ 
 │ Les anciennes versions des paquets client et serveur ne sont plus maintenues. Après la mise à niveau des grappes (« clusters »), les        │ 
 │ paquets postgresql-9.6 et postgresql-client-9.6 devraient être supprimés.                                                                   │ 
 │                                                                                                                                             │ 
 │ Veuillez consulter /usr/share/doc/postgresql-common/README.Debian.gz pour plus de détails.                                                  │ 
 │                                                                                                                                             │ 
 │                                                                   <Ok>                                                                      │ 
 │                                                                                                                                             │ 
 └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ 
Fichier de configuration « /etc/cloud/cloud.cfg »
 ==> Modifié (par vous ou par un script) depuis l'installation.
 ==> Le distributeur du paquet a fourni une version mise à jour.
   Que voulez-vous faire ? Vos options sont les suivantes :
    Y ou I  : installer la version du responsable du paquet
    N ou O  : garder votre version actuellement installée
      D     : afficher les différences entre les versions
      Z     : suspendre ce processus pour examiner la situation
 L'action par défaut garde votre version actuelle.
*** cloud.cfg (Y/I/N/O/D/Z) [défaut=N] ? Y

→ Y

E: Impossible de configurer « libc6:amd64 ».
E: Impossible d'effectuer la configuration immédiate de « libtirpc3:amd64 ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations. (2)
E: Impossible de configurer « libc6:amd64 ».
E: Impossible d'effectuer la configuration immédiate de « libnsl2:amd64 ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations. (2)
E: Impossible de configurer « libc6:amd64 ».
E: Impossible d'effectuer la configuration immédiate de « libnss-nis:amd64 ». Veuillez consulter la page de manuel apt.conf(5) et notamment la section à propos de APT::Immediate-Configure, pour plus d'informations. (2)
W: Can not find PkgVer for 'libtirpc-common'
W: APT had planned for dpkg to do more than it reported back (2123 vs 2131).
   Affected packages: libtirpc-common:amd64

Un peu de stat

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux bullseye/sid
Release:	9.13
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
 
# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev               1,9G       0  1,9G   0% /dev
tmpfs              386M    440K  386M   1% /run
/dev/sda1           20G     11G  8,6G  55% /
tmpfs              1,9G     16K  1,9G   1% /dev/shm
tmpfs              5,0M       0  5,0M   0% /run/lock
tmpfs              1,9G       0  1,9G   0% /sys/fs/cgroup
tmpfs              386M       0  386M   0% /run/user/1001

Mise à niveau du noyau et des paquets liés

Installer un métapaquet du noyau

Doc Debian :

Quand vous faites une mise à niveau de Stretch vers Buster, 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                  5.9.1-1          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                  5.9.1-1          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 :
  camlp4 dh-python g++-6 geoip-database gnupg-agent ledit libbind9-140 libboost-filesystem1.62.0 libboost-iostreams1.62.0 libboost-system1.62.0
  libcamlp4-ocaml-dev libcgi-fast-perl libcgi-pm-perl libclass-accessor-perl libcroco3 libcwidget3v5 libdns-export162 libdns162 libevent-2.0-5
  libfcgi-perl libfindlib-ocaml libfindlib-ocaml-dev libgeoip1 libgmime-2.6-0 libhogweed4 libicu57 libio-string-perl libio-stringy-perl
  libip4tc0 libip6tc0 libiptc0 libisc-export160 libisc160 libisccc140 libisccfg140 liblwres141 libncurses-dev libncurses5-dev libnettle6
  libnotmuch4 libparse-debianchangelog-perl libperl5.24 libprocps6 libpython2-dev libpython2.7 libpython2.7-dev libpython3.6 libpython3.6-dev
  libssl1.0.2 libstdc++-6-dev libtalloc2 libtinfo-dev libunistring0 linux-image-4.9.0-3-amd64 ocaml-base-nox ocaml-compiler-libs ocaml-findlib
  ocaml-interp ocaml-man ocaml-nox perl-modules-5.24 postgresql-9.6 postgresql-client-9.6 postgresql-contrib-9.6 python-cffi-backend
  python-configargparse python-configobj python-cryptography python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress
  python-meld3 python-mock python-openssl python-parsedatetime python-pbr python-psutil python-pyasn1 python-pycurl python-pyicu
  python-pyparsing python-rfc3339 python-six python-urllib3 python-zope.component python-zope.event python-zope.hookable python-zope.interface
  python2.7-dev python3-cairo python3-dbus python3-entrypoints python3-gunicorn python3-jeepney python3-keyring python3-keyrings.alt
  python3-prettytable python3-pyasn1 python3-pycryptodome python3-secretstorage python3-xdg python3.6-dev rename sgml-base tcpd xml-core
0 mis à jour, 0 nouvellement installés, 108 à enlever et 5 non mis à jour.
Après cette opération, 1 049 Mo d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] O

Nouvelle instruction du site Debian:
https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html#for-next

# dpkg -l | awk '/^rc/ { print $2 }'
 
# apt purge $(dpkg -l | awk '/^rc/ { print $2 }')

Arrêt du script de record par Ctrl-D

Reboot

Un petit uptime avant de reboot :

# uptime
22:01:37 up 767 days,  5:45,  1 user,  load average: 0,09, 0,13, 0,18
# uptime -p
up 2 years, 5 weeks, 4 days, 5 hours, 45 minutes

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
 
$ cat /etc/debian_version
9.5
 
$ 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

Versions après reboot :

# uptime
 22:13:15 up 0 min,  1 user,  load average: 0,73, 0,25, 0,09
# uptime -p
up 0 minutes
# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux bullseye/sid
Release:	testing
Codename:	bullseye
 
# cat /etc/debian_version
bullseye/sid
 
# uname -a
Linux vps408839.ovh.net 5.9.0-1-amd64 #1 SMP Debian 5.9.1-1 (2020-10-17) x86_64 GNU/Linux
 
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux bullseye/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Bilan montée de version

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

Versions Avant Après
Debian 9.5 bullseye/sid testing
Noyau GNU/Linux 4.9.110-3+deb9u4 (2018-08-21) 5.9.1-1 (2020-10-17)

Ré-install des packages supprimés

# apt install man-db
# apt install bash-completion