Installation de YAM 0.8.0 sur Red Hat Enterprise Linux 4
Bonjour. Cette page contient des informations et un guide d'installation sur un logiciel en pré release. Comme toute information cette page est sans garantie.
Introduction
Yam est un outil de Dag Wieers’s pour répliquer les mises à jour du Red Hat Network (RHN) vers un serveur local. Si vous utilisez Red Hat Enterprise Linux (RHEL) ou équivalent et que vous avez un grand nombre de machines à mettre à jour, ou si vous voulez mettre à jour un ensemble de machines avec le même niveau de mise à jour, cela va vous intéresser. Yam supporte apt, up2date et yum.
Pourquoi YAM
Pour moi, le problème que Yam permet de résoudre est la mise à jour. Avec Solaris, il est aisé de télécharger le dernier ensemble de correctifs de Sun, l'appliquer aux machines de développement, tester et vérifier que tout va bien, et appliquer aux machines de production en étant sur que vous avez fait tout ce qui est en votre pouvoir pour éviter de le casser.
Red Hat a rendu les choses faciles pour les mises à jour, en utilisant up2date pour garder les logiciels dans un état aussi à jour que possible. Il suffit de lancer:
up2date -u
Quelque temps plus tard, vous avez une machine patchée. MAIS... Identifiez vous sur votre machine de test une semaine plus tard et faites la même chose, et vous aurez probablement à récupérer les mêmes correctifs plus quelque autres. Répétez cette manipulation sur l'environnement de production une semaine plus tard et vous aurez le même résultat avec encore d'autres correctifs. Il n'est pas possible (facilement) de revenir en arrière sur certaines mises à jour, et de garder les mêmes versions sur un environnement de production et de test. En utilisant Yam, il est possible de mettre à jour le serveur de mise à jour, puis la plate-forme de développement, tester, puis mettre à jour l'environnement de production et ainsi de suite.
Il y a d'autres bonnes raisons d'utiliser YAM. Par exemple, cela économise de la bande passante, c'est plus simple à gérer dans le cas de l'utilisation d'un firewall, et peut accélérer la mise à jour d'un grand nombre de machine.
Configurer up2date
La machine que vous prévoyez d'utiliser comme serveur Yam doit être enregistrée dans le Red Hat Network. Up2date doit être fonctionnel. Pour le terter, faites:
up2date --nox -l
Vous devriez obtenir la liste des packages à mettre à jour. Bien qu'il soit possible de faire fonctionner Yam avec d'autres terminaisons, comme le repository gratuit de CentOS, cet article est écrit pour permettre la mise jour d'un RedHat Entreprise Linux sur RHN. L'enregistrement dans le réseau de mise à jour RHN n'est pas gratuit et coûte plusieurs centaines d'euros par serveur et par an. Lors de l'enregistrement de votre système, assurez vous de n'envoyer aucune information à Red Hat (c'est une option lors du lancement d'up2date pour la première fois) car ceci pourra perturber Yam et le RHN. Si vous vous êtes déjà enregistré, vous allez avoir à :
- Supprimer le fichier /etc/sysconfig/rhn/systemid
- Supprimer le système du RHN (en utilisant l'interface web du RHN) et réenregistrer le système sans envoyer la liste des packages.
Pour plus d'information sur le fonctionnement de Yam avec le RHN , lisez README.rhn qui est livré avec les sources de Yam.
Configurez votre proxy
Quelques joyeux administrateurs système ont un palanquée de firewall entre leur innocents serveurs et l'internet. C'est l'une des raisons pour lesquelles vous pourriez avoir envie d'utiliser Yam. Toutefois, si votre futur serveur Yam ne peut également 'voir' l'Internet, vous devriez avoir à positionner les variables d'environnement du proxy. En supposant que vous utilisiez bash:
cd ~ export PROXY=proxy.example.com export PROXYPORT=3128 export http_proxy=http://${PROXY}:${PROXYPORT}/ export HTTP_PROXY=$http_proxy mkdir -p .subversion echo "[global] http-proxy-host = ${PROXY} http-proxy-port = ${PROXYPORT}" >> .subversion/servers
Egalement, positionnez une variable d'environnement sur le repository de Dag. Il vous faut faire :
export DAG=http://dag.wieers.com/packages/
Dépendances de Yam
Yam a quelques dépendances qui ne sont pas livrées avec RHEL (ou qui ne sont pas dans l'installation par défaut). Certaines sont optionnelles, mais utiles. Je les ai toutes installées. Pour le faire:
mkdir yamwork cd yamwork wget ${DAG}/apt/apt-0.5.15cnc6-4.2.el4.rf.i386.rpm rpm -i apt-0.5.15cnc6-4.2.el4.rf.i386.rpm wget ${DAG}/yum/yum-2.0.7-2.1.el3.test.noarch.rpm rpm -i yum-2.0.7-2.1.el3.test.noarch.rpm wget $DAG/createrepo/createrepo-0.4.3-1.2.el4.rf.noarch.rpm rpm -i createrepo-0.4.3-1.2.el4.rf.noarch.rpm wget $DAG/hardlink++/hardlink++-0.02-2.2.el4.rf.i386.rpm rpm -i hardlink++-0.02-2.2.el4.rf.i386.rpm up2date -i rpm-build up2date -i subversion up2date -i httpd
Notez que la version de yum version ci-dessus est en test et peut être considérée comme buggée.
Récupération de Yam
cd ~/yamwork mkdir yam svn co http://svn.rpmforge.net/svn/trunk/tools/yam/
Comme Yum, cette version est en test et peut être considérée comme buggée.
Compiler et installer Yam
Vous désirez probablement ne pas être root pour faire ceci. Si vous n'avez pas encore compilé de rpm et paramétré votre fichier .rpmmacros file et créé les répertoires, vous devriez d'abord faire ceci :
cd ~ echo %_topdir $(pwd)/redhat > .rpmmacros mkdir -p ~/redhat/{SOURCES,BUILD,RPMS,SRPMS,SPECS,tmp} cd ~/redhat mkdir -p RPMS/i386 RPMS/athlon RPMS/i486 RPMS/i586 RPMS/i686 RPMS/noarch cd ~
Dès que votre environnement de compilation est prêt, vous pouvez compiler le rpm:
cd yamwork mv yam yam-0.8.0 tar cjf ../redhat/SOURCES/yam-0.8.0.tar.bz2 yam-0.8.0 rpmbuild --define "_tmppath ~/redhat/tmp" -ba yam-0.8.0/yam.spec cp ~/redhat/RPMS/noarch/yam-0.8.0-1.noarch.rpm /tmp
Et maintenant, en root, l'installation:
rpm -i /tmp/yam-0.8.0-1.noarch.rpm service httpd start # ignore errors about yam as an unresolvable hostname for now service yam start
Notez qu'à ce stade, il n'y a pas de rpm officiel pour la version 0.8.0. Vous devrez donc désinstaller yam si vous voulez l'installer ultérieurement à partir d'un rpm prélevé sur le site de Dag. Cette version, téléchargée avec subversion peut fort bien ne pas être la version finale 0.8.0.
Configurer Yam
Vous trouverez une série de README et d'autres fichiers dans le dossier de yam qui contient des informations sur le package.
Cet exemple prend en charge le paramétrage d'une paire de miroirs pour les versions 3 et 4 sur une souscription au Redhat Network, et suppose que votre machine fonctionne sur RHEL 4. Il y a beaucoup d'autres possibilités, comme la réplication de repository tierces, comme celui de Dag, ou d'autres distributions comme Suse ou Centos.
Votre système doit être enregistré avec le RHN pour que tout ceci fonctionne.
Paramétrez les répertoires ou les repositories seront stockés, et copiez y votre rhn-systemid.
mkdir -p /var/yam/rhel3es-i386/ mkdir -p /var/yam/rhel4es-i386/ cp /etc/sysconfig/rhn/systemid /var/yam/rhel3es-i386/ cp /etc/sysconfig/rhn/systemid /var/yam/rhel4es-i386/
Copier votre fichier systemid comme dans cet exemple n'est pas impératif, mais cela le sera si vous désirez supporter des paramétrages plus complexes avec des fichiers systemid prélevés d'hôtes différents.
Vous devrez expliquer à Yam ou prendre ses données en configurant le fichier Yam.conf. Ceci ressemble à mon fichier /etc/yam.conf. Il est important que vous chosissiez les version ‘as’, ‘es’ or ‘ws’ correpondantes à vos abonnements RHN, sinon cela ne fonctionnera pas. Changez username:password avec ceux qui vous permettent de vous logger sur le RHN.
[main] srcdir = /var/yam wwwdir = /var/www/yam arch = i386 rhnlogin = username:password [$rhel4es] name = Red Hat Enterprise Server $release U1 ($arch) release = 4 rhnrelease = 4ES arch = i386 metadata = apt yum iso = RHEL$release-U1-$arch-ES-disc?.iso updates = rhn:///rhel-$arch-es-$release extras = rhn:///rhel-$arch-es-$release-extras #dag = rsync://apt.sw.be/pub/freshrpms/pub/dag/redhat/el$release/en/$arch/RPMS.$repo/ [rhel3es] name = Red Hat Enterprise Server $release U6 ($arch) release = 3 rhnrelease = 3ES arch = i386 metadata = apt yum iso = RHEL$release-U6-$arch-ES-disc?.iso updates = rhn:///rhel-$arch-es-$release extras = rhn:///rhel-$arch-es-$release-extras #dag = rsync://apt.sw.be/pub/freshrpms/pub/dag/redhat/el$release/en/$arch/RPMS.$repo/
Il est désormais nécessaire d'ajouter quelques permissions, et de relancer Yam pour s'assurez que le fichier lui sont lisibles:
chmod og= /etc/yam.conf chown root.root /etc/yam.conf service yam restart
Copiez ensuite toutes vos images ISO à partir des CD d'installation de la RHE (qui sont téléchargeable du RHN) dans /var/yam/iso/
Copier et monter les images ISO
A ce stade, vous pouvez (en option) copier vos images ISO dans le répertoire /var/yam/iso. Elle pourront ensuite être montées en utilisant le système de fichiers ‘loopback’et partagées par Yam. Si vous avez un grand nombre d'ISO, il est possible que vous soyez en manque de périphériques de loopback sur votre système. Dans ce cas, vous devriez voir une erreur comme ceci:
mount: could not find any free loop device
Pour augmenter le nombre de loopback, essayez:
rmmod loop insmod /lib/modules/`uname -r`/kernel/drivers/block/loop.ko max_loop=32
Premier lancement de Yam
Vérifiez que Yam est content avec votre configuration:
yam -vv
Si tout est OK, alors lancez le pour demander les mises à jour. Vous devez faire ceci une distribution à la fois, sinon, vous risquez de casser vos identifiants RHN. C'est un problème connu qui sera corrigé lors de la prochaine version de Yam.
for dist in rhel4es rhel3es do yam -gv -d $dist done
Vous devriez voie un grand nombre de lignes comme celle-ci:
kdeaddons-3.1.3-1.i386.rpm: ########################## Done.
Dès que les mises à jour sont téléchargée, les mises à jour suivantes pourront être obtenues par:
for dist in rhel4es rhel3es do yam -uxv -d $dist done