Page 1 sur 1

[Bash] Upgrade vers debian 12

Publié : 12 juin 2023, 11:05
par Guigui
Hello everybody,

Edit : Le script est valable sur DEBIAN, pas forcement sur RASPBIAN !

Voici un petit script pour upgrader votre distrib' facilement.

Vous pouvez entrer en paramètre d'appel minimal (pour un upgrade minimum) ou full (pour un upgrade total)

Première phase, mise à jour de votre distribution.
Deuxième phase, Upgrade.

Si vous avez oublié le paramètre d'appel, un prompt vous invitera à le renseigner.
Lors de l'upgrade
Faire Y ou oui à toutes les demandes.

Eventuellement faire un "q" si on vous demande un prompt qui commence par ":"

et à la fin, faire un 'reboute' des familles.



Point important le fichier /etc/sudoers sera modifié lors de l'upgrade, pensez à le remodifier, j'ai integré une sauvegarde dudit fichier (/etc/sudoers vers /etc/sudoers_old_debian)

Bonne journée !

Code : Tout sélectionner

#!/bin/bash

# Fonction pour vérifier le temps d'activité du système en secondes
check_uptime() {
    # Récupérer le temps d'activité du système en secondes
    uptime_seconds=$(cut -d. -f1 /proc/uptime)
    # Retourner le temps d'activité en secondes
    echo "$uptime_seconds"
}

# Fonction pour vérifier le timestamp du fichier srcpkgcache.bin
check_timestamp() {
    # Récupérer le timestamp du fichier srcpkgcache.bin
    file_timestamp=$(stat -c %Y /var/cache/apt/srcpkgcache.bin)
    # Retourner le timestamp
    echo "$file_timestamp"
}

# Vérifier le temps d'activité du système
system_uptime=$(check_uptime)

# Vérifier le timestamp du fichier srcpkgcache.bin
file_timestamp=$(check_timestamp)

# Si le temps d'activité est supérieur à 3600 secondes ET  le timestamp du fichier est inférieur à 3600 secondes, passer à la suite du script
if [ "$system_uptime" -lt 3600 ] && [ "$file_timestamp" -gt "$(date +%s -d 'now - 3600 seconds')" ]; then
    echo "Temps d'activité du système supérieur à 1 heure (3600 secondes) et le fichier srcpkgcache.bin a été modifié il y a plus d'une heure. Passage direct à la suite du script."
else
    # Mettre à jour les packages existants et redémarrer le système Debian 11
        sudo apt update
        sudo apt upgrade -yy
        sudo apt full-upgrade -yy
        sudo apt autoremove -yy
        sudo systemctl reboot
        exit 0
fi

# Vérifier le paramètre d'entrée
if [ -z "$1" ]; then
    echo "Veuillez spécifier 'full' ou 'minimale' comme paramètre d'entrée."
    read -r -p "Choisissez 'full' ou 'minimale': " upgrade_option
else
    upgrade_option="$1"
fi

# Valider le paramètre d'entrée
if [ "$upgrade_option" == "full" ] || [ "$upgrade_option" == "FULL" ]; then
    # Préparer la mise à niveau complète du système d'exploitation
    sudo apt upgrade -y
elif [ "$upgrade_option" == "minimale" ] || [ "$upgrade_option" == "minimal" ] || [ "$upgrade_option" == "MINIMALE" ] || [ "$upgrade_option" == "MINIMAL" ]; then
    # Préparer la mise à niveau minimale du système d'exploitation
    sudo apt upgrade --without-new-pkgs -y
else
    echo "Paramètre d'entrée non valide. Veuillez spécifier 'full' ou 'minimale'."
    exit 1
fi

# Sauvegarder le fichier sources.list existant
sudo cp /etc/apt/sources.list /etc/apt/old_debian_11_sources.list

# Créer un nouveau fichier sources.list
sudo tee /etc/apt/sources.list > /dev/null << EOF
deb http://deb.debian.org/debian/ bookworm main
deb-src http://deb.debian.org/debian/ bookworm main

deb http://security.debian.org/debian-security bookworm-security main
deb-src http://security.debian.org/debian-security bookworm-security main

deb http://deb.debian.org/debian/ bookworm-updates main
deb-src http://deb.debian.org/debian/ bookworm-updates main

deb http://deb.debian.org/debian bookworm non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm non-free non-free-firmware

deb http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb-src http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware

deb http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
EOF

# Sauvegarder le fichier sudoers qui sera effacé lors de l'upgrade
sudo cp /etc/sudoers /etc/sudoers_old_debian

# Mettre à jour l'index des packages sur Debian Linux
sudo apt update

# Mettre à niveau Debian 11 vers Debian 12 (bullseye)
sudo apt full-upgrade -y


Re: [Bash] Upgrade vers debian 12

Publié : 12 juin 2023, 20:38
par Keros
Merci de ce partage.

:!: Rappelons qu'avant toute mise à jour, il est préférable de faire une sauvegarde complète de votre système.

Re: [Bash] Upgrade vers debian 12

Publié : 13 juin 2023, 14:26
par mike913
Bonjour,
J' ai fait la mise à jour, pas avec le script car chez moi il y avait beaucoup d' erreurs (dues à la copie ?) sur une carte SD qui me sert pour les tests.
J' ai donc utilisé la méthode classique (changer /etc/apt/sources.list avec les nouveaux dépôts)
puis mise à jour du système et reboot.
Image
Erreur 502 sur le serveur WEB (NGinx) , du à la nouvelle version de PHP 8.2.5 au lieu de 7.3 après modification du fichier de configuration de NGinx tout est rentré dans l'ordre.
Je n' ai pas domoticz sur cette carte et je ne ferait pas l"essai.

Re: [Bash] Upgrade vers debian 12

Publié : 13 juin 2023, 18:41
par Guigui
ATTENTION

Le script est valable sur DEBIAN, pas forcement sur RASPBIAN !

Re: [Bash] Upgrade vers debian 12

Publié : 13 juin 2023, 21:04
par Keros
D'ailleurs, les ISO d'installation de Raspberry Pi OS ne sont pas encore passés à la nouvelle version : https://www.raspberrypi.com/software/operating-systems/