[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Re : Re: Un systhème simple pour sauvegarder les partitions d'un os en train de tourner.



Le 10/04/2023 à 17:39, benoit a écrit :
Comme méthode je vois sur le net :

1) Demander la liste au système :

dpkg --get-selections > ma_liste.txt

Puis pour réinstaller :

dpkg --set-selections < ma_liste.txt
apt-get dselect-upgrade



2) Demander la liste au système :

apt-mark showmanual > ma_liste.txt

et aussi :
apt-clone clone `uname -n`
ca fait un fichier .tar.gz la ou on se trouve

On peut ensuite reinstaller cette liste de paquets sur une autre distro identique avec :
apt-clone restore <nom du tar.gz>

Ou alors reinstaller cette liste sur une nouvelle version de la distro avec :
apt-clone restore-new-distro <nom du tar.gz>

-------------------------------

et aussi :
La meme avec aptitude
  aptitude -F "%p" search '~i!~M' > paquets.list
ou bien
  aptitude -F "%p" search ~i\!~M > paquets.list
(faut échapper le ! que le shell interprête)

C'est le !~M qui retire les paquets installés automatiquement.

-F '%p' pour avoir seulement le nom du paquet dans la sortie (ni version ni état ni description)
~i      pour les paquets installés
~M      paquets installés automatiquement
!~M     sauf les paquets auto
~c pour avoir les paquets installés puis retirés mais non purgés

Il y a beaucoup d'autres critères possibles pour le search, cf la doc

pour réinstaller, copier le fichier paquets.list puis
  apt install $(<paquets.list)
le chevron fermant n'a pas été oublié, il ne doit pas y etre, ca fait l'équivalent de $(cat paquets.list)

--------------------------------

et aussi :
pour lister les paquets installes manuellement :
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) > installes-manuellement.txt

source https://askubuntu.com/questions/2389/generating-list-of-manually-installed-packages-and-querying-individual-packages

---------------------------------

Mais quand je fais ca, en général je n'ai pas envie de reinstaller tous les paquets tel qu'el. J'ai sur mon ordi des trucs que j'ai installés juste pour les tester et que je n'ai pas adoptés, alors tant qu'a faire autant en profiter pour faire le ménage.

Les méthodes ci dessus donnent toutes des listes de paquets énormes dans lesquelles il est terriblement fastidieux d'aller fouiller a la main. Notamment les fameux tasksel, comprenant tous les paquets du bureau qu'on a choisi et leurs innombrables dépendances, ont été cochés manuellement a installer pendant la procédure d'installation et donc sortent en tant que paquets installés manuellement avec les méthodes ci dessus.

Au final, la méthode que j'utilise c'est d'aller fouiller dans les logs de dpkg. Pour sauvegarder ce qu'on a installé, il suffit donc de sauvegarder ces logs. Ils sont dans /var/log et ils s'appellent :
dpkg.log
dpkg.log.1
dpkg.log.2.gz
dpkg.log.3.gz
dpkg.log.4.gz
etc…

Ma procédure :

Commencer par copier le tout dans un dossier temporaire (par exemple tmp dans le dossier personnel) et décompresser ceux qui finissent par .gz

Fouiller dedans en cherchant le mot clef " install " (avec un espace avant et après le mot)
grep -R " install " ~/tmp/
On peut aussi classer le résultat par ordre chronologique et verser le tout dans un fichier :
grep -hR " install " ~/tmp/ | sort > ~/tmp/liste-install.txt

Dans ce fichier on trouve facilement tout ce qui a été installé automatiquement par l'installation du système (en général c'est tout sur le premier jour, parfois a cheval sur les 2 premiers jours) et on peut donc le supprimer. Ce qui reste c'est les paquets qu'on a installés après que l'installation du système ne soit terminée, et ca c'est réaliste de se palucher la liste pour trier. Il reste quand meme plein de dépendances dans cette liste, si quelqu'un connait un moyen pour virer tout ce qui est dépendance et ne garder que les noms qu'on a tapés dans les commandes apt install <nom-du-paquet> ou aptitude, ou coché en cliquant a la main dans synaptic ou toute autre méthode d'installation, je suis preneur.

Une fois le tri fait, il reste ce qu'on veut reinstaller sur le nouveau système. Il faut donc extraire les noms des paquets : cut -d " " -f 4 ~/tmp/liste-install.txt | cut -d ":" -f 1 | tr '\012' ' ' > ~/tmp/liste-noms-paquets.txt On obtiens une jolie liste de noms de paquets a coller dans la commande apt install. Tout ce qui n'est pas dans cette liste avait été installé automatiquement lors de l'installation du système, donc sera installé automatiquement quand on refera l'installation.

Attention : par défaut debian ne garde les logs de dpkg que pendant 12 mois. C'est court si on veut s'en servir d'historique de tout ce qu'on a installé. N'ayant pas trouvé comment lui dire de ne pas supprimer les vieux logs, j'ai réglé le délai de conservation des logs dpkg a 120 mois, comme ca je suis tranquille. Ca se fait en mettant "rotate 120" a la place de "rotate 12" dans /etc/logrotate.d/dpkg

Quant aux paquets installés avec les choix cochés à l'installation, sont ils bien contenu sous task-desktop, task-french, task-french-desktop, task-lxde-desktop, tasksel de cette liste ?
Parce que je ne trouves pas libreoffice dans les dépendances de ces paquets...

Je n'utilise pas lxde alors je peux pas te dire avec certitude, mais oui il est probable que libreoffice soit en dépendance d'un paquet qui contiens a la fois "task" et "desktop". Je sais pas lequel par contre. De facon générale, tous les logiciels qui sont présents par défaut a la fin de la procédure d'installation seront probablement en dépendance d'un de ces paquets "task".


Reply to: