4. Obtenir votre copie locale de la distribution

Vous avez besoin d'une copie de la distribution sur un disque où vous pouvez écrire, et accessible à partir de l'ordinateur possédant le graveur. Si vous incorporez les dernières mises à jour, le répertoire doit (aussi) être accessible à partir d'une machine Linux, soit à partir d'un disque local, soit à partir du disque monté par NFS d'une autre machine, soit à partir d'un disque JAZ. Vous pouvez copier la distribution à partir des CDs de RedHat (recommandé), ou vous pouvez l'obtenir via FTP. Si vous choisissez d'utiliser FTP, il existe deux moyens de le faire. Vous pouvez utiliser un script shell basé sur wget, script présenté dans la section suivante, ou utiliser le paquet mirror comme suggéré par les versions précédentes et jusqu'à la 1.34 incluse de ce guide pratique (rapporté dans la section utiliser mirror).

4.1. Utiliser wget et bash

Ce n'est pas la plus simple des méthodes, même si elle est la plus précise. Je l'apprécie parce qu'elle permet de comparer les versions RPM des fichiers et non plus leur date/heure ou nom (comme les paquets standards de miroirs) et qu'elle vérifie les signatures des mises à jour à chaque fois qu'elle en télécharge quelques unes, si ceci est bien configuré avec la variable CHECKSIG dans le fichier rhcd.conf.

Créez un répertoire qui contiendra les fichiers d'installation et entrez à l'intérieur (cd) ; lancez ensuite la commande (qui téléchargera environ 3 Go de données sur votre disque dur) :

 
        $ wget -r -c -t0 -l0 --retr-symlinks -nH --cut-dirs=9 \
            ftp://ftp.mirror.ac.uk/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386
      

Vous voudrez probablement changer le miroir FTP de téléchargement et, en conséquence, le paramètre passé à l'option --cut-dirs. C'est en fait utilisé conjointement avec -nH pour éviter la re-création de la hiérarchie des répertoires du site FTP. Pour plus d'informations sur l'utilisation correcte de cette option, jetez un œil sur la documentation wget et les pages man correspondantes.

Si vous voulez exclure un ou plusieurs répertoires des téléchargements, vous pouvez utiliser l'option -X liste, où liste représente une liste de répertoires séparés par des virgules. Par exemple, pour exclure le répertoire SRPMS des précédents téléchargements, vous pouvez utiliser :

 
        $ wget -r -c -t0 -l0 --retr-symlinks -nH --cut-dirs=9 \
            -X /sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386/SRPMS \
            ftp://ftp.mirror.ac.uk/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386
      

Cela peut être utile si vous considérez la taille du répertoire SRPMS (environ 1.2 Go) ; en tout cas, je le trouve utile.

Si vous voulez vérifier les signatures GPG pour vous assurer de l'authenticité des paquets (ce que je recommende), vous devez installer le paquet gnupg (nécessaire uniquement pour la RedHat 7.3) et importer la clé publique security@redhat.com que vous trouverez dans le répertoire racine des CDs (RPM-GPG-KEY) ou sur le site web RedHat. La clé est importée en lançant la commande : gpg --import <filename> pour les releases jusqu'à la 7.3 (en l'incluant), ce qui a été remplacé par rpm --import <filename> pour la release 8.0 et 9 (pour plus d'informations sur ceci, jetez un œil sur les sites web de GNU Privacy Guard et de RPM -- Redhat Package Manager).

Si vous voulez vérifier les paquets RPM, vous pouvez le faire en utilisant la commande suivante (je suppose que vous la lancez à partir du répertoire où vous avez réalisé les téléchargements) :

Pour les releases jusqu'à la 7.3 (comprise) :

 
        $ find . -name "*.rpm" -exec rpm -K --nopgp {} \; |grep "NOT *OK"
      

Pour les releases 8.0 et 9 (ainsi que pour les futures releases, je suppose) :

 
        $ find . -name "*.rpm" -exec rpm -K {} \; |grep "NOT *OK"
      

Si vous ne voulez pas vous « ennuyer » avec toutes ces étapes, j'espère que vous voudrez au moins vérifier l'intégrité des fichiers téléchargés (ce qui ne veut pas dire que personne ne les a modifiés), à l'aide des signatures md5. Ceci est fait avec :

