Archive

Articles taggués ‘red’

Installation de mrepo sur CentOS 5.5

03/08/2010

Introduction

mrepo est un programme écrit en python par Dag Wieers qui permet de créer un serveur de dépôts de paquets (testé et validé pour les RPMs).

La description complète ainsi que le site officiel de ce serveur est disponible a l’adresse suivante: http://dag.wieers.com/home-made/mrepo

Préparation

Pour bien débuter l’installation il faut récupérer les RPMs suivants. Ils sont disponible sur les site de Dag Wieers à l’adresse suivante http://dag.wieers.com/rpm/packages/, ou pour rhnlib, rechercher dans le support de la distribution.

  • fuse­iso­0.0.20070708­1.el5.rf.i386.rpm
  • fuse­unionfs­0.17­1.el5.rf.i386.rpm
  • hardlink++­0.02­3.el5.rf.i386.rpm
  • rhnlib­2.2.7­2.el5.noarch.rpm

Dans notre cas, les sources sont installées dans le répertoire /usr/local/src

# cd /usr/local/src

Téléchargement des RPMs nécessaires (pour une plateforme i386):

# wget wget http://dag.wieers.com/rpm/packages/fuse-iso/fuse-iso-0.0.20070708-1.el5.rf.i386.rpm
# wget http://dag.wieers.com/rpm/packages/fuse-unionfs/fuse-unionfs-0.18-1.el5.rf.i386.rpm
# wget http://dag.wieers.com/rpm/packages/hardlink++/hardlink++-0.02-3.el5.rf.i386.rpm

D’autre part, il faut récupérer les sources depuis subversion (il faut bien évidemment installer le client subversion svn):

# svn co http://svn.rpmforge.net/svn/trunk/tools/mrepo/

Finalement, il faut installer si ça n’est pas déjà le cas python et apache.

# yum install python
# yum install httpd

Installation des RPMs

Installation depuis les dépôts CentOS de createrepo et fuse:

# yum install createrepo fuse fuse-devel
Installation des RPMs en dépendances:
# rpm -i hardlink++­0.02­3.el5.rf.i386.rpm
# rpm -i fuse­iso­0.0.20070708­1.el5.rf.i386.rpm
# rpm -i fuse­unionfs­0.17­1.el5.rf.i386.rpm

Le serveur est maintenant prêt à installer mrepo.

Installation de mrepo

L’installation de mrepo, pour des raisons de norme, sera faite dans le répertoire /opt/mrepo. Pour ce faire, il faut ajouter une variable DESTDIR (voir Makefile).

Ce placer dans le répertoire des sources de mrepo téléchargé depuis subversion.

