#1 Le 22/10/2013, à 23:20
- LomigLavnek
[Script] Apt Reborn : Revenir à l'état initial de sa distribution
Je laisse ce message tel quel pour l'historique, mais le script ayant évolué, veuillez vous reporter au suivant:
Bonjour,
A force de tester des logiciel, il se peut que l'on souhaite revenir à un état initial de la distribution, celui même que l'on a juste apres une installation.
Pour ce faire, j'ai préparé un script simple permettant de le faire. Juste après ue installation fraiche, faire un
sudo dpkg -- get-selections >> initial
Il ne faudra jamais modifier ce fichier
Ensuite viens le fichier reborn.sh
#! /bin/bash
rm installed-today toremove toinstall
dpkg --get-selections >> installed-today
# suppression des paquets en trop
diff initial installed-today | grep \> | awk '{print $2}' >> toremove
REM=""
for line in $(<toremove)
do
REM="$REM $line"
done
apt-get remove --purge -y $REM
apt-get autoremove --purge
# rajout des paquets précédemment supprimés
diff installed-today initial | grep \> | awk '{print $2}' >> toinstall
INS=""
for line in $(<toinstall)
do
INS="$INS $line"
done
apt-get update
apt-get install -y $INS
apt-get clean
Il va vous supprimer les application que vous avez installé par la suite,et vous réinstaller les application que vous avec supprimer. Vou voila revenu au point de départ.
Rien ne vous empeche ensuite de faire des point de restauration à partir de la premier manip
Dernière modification par LomigLavnek (Le 23/10/2013, à 20:07)
Hors ligne
#2 Le 23/10/2013, à 20:50
- LomigLavnek
Re : [Script] Apt Reborn : Revenir à l'état initial de sa distribution
Je viens de créer un script apt-reb pour APT Reborn.
Le principe est simple, pouvoir revenir en arrière facilement. Seule limitation, la version du logiciel qui n'est pas prise en compte.
Vous souhaitez revenir à une distribution tel qu'elle était après l'avoir installer, c'est possible. A chaque utilisation du script, il va créer un fichier des paquets installés au moment T.
Le script est une surcouche a apt-get. Je n'aime pas les bavardage théoriques, alors je vais vous montrer un exemple.
J'installe midori
sudo apt-reb install midori
Je désinstalle gitg (que j'ai installé précédement)
sudo apt-reb remove gitg
Maintenant je veux revenir en arriere. Je commence par consulter les sauvegarde de listes de fichiers:
sudo apt-reb restore-list
20131023-214206
20131023-214224
Elles apparaissent sous forme de date: AnneeMoisJour-HeureMinuteSeconde, et par ordre chronologique
Je veux donc revenir à la plus ancienne, je fais :
apt-reb restore 20131023-214206
Il me reinstalle donc gitg et me supprime midori, c'est a dire l'opération inverse de précédemment.
Maintenant, si je ne me souvient plus des manip que j'ai fait, ou a quelle date me fier, faites tous simplement
apt-reb history
et vous obtiendrez ceci:
20131023-214206
[install] midori
20131023-214224
[remove] gitg
20131023-214323
[restore] 20131023-214206
Pour le script en question, le voici :
#!/bin/bash
install() {
shift 1
PKG=""
for i in $@
do
PKG="$PKG $i"
done
DATE=$(date '+%Y%m%d-%H%M%S')
f="/var/lib/apt/reborn/"$DATE
dpkg --get-selections >> $f
apt-get install $PKG
if [ $? -lt 1 ];then
echo "" >> /var/log/apt/reborn-history.log
echo $DATE >> /var/log/apt/reborn-history.log
echo ' [install]' $PKG >> /var/log/apt/reborn-history.log
fi
}
remove() {
shift 1
PKG=""
for i in $@
do
PKG="$PKG $i"
done
DATE=$(date '+%Y%m%d-%H%M%S')
f="/var/lib/apt/reborn/"$DATE
dpkg --get-selections >> $f
apt-get remove $PKG
if [ $? -lt 1 ];then
echo "" >> /var/log/apt/reborn-history.log
echo $DATE >> /var/log/apt/reborn-history.log
echo ' [remove]' $PKG >> /var/log/apt/reborn-history.log
fi
}
restore() {
FILE="/var/lib/apt/reborn/$2"
DATE=$(date '+%Y%m%d-%H%M%S')
f="/var/lib/apt/reborn/"$DATE
dpkg --get-selections >> $f
# Suppression des paquets en trop
diff $FILE $f | grep \> | awk '{print $2}' >> /tmp/toremove
REM=""
for line in $(</tmp/toremove)
do
REM="$REM $line"
done
apt-get remove --purge -y $REM
apt-get autoremove --purge
# Rajout des paquets précédemment supprimés
diff $f $FILE | grep \> | awk '{print $2}' >> /tmp/toinstall
INS=""
for line in $(</tmp/toinstall)
do
INS="$INS $line"
done
apt-get install -y $INS
# Suppression des fichiers temporaires
rm /tmp/toremove /tmp/toinstall
if [ $? -lt 1 ];then
echo "" >> /var/log/apt/reborn-history.log
echo $DATE >> /var/log/apt/reborn-history.log
echo ' [restore]' $2 >> /var/log/apt/reborn-history.log
fi
}
restore-list(){
ls -l /var/lib/apt/reborn | awk '{print $9}'
}
update() {
apt-get update
}
upgrade() {
apt-get upgrade
}
dist-upgrade(){
apt-get dist-upgrade
}
clean(){
apt-get clean
}
autoremove(){
apt-get autoremove
}
story(){
cat /var/log/apt/reborn-history.log
}
if [ $# -lt 1 ]; then
echo "Vous devez spécifier un parametre"
exit 1
fi
case $1 in
install) install "$@";;
remove) remove "$@";;
restore) restore "$@";;
restore-list) restore-list;;
update) update;;
upgrade) upgrade;;
dist-upgrade) dist-upgrade;;
clean) clean;;
autoremove) autoremove;;
history) story;;
esac
On peut également utiliser les commande upgrade update dist-upgrade et autoremove d'apt-get avec apt-reb
Installation du fichier /bin/apt-reb
Stockage des listes de paquets installés : /var/lib/apt/reborn
Stockage de l'historique : /var/log/apt/reborn-history.log
J'espère que ça vous plaira, si vous avez des idées d'amélioration n'hésitez pas
Hors ligne