Faire un miroir avec apt-mirror de raspberry.org

Je ne vais pas vous réexpliquer comment faire un miroir local, mais comment arriver à faire un miroir pour le raspberry Pi.

Si vous essayez d’utiliser apt-mirror sur une version plus ancienne que Quantal, vous aurez une erreur disant que apt-mirror ne peut localiser le dépôt arm (binary-arm/Packages.gz). Or, il devrait chercher armhf (binary-armhf/Packages.gz)!

Il suffit d’aller modifier /usr/bin/apt-mirror avec un éditeur quelconque pour modifier la ligne 269 ainsi:

remplacer

if($config_line =~ /deb-(alpha|amd64|armel|arm|hppa|hurd-i386|i386|ia64|lpia|m68k|mipsel|mips|powerpc|s390|sh|sparc)/) {
par

if($config_line =~ /deb-(alpha|amd64|armel|armhf|arm|hppa|hurd-i386|i386|ia64|lpia|m68k|mipsel|mips|powerpc|s390|sh|sparc)/) {

en fait, on rajoute armhf avant arm, afin qu’il ne s’arrête pas sur la première correspondance, qui serait incomplète.

Sauvegardez, et ajoutez ensuite dans le fichier /etc/apt/mirror.list la ligne suivante:

deb-armhf http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi

Il ne vous reste plus qu’à lancer apt-mirror pour créer votre miroir local et accélérer le téléchargement des paquets de votre Raspberry Pi.

Créer un miroir local Ubuntu

Cet article va vous apprendre à créer un miroir local d’un dépôt Ubuntu sur un ordinateur équipé d’Ubuntu Hardy Heron 8.04.

Les raisons du miroir

Dans mon cas, il s’agit de pouvoir installer des logiciels sur l’ordinateur même lorsque l’accès au net est impossible (train, correspondances…) et de pouvoir mettre sur un réseau le miroir générer pour les mises à jour. Sans compter que le miroir local permet une rapidité d’accès sans commune mesure avec un miroir sur le net.

Synoptique

J’ai la chance d’avoir un portable avec de la place sur le disque dur. Sachez qu’il faut compter environs 37 Go de libre pour le miroir de Hardy aujourd’hui. 40 est un minimum, dans mon cas ce sera 52 Go.

Le portable étant connecté au réseau toutes les nuits, il se mettra à jour vers 6 heures du matin, une heure où je suis sensé dormir.

L’installation d’un serveur apache permettra un accès facile pour les autres ordinateurs du réseau.

Préparation du miroir

Dans mon cas, il s’agit d’une partition dédiée (sda9) . Comme je possède déjà un autre miroir local sur mon réseau, et afin de sauvegarder de la bande passante et du temps, j’effectue une synchronisation entre le miroir local existant et la partition sda9.

Cette étape n’est absolument pas obligatoire mais mon réseau local Gigabit étant bien plus rapide que le net à 10 Mb, j’aurais tort de m’en priver.

Installation du logiciel

sudo apt-get install apt-mirror

Il faut maintenant éditer le fichier /etc/apt/mirror.list afin d’adapter le fonctionnement à la machine.

Le fichier est simple et parlant :

  • set base_path : emplacement où seront copiés les fichiers. Par défaut, ce sera /var/spool/apt-mirror (1). Dans mon cas, ce sera /ubuntu, emplacement où est monté sda9.

Puisque nous avons modifié la chemin par défaut, et que les répertoires nécessaires sont créés lors de l’installation du programme, il faut créer dans /ubuntu les répertoires mirror, skel, var, puis donner les droits sur ces répertoires à l’utilisateur apt-mirror (ce que nous ferons en dernier).

mkdir -p /ubuntu/mirror /ubuntu/skel /ubuntu/var

Comme nous avons modifié les chemins, copions le fichier de nettoyage au nouvel endroit:

cp /var/spool/apt-mirror/var/clean.sh /ubuntu/var/clean.sh

Ne touchez pas aux chemins suivants du fichier de configuration à moins que vous ne sachiez ce que vous faites.

  • set defaultarch: Prend l’architecture du serveur par défaut. Cela correspond à l’architecture voulue du miroir . Dans mon cas: i386
  • set nthreads: 20 par défaut. Définit le nombre de threads qui téléchargeront en parallèle lors de la mise à jour du miroir. Inutile de trop monter ce chiffre: si vous saturez votre bande passante, chaque thread sera limité et vous téléchargerez moins vite tout en consommant plus de processeur.
  • set _tilde (ou set tilde sur les versions avant la 8.04): par défaut 0. Si vous le mettez à 1, permet de remplacer http://addr/~/xxx/yyy par http://addr/%7E/xxx/yyy (sans doute plus portable).

Viennent ensuite les lignes définissant les miroirs que vous voulez cloner en local. Dans mon cas, voici les lignes existantes:

deb http://be.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://be.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://be.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb http://be.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse

#deb-src http://be.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
#deb-src http://be.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
#deb-src http://be.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
#deb-src http://be.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
#deb-src http://be.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse


clean http://be.archive.ubuntu.com/ubuntu

La (ou les ) dernière(s) ligne(s) doivent commencer par clean et concerner les miroirs clonés. Elle permettra (pas toujours) de nettoyer le miroir local des paquets n’ayant plus lieu d’être. J’ai pu constater que le lancement manuel de la commande de nettoyage du miroir était plus efficace (au moins sur les versions précédentes de apt-mirror).

Note: pourquoi utiliser les miroirs belges plutôt que les français, puisque je suis en france ? J’ai pu constater que les miroirs français étaient souvent plus longs à répondre et saturés. Je n’ai jamais eu de problèmes avec les miroirs belges. Sans compter qu’il est probable que les linuxiens belges soient moins nombreux que les linuxiens français, d’où une réponse plus rapide. Ou aient des réseau plus adaptés.

Donner les droits sur le répertoire: sudo chown -R apt-mirror:apt-mirror /ubuntu

Mise à jour

Très simple!

  • Soit manuellement en lançant la commande apt-mirror
  • Soit automatiquement par le cron:0 6 * * * /usr/bin/apt-mirror
(1) Au passage, comment saturer une partition var, bloquer les impressions cups, ce qui va saturer /var/log d’erreurs et finir par bloquer le système….