Contenu
Une belle histoire?
Voici mon problème: je dispose d'une machine (appelons la ncc1701d), fonctionnant sous debian, mais qui ne dispose, comme moyen de connexion externe, que des ports série et parallèle, d''une prise usb et du lecteur de cdrom. La version de debian installée est nommée woody (stable), mais je voudrais essayer de passer en sarge (testing).
A côté de cela, je dispose quand même d'un ordinateur connecté au net, avec un taux de transfert rapide, donc pouvant me récupérer les paquets désirés/nécessaires.
J'ai eu beau chercher sur le net, je n'ai pas trouvé de solution plaisante pour faire une (ou plusieurs) mise à jours. Je me suis donc porté volontaire pour créer un système permettant de faire cela 'relativement' facilement.
Description du projet
Pour faire une remise à niveau du système sous debian, il y a LA solution apt. Pour ceux qui ne connaissent pas,
voici un très court résumé:
apt maintient une base de données des softs présents sur la machine, et dispose d'une liste de sites internet possédant
les paquets debian récents. Lors d'une connexion, vous demandez à apt de récupérer les versions des paquets
sur les sites connus, puis il va vérifier s'il y a des mises à jours à effectuer. Vous n'avez plus qu'à lui dire de faire
l'upgrade, il ne récupèrera que ce qu'il faut, et pas plus.
Pour faire tout cela, les sites internet faisant dépôt des paquets, contiennent un (ou plusieurs) fichier(s) Packages.gz.
Le contenu de ceux-ci permet à apt de connaitre les versions des paquets présents sur le site ou le fichier a
été récupéré.
Pour mon problème, il me faut donc effectuer un certain nombre de choses:
- connaitre les sites contenant les paquets debian
- récupérer les fichiers Packages.gz et Release (si ceux-ci existent) de ces sites, puis les transférer sur la machine sans connexion
- demander à apt de regarder les paquets à mettre à jour, puis en faire une liste, avec l'adresse du site pour chaque paquet
- récupérer les paquets
- les transférer sur la machine
- demander gentiment à apt d'installer les nouvelles versions
Dans mon cas, j'utiliserai le port usb pour le transfert des fichiers (grace à mon disk on key, voyez le lien pour l'utiliser sous linux)
Pour la récupération des fichiers, la machine est sous windows, mais la méthode est la même pour une machine sous linux:
utilisation de wget. (le programme existe pour les deux systèmes, et son utilisation est identique aussi!)
Les scripts perl
Les scripts sont au nombre de 4, et se présentent comme ceci:
- get_packages.pl
- install_packages.pl
- get_files.pl
- install_files.pl
Description des scripts:
get_packages.pl | Note les sites répertoriés dans le fichier de configuration de apt (/etc/apt/sources.list), fait une copie:
crée un fichier listant la localisation sur internet des fichiers Packages.gz et Release à récupérer (Debian.lst); |
crée un fichier répertoriant tous les fichiers Packages.gz et Release à récupérer, sous la forme d'une ligne de ce type:
install_packages.pl | Récupère les fichiers Packages et Release, puis les installe dans /var/tmp/no-rezo/ |
get_files.pl | regarde quelle(s) fichier(s) est(sont) à mettre à jour, et crée la liste avec le chemin exacte, pour le(s) récupérer sur internet |
install_files.pl | installe les paquets debian dans /var/cache/apt/archives/ et fait la mise à jour! |
Download
Pour le momment, il n'y a pas grand chose à récupérer. Les scripts seront mis au fur et à mesure de leur avancement, sans numéro de version.
Il vous faudra regarder la date dans les lignes d'entête des scripts.
Ils seront la: http://rsuinux.free.fr/Projet/download/
Conclusion
Le principe fonctionne, si l'on prend garde de bien noter les répertoires selon le nom du site des paquets. Je l'ai fait à la main,
ce n'est pas des plus pratique (ce serait bien de faire des scripts, non?), mais ça marche!
Avec wget, il faut utiliser les options -x pour garder la hiérarchie des répertoires, et l'iption -i