De la bonne compréhension du fonctionnement de dpkg et apt-get (was: Re: Aide pour déboguer un petit script.sh)

Séb seb.bubuntu at gmail.com
Sam 3 Avr 10:26:56 UTC 2010


Désolé pour la longueur du sujet...

Alcachofa wrote:
> J'ai copié le script et l'ai collé dans la  console.
> Il fonctionne - Commande 1 ( sauvegarde) Ok - en tout cas un fichier est 
> crée et le contenu semble corret?!
> Commande 2 ( restauration ) je n'ai pas eu de probleme ni d'erreur...

C'est tout à fait normal. Si tu as fait les commandes l'une après l'autre, le script n'a même RIEN fait!
Explications détaillées de la méthode utilisée dans le script:

La commande de sauvegarde est la suivante:
dpkg --get-selections > nomdefichierquelconque.txt

"dpkg --get-selections" affiche les paquets installés (sans le détail des versions effectivement installées!); couplé à 
"> nomdefichierquelconque.txt", cela permet de rediriger ce qu'affiche dpkg vers un fichier.
Cela permet donc de stocker la liste des paquets installés sur le système.

Les commandes de restauration sont les suivantes:
dpkg --clear-selections
puis
dpkg --set-selections < nomdefichierquelconque.txt
et enfin
sudo apt-get dselect-upgrade

"dpkg --clear-selections" désélectionne (i.e. marque comme candidats à la désintallation) les paquets non essentiels.
"dpkg --set-selections < nomdefichierquelconque.txt" permet de sélectionner (i.e. marquer pour l'installation) les 
paquets listé dans le fichier "nomdefichierquelconque.txt". Cela permet ainsi de ne sélectionne à l'installation/mise à 
jour que les paquets listés dans le fichier "nomdefichierquelconque.txt".
Pour finir, "sudo apt-get dselect-upgrade" se charge d'appliquer les changements dus à l'effet des deux commandes 
précédentes. Pour cela apt-get va interroger sa base de données des paquets disponibles et mettre à jour (ou installer) 
les paquets avec *la dernière version disponible d'après sa base de données*, ce qui veut dire (si la base de données 
est à jour) que le paquet sera installé/mis à jour avec la dernière version disponible dans les dépôts. Il s'agit du 
comportement intrinsèque des utilitaires de gestion des paquets et liés au fonctionnement des dépôts et des paquets.
Il y a donc deux corollaires à cela:
1. Si jamais un paquet est listé dans le "fichier de sauvegarde" mais n'est pas présent dans la base de donnée utilisée 
par apt-get, ce dernier renverra une erreur.
2. Les paquets qui sont déjà installés (dans leur dernière version) sur le système et listés dans le "fichier de 
sauvegarde" ne seront pas réinstallés par apt-get.

J'espère que les choses sont maintenant plus claires pour tout le monde et qu'il apparait plus évident aux intéressés 
que le comportement n'est peut-être pas celui d'une méthode de restauration telle qu'ils l'entendent.

Mes deux centimes,

Séb




Plus d'informations sur la liste de diffusion ubuntu-fr