Récemment, je cherchais un moyen pour déployer rapidement des appli web et leurs mises à jours. J’avais écarté un peu rapidement Yum et les Rpm. Or il s’avère qu’on peut mettre ça en place assez rapidement et que c’est trés efficace. Dans un premier temps je vais montrer comment mettre en place le repository et dans un second temps je ferai un tuto pour créer des Rpm noarch (tout aussi facilement).

J’ai effectué tout cela sur Fedora 11 (i386) et Centos 5.5 (x64).

1. L’arborescence

J’utilise ‘/var/www/html/’ comme répertoire de travail.
Ci-dessous une arbo type, il s’agit surtout de conventions, libre à vous de l’adapter.

yum
├── base
│   └── [Distrib_version]
│       └── [arch]
│           ├── mydemo-1.0-1.noarch.rpm
│           └── repodata
│               ├── filelists.xml.gz
│               ├── other.xml.gz
│               ├── primary.xml.gz
│               └── repomd.xml
└── updates
    └── [Distrib_version]
        └── [arch]
            ├── mydemo-1.0-2.noarch.rpm
            └── repodata
                ├── filelists.xml.gz
                ├── other.xml.gz
                ├── primary.xml.gz
                └── repomd.xml

 
Création de l’arborescence sour Fedora 11 pour les packages ‘noarch’ :

mkdir -p /var/www/html/yum/{base,updates}/11/noarch

C’est tout, le répertoire repodata sera généré automatiquement plus tard.

2. Initialisation du repository

Il faut d’abord copier les Rpm que vous souhaitez mettre à dispo dans le répertoire ‘/var/www/html/yum/base/11/noarch/’ par exemple puis éxécuter l’utilitaire createrepo:

createrepo /var/www/html/yum/base/11/noarch
createrepo /var/www/html/yum/updates/11/noarch

 
La mise à jour se fera en lançant :

createrepo --update /var/www/html/yum/updates/11/noarch

 

La création des Rpm noarch fera l’objet d’un autre post.

3. Configuration d’Apache

Ci-dessous vous trouverez un exemple de virtual host.
cat /etc/httpd/conf.d/repo.conf

<VirtualHost _default_:80>
    DocumentRoot /var/www/html/yum/
    ServerName repo.mydomain.tld
    ErrorLog logs/repo.l-error_log
    CustomLog logs/repo.l-access_log common
</VirtualHost>

<Directory /var/www/html/yum/>
  AllowOverride FileInfo AuthConfig Limit
  Options Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>

 
Relancer Apache.

4. Configuration côté client

Pour utiliser notre nouveau repository côté client, il faut définir un fichier decripteur dans /etc/yum.repos.d/
Par exemple ‘my_fresh.repo’ :

[base-fresh]
name= Fedora $releasever - noarch - Base
baseurl=http://repo.mydomain.tld/base/$releasever/noarch/
enabled=1
gpgcheck=0

[updates-fresh]
name=Fedora $releasever - noarch - Updates
baseurl=http://repo.mydomain.tld/updates/$releasever/noarch/
enabled=1
gpgcheck=0

 
Voilà, nous sommes fin prêt à déployer nos web app ! Dans un prochain poste je montrerai comment créér des Rpm.

5. Pour aller plus loin

Avoir son repo peut être aussi pratique pour se faire un mirroir de la distrib officielle.
Il peut être utile de signer le repo pour plus de sécurité.

Sources