Création de point de restauration rapide

Voilà vite fais un petit tutoriel à étayer ( je verrai ça probablement ce week-end entre deux inter, ou durant la semaine ).

Suite à ce fil :
http://www.debian-fr.org/mauvaise-commande-aptitude-t39059.html

L’idée lorsque l’on simule une grosse mise à jour ou un bidouillage, une création rapide d’un point de restauration du système à base de fichier texte ( attention toute fois il faudra par cette astuce désinstaller et réinstaller via le réseau le système actuelle ).

Nous allons d’aborde crée un fichier texte contenant la liste des paquets actuellement installé, pour le nom c’est open ( vous mettez ce qui vous parle le plus la date est bien pratique en cas de multiples bidouillages ).

# dpkg --get-selections > Restauration_Date.txt

Une fois ce fichier produit vous pouvez mettre le “dawa” vous avez soit un point de restauration créer via le script de sauvegarde présent sur le forum et le wiki il me semble soit à l’aide de votre petit fichier texte.

Si tous c’est bien passé après vos bidouillages tant mieux mais si comme bien souvent le système se retrouve boiteux voir cassé il va falloir alors procéder de la manière suivante.

On va nettoyer la liste de tous les paquets installé pour la désinstallation.

# dpkg --clear-selections

On remplit la liste fraîchement nettoyer avec la liste adéquat de paquets à installer avec le contenu du fichier texte “Restauration_Date.txt” par exemple.

# dpkg --set-selections < Restauration_Date.txt

On applique alors la mise à jour des paquets de la liste.

# apt-get dselect-upgrade

ou

# aptitude deselct-upgrade

PS : j’ai pas encore eu l’occasion de testé la commande avec aptitude :think:

Si quelqu’un à envie de s’amuser à rajouter des choses qu’il le fasse :033

Salut,

Comme je ne me fait pas confiance sur l’appréciation des risques, j’ai automatisé la création de la liste au démarrage du système, quitte à l’écraser en cours de journée si je devenais raisonnable :slightly_smiling:

[quote=“ggoodluck47”]Salut,

Comme je ne me fait pas confiance sur l’appréciation des risques, j’ai automatisé la création de la liste au démarrage du système, quitte à l’écraser en cours de journée si je devenais raisonnable :slightly_smiling:[/quote]

C’est vrai qu’une simple tache CRON n’est pas une mauvaise idée, vue que je fais assez régulièrement cette manip lors de mes mises à jours :033

Salut,

Idem,
J’ai même fait un script… update, sauvegarde de l’état des paquets, mail si MAJ à faire (avec l’état des paquets en PJ), et dist-upgrade en mode téléchargement. Avoir l’état des paquets en PJ est pratique et permet de garde un historique au cas ou…

Enfin c’est sur mes stables… Sur une Sid tu croulerais sous les mails de maj… :005

Par contre je sauvegarde le liste des paquets avec les deux méthodes (dpkg et aptitude). j’ai déjà eu, à la réinstallation, des mauvaises surprises avec dpkg…

Salut,

Toi, Lol, tu serais plutôt du genre ceinture ET bretelles :laughing:

[quote=“ggoodluck47”]Salut,
Toi, Lol, tu serais plutôt du genre ceinture ET bretelles :laughing:[/quote]

Les listes de dpkg et aptitude ne pèsent rien (quelques dizaines de kilos) ce serait dommage de s’en priver… :wink:

Salut,
Je vous donne le script que j’utilise, c’est tout de même bien pratique:

[code]#!/bin/sh
#Copyright: lol [à] isalo.org
#License: GPL

MAIL_CMD="/usr/bin/mail"
EMAIL_ADDR=“nom@domaine.tld"
TMPNAME=”mktemp"

IPADDR="LC_ALL='en' /sbin/ifconfig eth0 | sed -n -e'/inet addr:/s/^.*inet addr:\([0-9.]*\).*$/\1/p'"

if [ -z ${IPADDR} ]; then
IPADDR="LC_ALL='en' /sbin/ifconfig eth0:1 | sed -n -e'/inet addr:/s/^.*inet addr:\([0-9.]*\).*$/\1/p'"
fi

if [ -z ${IPADDR} ]; then
IPADDR=/bin/hostname -f
fi

apt-get update > /dev/null

dpkg --get-selections > /var/backup/dpkg.list

Restauration: dpkg --clear-selections && dpkg --set-selections < dpkg.list && apt-get -u dselect-upgrade

aptitude search ‘~i !~M’ -F ‘%p’ > /var/backup/aptitude.list

Restauration: aptitude install aptitude.list

if [ apt-get --just-print upgrade | grep -c -E "^Inst" -gt “0” ]; then

echo -e “apt-get upgrade voudrait mettre à jour les paquets suivants:\n” >> ${TMPNAME}

Choisir entre les deux options suivantes:

#apt-get --just-print -u upgrade | grep "^Inst " | awk '{print$2}' >> ${TMPNAME} # Description courte
apt-get update >/dev/null; apt-get --simulate --quiet=2 upgrade >> ${TMPNAME} # Description plus complète
echo -e “\n-------------------------------------\nMises à jour de Sécurité, vous connaissez la musique…” >> ${TMPNAME}
${MAIL_CMD} -s “Mise(s) à jour en attente sur ${IPADDR}” ${EMAIL_ADDR} < ${TMPNAME}
rm -f ${TMPNAME}
echo | ${MAIL_CMD} -s “Etat des paquets” -a “/var/backup/dpkg.list” -a “/var/backup/aptitude.list” ${EMAIL_ADDR}
fi

dist-upgrade en mode téléchargement seulement

apt-get dist-upgrade -yd

exit[/code]

Le script fait:

  • Un update
  • Une double sauvegarde de l’état des paquets (une avec dpkg et une avec aptitude)
  • Vous envoie un mail en cas de mise à jour à faire et un mail avec en pièce jointe l’état des paquets (faudrait n’en faire de mail qu’un d’ailleurs…)
  • Télécharge les paquets à mettre à jour (ça permet de ne pas attendre le téléchargement quand l’envie vous vient de faire la MAJ; Les paquets sont là, tout chauds…)