# cd /usr/local/src/mrepo
# export DESTDIR=/opt/mrepo
# make install
install -Dp -m0755 gensystemid /opt/mrepo/usr/bin/gensystemid
install -Dp -m0755 mrepo /opt/mrepo/usr/bin/mrepo
install -Dp -m0755 rhnget /opt/mrepo/usr/bin/rhnget
install -Dp -m0755 youget /opt/mrepo/usr/bin/youget
[ ! -f /opt/mrepo/etc/mrepo.conf ] && install -D -m0600 config/mrepo.conf /opt/mrepo/etc/mrepo.conf || :
install -d -m0755 /opt/mrepo/etc/mrepo.conf.d/
install -Dp -m0644 config/httpd/mrepo.conf /opt/mrepo/etc/httpd/conf.d/mrepo.conf
install -Dp -m0755 config/mrepo /opt/mrepo/etc/rc.d/init.d/mrepo
install -d -m0755 /opt/mrepo/usr/share/mrepo/html
install -p -m0644 html/* /opt/mrepo/usr/share/mrepo/html
install -d -m0755 /opt/mrepo/var/mrepo/all/
install -d -m0755 /opt/mrepo/var/www/mrepo
install -d -m0755 /opt/mrepo/var/cache/mrepo
install -d -m0755 /opt/mrepo/usr/share/mrepo/rhn/
install -d -m0755 /opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/
cp -av rhn/README rhn/*.py /opt/mrepo/usr/share/mrepo/rhn/
`rhn/README' -> `/opt/mrepo/usr/share/mrepo/rhn/README'
`rhn/connections.py' -> `/opt/mrepo/usr/share/mrepo/rhn/connections.py'
`rhn/_httplib.py' -> `/opt/mrepo/usr/share/mrepo/rhn/_httplib.py'
`rhn/__init__.py' -> `/opt/mrepo/usr/share/mrepo/rhn/__init__.py'
`rhn/_internal_xmlrpclib.py' -> `/opt/mrepo/usr/share/mrepo/rhn/_internal_xmlrpclib.py'
`rhn/nonblocking.py' -> `/opt/mrepo/usr/share/mrepo/rhn/nonblocking.py'
`rhn/rpclib.py' -> `/opt/mrepo/usr/share/mrepo/rhn/rpclib.py'
`rhn/SmartIO.py' -> `/opt/mrepo/usr/share/mrepo/rhn/SmartIO.py'
`rhn/SSL.py' -> `/opt/mrepo/usr/share/mrepo/rhn/SSL.py'
`rhn/transports.py' -> `/opt/mrepo/usr/share/mrepo/rhn/transports.py'
`rhn/UserDictCase.py' -> `/opt/mrepo/usr/share/mrepo/rhn/UserDictCase.py'
cp -av up2date_client/README up2date_client/*.py /opt/mrepo/usr/share/mrepo/up2date_client/
`up2date_client/README' -> `/opt/mrepo/usr/share/mrepo/up2date_client/README'
`up2date_client/capabilities.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/capabilities.py'
`up2date_client/clientCaps.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/clientCaps.py'
`up2date_client/config.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/config.py'
`up2date_client/distrotype.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/distrotype.py'
`up2date_client/gpgUtils.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/gpgUtils.py'
`up2date_client/__init__.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/__init__.py'
`up2date_client/repoDirector.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoDirector.py'
`up2date_client/rhnChannel.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/rhnChannel.py'
`up2date_client/rhnErrata.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/rhnErrata.py'
`up2date_client/rpcServer.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/rpcServer.py'
`up2date_client/rpmSource.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/rpmSource.py'
`up2date_client/rpmSourceUtils.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/rpmSourceUtils.py'
`up2date_client/rpmUtils.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/rpmUtils.py'
`up2date_client/sourcesConfig.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/sourcesConfig.py'
`up2date_client/transaction.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/transaction.py'
`up2date_client/up2dateAuth.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/up2dateAuth.py'
`up2date_client/up2dateErrors.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/up2dateErrors.py'
`up2date_client/up2dateLog.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/up2dateLog.py'
`up2date_client/up2dateMessages.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/up2dateMessages.py'
`up2date_client/up2dateUtils.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/up2dateUtils.py'
`up2date_client/urlMirrors.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/urlMirrors.py'
`up2date_client/wrapperUtils.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/wrapperUtils.py'
cp -av up2date_client/repoBackends/*.py /opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/
`up2date_client/repoBackends/aptRepo.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/aptRepo.py'
`up2date_client/repoBackends/dirRepo.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/dirRepo.py'
`up2date_client/repoBackends/genericRepo.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/genericRepo.py'
`up2date_client/repoBackends/genericSolveDep.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/genericSolveDep.py'
`up2date_client/repoBackends/__init__.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/__init__.py'
`up2date_client/repoBackends/up2dateRepo.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/up2dateRepo.py'
`up2date_client/repoBackends/urlUtils.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/urlUtils.py'
`up2date_client/repoBackends/yumRepo.py' -> `/opt/mrepo/usr/share/mrepo/up2date_client/repoBackends/yumRepo.py'
[ "/opt/mrepo" -o ! -f "/opt/mrepo/etc/cron.d/mrepo" ] && install -Dp -m0644 config/mrepo.cron /opt/mrepo/etc/cron.d/mrepo || :
install -Dp -m0644 config/mrepo.logrotate /opt/mrepo/etc/logrotate.d/mrepo

Vue que le répertoire par défaut a été modifié, il faut créer des liens entre /opt/mrepo et les différents répertoires de configuration système:

# ln -s /opt/mrepo/etc/httpd/conf.d/mrepo.conf /etc/httpd/conf.d/
# ln -s /opt/mrepo/etc/rc.d/init.d/mrepo /etc/init.d/

Configuration du serveur et des dépôts

Ajout du site dans apache (modification du fichier /opt/mrepo/etc/httpd/conf.d/mrepo.conf):

Création du dépôt CentOS 5 et copie de l’ISO:

# mkdir /opt/mrepo/var/mrepo
# mkdir /opt/mrepo/var/mrepo/centos5-i386
# mv CentOS-5.5-i386-bin-DVD.iso /opt/mrepo/var/mrepo/centos5-i386

Configuration du serveur (fichier /opt/mrepo/etc/mrepo.conf):


### Configuration file for mrepo
# 2010 02 26 rde default location changed from / to /opt/mrepo
### The [main] section allows to override mrepo's default settings
### The mrepo-example.conf gives an overview of all the possible settings
[main]
srcdir = /opt/mrepo/var/mrepo
wwwdir = /opt/mrepo/var/www/mrepo
confdir = /opt/mrepo/etc/mrepo.conf.d
arch = i386
# specific settings
shareiso = yes
hardlink = yes
hardlinkpluscmd = /usr/bin/hardlink++ 2 > /dev/null
# chroot
htmldir = /opt/mrepo/usr/share/mrepo/html
cachedir = /opt/mrepo/var/cache
lockdir = /opt/mrepo/var/lock/subsys
logfile = /opt/mrepo/var/log/mrepo
rhngetcmd = /opt/mrepo/usr/bin/rhnget
yougetcmd = /opt/mrepo/usr/bin/youget
#mailto = root@localhost
#smtp-server = localhost
#rhnlogin = username:password
### Any other section is considered a definition for a distribution
### You can put distribution sections in /etc/mrepo.conf.d
### Examples can be found in the documentation.

Configuration du dépôt CentOS 5 (fichier /opt/mrepo/etc/mrepo.conf.d/centos5.conf):


### Name: The Community Enterprise Operating System v5
### URL: http://www.centos.org/
 
[centos5]
name = CentOS $release ($arch)
release = 5.5
#arch = i386 x86_64 ia64 ppc s390 s390x alpha
arch = i386
metadata = repomd repoview
 
### ISO images
#iso = http://mirror.centos.org/pub/centos/$release/isos/$arch/CentOS-$release-$arch-bin?of4.iso
#os = http://mirror.centos.org/centos/$release/os/$arch/CentOS/RPMS/a
iso = file:///opt/depot/CentOS-$release-$arch-bin-DVD.iso
 
### Additional repositories
updates = http://mirror.centos.org/centos/$release/updates/$arch/RPMS/

Montage des isos et génération du dépôt:

# /opt/mrepo/usr/bin/mrepo -ug -vv -c /opt/mrepo/etc/mrepo.conf

Montage des dépôts au démarrage

# chkconfig --add mrepo

Mise à jour automatique des dépôts, tous les lundi à 1h30 (fichier /opt/mrepo/etc/cron.d)

# 2010 02 26 rde mrepo update
30 1 * * 1 root /opt/mrepo/usr/bin/mrepo -ug -v -c /opt/mrepo/etc/mrepo.conf > /opt/mrepo/var/log/mrepo.log

Ajout dans les jobs cron

# ln -s /opt/mrepo/etc/cron.d/mrepo /etc/cron.d/

Vérification du fonctionnement

Dans un navigateur votre navigateur favoris aller à l’adresse http://<adresse du serveur>/mrepo (remplacer <adresse du serveur> par l’ip ou l’url de votre serveur). Dans notre cas, un dépôt a été crée également pour RedHat 5.5.

La page suivante doit s’afficher:

Affichage des dépôts après traitement de mrepo

Configuration des clients

La configuration des clients s’effectue dans le répertoire /etc/yum/yum.repos.d/.
Faites une sauvegarde des fichiers de configuration CentOS-Base.repo et CentOS-Media.repo.

# mv CentOS-Base.repo CentOS-Base.repo.old
# mv CentOS-Media.repo CentOS-Media.repo.old

et créez les fichiers suivants my-Centos-os.repo et my-Centos-updates.repo

# my-Centos-os.repo file
 
<hr/>
[my-Centos-os]
name=CentOS Linux $releasever - $basearch - OS
baseurl=http://&lt;adresse du serveur&gt;/mrepo/centos5-$basearch/RPMS.os
enabled=1
gpgcheck=0
# my-Centos-updates.repo
[my-Centos-updates]
name=CentOS Linux $releasever - $basearch - Updates
baseurl=http://&lt;adresse du serveur&gt;/mrepo/centos5-$basearch/RPMS.udpates
enabled=1
gpgcheck=0

rde Administration système, Tutos , , , , , ,