Si vous avez une machine sous linux debian, mais que vous ne disposez pas de connexion réseau pour le transfert de données, voilà une solution.

Par R. Suinot: rsuinux@gmx.fr

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:

  1. connaitre les sites contenant les paquets debian
  2. 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
  3. demander à apt de regarder les paquets à mettre à jour, puis en faire une liste, avec l'adresse du site pour chaque paquet
  4. récupérer les paquets
  5. les transférer sur la machine
  6. 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:

Description des scripts:
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:
http://ftp.debian.org/debian/dists/woody/contrib/binary-i386/Packages.gz
puis s'arrete.
get_packages.pl Note les sites répertoriés dans le fichier de configuration de apt (/etc/apt/sources.list),
fait une copie:
  • du fichier /etc/apt/sources.list
  • des fichiers du répertoire /var/cache/apt/ (earch, pkgcache.bin, srcpkgcache.bin)
  • des fichiers du répertoire /var/lib/apt/lists/ (dépend du contenue de sources.list)
puis crée un nouveau fichier de sources pour apt (new_sources.lst);
crée un fichier listant la localisation sur internet des fichiers Packages.gz et Release à récupérer (Debian.lst);
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 pour récupérer les fichiers inscrit dans un fichier de liste (voyez le man wget pour plus de détails).




Si vous utilisez les scripts de ce projet, merci de me le faire savoir pour correction de bogue(s), amélioration(s), offre de traduction, .....


© R. Suinot 2002

Ce site est continuellement en chantier, surtout la partie 'Journal de bord' (cf 'Documentations').
Cependant, vous pouvez quand même me contacter et me donner vos avis/idées/corrections à rsuinux <at> gmx.fr

Mise en place du site:   11 Juillet 2001     Dernière mise à jour: 11/05/04

Vous êtes     à être passé me voir!

Valid HTML 4.01! Valid CSS!