Pour les releases jusqu'à la 7.3 (comprise) :

 
        $ find . -name "*.rpm" -exec rpm -K --nopgp --nogpg {} \; |grep "NOT *OK"
      

Pour les releases 8.0 et 9 (ainsi que pour les futures releases, je suppose) :

 
        $ find . -name "*.rpm" -exec rpm -K --nosignature {} \; |grep "NOT *OK"
      

Le contenu d'une distribution RedHat ne change pas entre les releases, donc vous avez seulement besoin de télécharger ces paquets UNE FOIS. Tous les changements de la distribution sont dans le répertoire updates. Donc, si vous voulez conserver un miroir à jour de la distribution RedHat, vous avez seulement besoin de maintenir le répertoire updates à jour. Ceci se fait en utilisant le script updateDist.sh. Avant d'utiliser le script, vous devez configurer le fichier rhcd.conf et exporter la variable RHCDPATH pointant vers le répertoire où se trouve le fichier.

        $ export RHCDPATH=/home/luigi/tmp/rhcd-scripts
        $ sh updateDist.sh
      

Ce script va télécharger les nouvelles mises à jour en excluant les sous-répertoires contenus dans la variable EXCLUDELIST, en déplaçant les anciens (c'est-à-dire ceux remplacés par les nouvelles versions) dans le répertoire représenté par la variable OLDDIR après avoir réussi deux tests. Le premier test compare les fichiers .listing générés par wget avec le contenu des répertoires locaux pour s'assurer que tous les fichiers ont été téléchargés. Le deuxième test vérifie les signatures des paquets suivant les valeurs de deux variables CHECKSIG et USEGPG (initialisez-les à « yes » si vous souhaitez terminer complètement l'opération). En cas d'échec dans le processus de vérification de signature, le script déplacera les mauvais packages dans OLDDIR en leur affectant l'extension « .UPDcheckfail » et quittera sans déplacer les anciennes mises à jour dans OLDDIR.

4.2. Utiliser mirror

Mirror est un script perl sophistiqué comparant le contenu d'un répertoire d'un site distant avec un répertoire local. Il utilisera FTP pour récupérer les fichiers qui sont sur le site distant mais pas sur le site local, et supprimera sur le site local les fichiers qui ne sont pas sur le site distant. Le programme mirror est configuré avec un fichier. Le RPM du paquet est disponible à partir de rufus.w3.org. Créez votre copie locale mirror.redhat du fichier de configuration de mirror, et éditez les champs correspondant au haut du fichier. Après la section par défaut, définissez ces paquets:

 
        package=updates
          site=ftp.mirror.ac.uk
          exclude_patt=(SRPMS/)
          remote_dir=/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386
          local_dir=/home/luigi/tmp/redhat-cd/redhat-7.3-updates

        package=dist
          site=ftp.mirror.ac.uk
          exclude_patt=(SRPMS/)
          remote_dir=/sites/ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386
          local_dir=/home/luigi/tmp/redhat-cd/redhat-7.3
      

La commande suivante va copier l'arbre RedHat en entier sur votre disque local. **Pensez**, avant de faire cela, que vous allez télécharger à peu près 1,5 Go de données (si vous avez exclu le répertoire SRPMS) !

 
        $ mirror -pdist mirror.redhat 
      

Ceci va créer le miroir du site FTP de RedHat sur votre disque local. Le contenu de la distribution RedHat ne change pas entre les releases, donc vous avez seulement besoin de télécharger ces paquets UNE FOIS. Tout changement dans la distribution se trouve dans le répertoire updates. Donc, si vous voulez que votre miroir reste à jour, vous avez seulement besoin d'actualiser le répertoire updates. Cela se fait avec la commande suivante :

 
        $ mirror -pupdates mirror.redhat 
      

Vous pouvez la lancer régulièrement, disons une fois par semaine, avec un script cron. La distribution RedHat est disponible sur un grand nombre de serveurs FTP tout autour du monde, mis à jour quotidiennement à partir du site maître ftp.redhat.com. Vous devriez choisir un site FTP proche de vous, en consultant la liste des sites miroirs RedHat.

Note

Je n'ai pas personnellement testé cette procédure. C'était la seule procédure proposée sur les anciennes versions de ce guide pratique (jusqu'à la version 1.34, concernant RedHat < 6.1).