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".