Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 23/10/2013, à 00: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, à 21:07)

Hors ligne

#2 Le 23/10/2013, à 21: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

Haut de page ↑