Creation d'un dépôt de RPMs : Différence entre versions
De wikiGite
(→Paramétrage du client YUM) |
|||
Ligne 4 : | Ligne 4 : | ||
= Configuration = | = Configuration = | ||
− | Créer un virtualhost (ex. repos. | + | Créer un virtualhost (ex. repos.domain.tld). Son emplacement sera indiquée dans la configuration de mrepo. |
cd /etc | cd /etc | ||
vi mrepo.conf | vi mrepo.conf | ||
Ligne 26 : | Ligne 26 : | ||
Exemple court pour le dépôt d'une application spécifique : | Exemple court pour le dépôt d'une application spécifique : | ||
− | ### Name: | + | ### Name: MonAppli |
− | |||
− | [''' | + | ['''monappli'''] |
− | name = | + | name = MonAppli $release ($arch) |
release = 3 | release = 3 | ||
− | '''stable''' = http://repos. | + | '''stable''' = http://repos.domain.tld/$release/monappli/i386/RPMS/ |
### Additional repositories | ### Additional repositories | ||
− | '''updates''' = http://repos. | + | '''updates''' = http://repos.domain.tld/$release/monappli/i386/RPMS/ |
Relancer le tout, et créer les dépôts | Relancer le tout, et créer les dépôts | ||
Ligne 52 : | Ligne 51 : | ||
Setting option arch in section [main] to: i386 | Setting option arch in section [main] to: i386 | ||
Setting option hardlink in section [main] to: yes | Setting option hardlink in section [main] to: yes | ||
− | Reading config file /etc/mrepo.conf.d/ | + | Reading config file /etc/mrepo.conf.d/monappli.conf |
Reading config file /etc/mrepo.conf.d/rpmforge.conf | Reading config file /etc/mrepo.conf.d/rpmforge.conf | ||
Setting option arch in section [centos5] to: i386 x86_64 | Setting option arch in section [centos5] to: i386 x86_64 | ||
− | + | monappli-i386: Generating monappli 3 (i386) meta-data | |
− | + | monappli-i386: Create repomd repository for stable | |
Saving Primary metadata | Saving Primary metadata | ||
Saving file lists metadata | Saving file lists metadata | ||
Saving other metadata | Saving other metadata | ||
− | + | monappli-i386: Create repomd repository for updates | |
Saving Primary metadata | Saving Primary metadata | ||
Ligne 67 : | Ligne 66 : | ||
Saving other metadata | Saving other metadata | ||
− | Sous /home/sites/repos. | + | Sous /home/sites/repos.domain.tld/web/mrepo/monappli-i386/, trois répertoires de metadatas sont créés : "RPMS.all", "RPMS.stable" et "RPMS.updates" |
Il reste à créer le répertoire pour les paquets | Il reste à créer le répertoire pour les paquets | ||
− | # mkdir -p /home/sites/repos. | + | # mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/'''stable'''/ |
− | # mkdir -p /home/sites/repos. | + | # mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/'''updates'''/ |
La mise à jour du dépôt se fera par | La mise à jour du dépôt se fera par | ||
mrepo -ug -vvv | mrepo -ug -vvv | ||
Ligne 100 : | Ligne 99 : | ||
Cette clé sera paramétrée sur le client dans yum.repos.d/<nom du depot>.repo | Cette clé sera paramétrée sur le client dans yum.repos.d/<nom du depot>.repo | ||
gpgcheck=1 | gpgcheck=1 | ||
− | <nowiki>gpgkey=http://repos. | + | <nowiki>gpgkey=http://repos.domain.tld/mrepo/centos5-i386/RPMS.rpmforge/repodata</nowiki> |
= Dépôt miroir de Dag/RPMforge = | = Dépôt miroir de Dag/RPMforge = | ||
Ligne 124 : | Ligne 123 : | ||
mrepo -gvvv centos5 | mrepo -gvvv centos5 | ||
− | Les paquets sont synchronisés (chemin BlueOnyx pour l'exemple) dans /home/sites/repos. | + | Les paquets sont synchronisés (chemin BlueOnyx pour l'exemple) dans /home/sites/repos.domain.tld/'''web/centos5-i386/rpmforge''' et les metadonnées correspondantes dont créées dans /home/sites/repos.domain.tld/web/'''mrepo/centos5-i386/RPMS.rpmforge/'''. |
Un cron qui réplique à intervalle régulier garde ensuite le dépôt à jour : | Un cron qui réplique à intervalle régulier garde ensuite le dépôt à jour : | ||
Ligne 130 : | Ligne 129 : | ||
== Paramétrage du client YUM == | == Paramétrage du client YUM == | ||
− | Dans /etc/yum.repos.d, créer un fichier | + | Dans /etc/yum.repos.d, créer un fichier monappli.repo : |
− | ### Name: RPMforge RPM Repository for CentOS/RHEL 5 | + | ### Name: RPMforge RPM Repository for CentOS/RHEL 5 |
### URL: http://rpmforge.net/ | ### URL: http://rpmforge.net/ | ||
− | [ | + | [maforge] |
− | name = CentOS/RHEL $releasever - RPMforge | + | name = CentOS/RHEL $releasever - RPMforge |
− | baseurl = http://repos. | + | baseurl = http://repos.domain.tld/mrepo/centos5-i386/RPMS.rpmforge |
enabled = 0 | enabled = 0 | ||
protect = 0 | protect = 0 |
Version du 5 octobre 2011 à 07:09
Sommaire
Installation de MREPO sur CentOS/BlueOnyx
Mrepo est une création de Dag (http://dag.wieers.com). Les sources RPMFORGE (http://wiki.centos.org/AdditionalResources/Repositories/RPMForge) doivent être installées.
yum --enablerepo=rpmforge install mrepo hardlink++
Configuration
Créer un virtualhost (ex. repos.domain.tld). Son emplacement sera indiquée dans la configuration de mrepo.
cd /etc vi mrepo.conf
Ajouter
hardlink = yes
et modifier "mailto" vers un mail administrateur qui recevra les informations de modifications des dépôts.
Si le DocumentRoot n'est pas /var/www (exemple : sur BlueOnyx), indiquer dans wwwdir le chemin vers de DocumentRoot du virtualhost.
Note BlueOnyx : supprimer le répertoire error et l'index.html créés automatiquement dans le répertoire web du virtualhost.
# packages directory srcdir = /home/.sites/70/site4/web # metadatas directory wwwdir = /home/.sites/70/site4/web/mrepo
De même, modifier /etc/httpd/conf.d/mrepo.conf pour refléter ce répertoire, et y copier /var/www/mrepo
mv /var/www/mrepo /home/.sites/70/site4/web/
Il existe des exemples de configuration dans /usr/share/doc/mrepo-0.8.7/dists/. Copier un template proche de ce qu'on veut obtenir :
cp /usr/share/doc/mrepo-0.8.7/dists/centos5.conf /etc/mrepo.conf.d
Exemple court pour le dépôt d'une application spécifique :
### Name: MonAppli [monappli] name = MonAppli $release ($arch) release = 3 stable = http://repos.domain.tld/$release/monappli/i386/RPMS/ ### Additional repositories updates = http://repos.domain.tld/$release/monappli/i386/RPMS/
Relancer le tout, et créer les dépôts
/etc/init.d/httpd restart /etc/init.d/mrepo restart
# mrepo -g -vvv Verbosity set to level 3 Using configfile /etc/mrepo.conf Reading config file /etc/mrepo.conf Setting option confdir in section [main] to: /etc/mrepo.conf.d Setting option srcdir in section [main] to: /home/.sites/70/site4/web Setting option wwwdir in section [main] to: /home/.sites/70/site4/web/mrepo Setting option mailto in section [main] to: mail@domain.net Setting option smtp-server in section [main] to: localhost Setting option arch in section [main] to: i386 Setting option hardlink in section [main] to: yes Reading config file /etc/mrepo.conf.d/monappli.conf Reading config file /etc/mrepo.conf.d/rpmforge.conf Setting option arch in section [centos5] to: i386 x86_64 monappli-i386: Generating monappli 3 (i386) meta-data monappli-i386: Create repomd repository for stable Saving Primary metadata Saving file lists metadata Saving other metadata monappli-i386: Create repomd repository for updates Saving Primary metadata Saving file lists metadata Saving other metadata
Sous /home/sites/repos.domain.tld/web/mrepo/monappli-i386/, trois répertoires de metadatas sont créés : "RPMS.all", "RPMS.stable" et "RPMS.updates"
Il reste à créer le répertoire pour les paquets
# mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/stable/ # mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/updates/
La mise à jour du dépôt se fera par
mrepo -ug -vvv
Signer le dépôt
PROCEDURE NON TESTEE - A VALIDER
- Créer les clés DSA sur le serveur, avec l'utilisateur qui signera les paquets. Ici on reste root.
# gpg -gen-key
Vérifier que que la clé publique est valide, au moins sur le système local :
# gpg -list-keys
La clé publique (pub) a par exemple l'id 1F7A1AB2.
Créer un fichier .rpmmacros dans le répertoire de l'utilisateur (ici, toujours root)
# vi .rpmmacros %_signature gpg %_gpg_name 1F7A1AB2
Il reste à signer les paquets du dépôt avec cette clé :
# rpm --resign /chemin/vers/le/depot/paquet.rpm
Vérifier la signature
# rpm --checksig -v paquet.rpm
(il peut petre nécessaire d'importer la clé publique sur le système : rpm --import)
Et exporter la clé publique pour la mettre à disposition
# gpg -export -a "Votre clé" > Public_key.txt
Cette clé sera paramétrée sur le client dans yum.repos.d/<nom du depot>.repo
gpgcheck=1 gpgkey=http://repos.domain.tld/mrepo/centos5-i386/RPMS.rpmforge/repodata
Dépôt miroir de Dag/RPMforge
Création du dépôt et synchronisation
Créer /etc/mrepo.conf.d/rpmforge.conf :
### Name: RPMforge - Dag [centos5] name = CentOS $release ($arch) release = 5 #arch = i386 x86_64 ia64 ppc s390 s390x alpha arch = i386 x86_64 metadata = repomd yum repoview ### RPMforge repository rpmforge = rsync://apt.sw.be/pub/freshrpms/dag/redhat/el5/en/i386/rpmforge/RPMS/
Au cas ou le répertoire cible n'est plus à la même place, on peut rechercher sur le partage rsync "pub" de dag avec :
rsync --list-only rsync://apt.sw.be/pub/
puis en descendant petit à petit l'arborescence.
Puis créer la base de RPMS. La copie des fichiers commence : plus de 10000 pour i386, ça peut être long !!!
mrepo -gvvv centos5
Les paquets sont synchronisés (chemin BlueOnyx pour l'exemple) dans /home/sites/repos.domain.tld/web/centos5-i386/rpmforge et les metadonnées correspondantes dont créées dans /home/sites/repos.domain.tld/web/mrepo/centos5-i386/RPMS.rpmforge/.
Un cron qui réplique à intervalle régulier garde ensuite le dépôt à jour :
30 2 * * * root /usr/bin/mrepo -q -ug
Paramétrage du client YUM
Dans /etc/yum.repos.d, créer un fichier monappli.repo :
### Name: RPMforge RPM Repository for CentOS/RHEL 5 ### URL: http://rpmforge.net/ [maforge] name = CentOS/RHEL $releasever - RPMforge baseurl = http://repos.domain.tld/mrepo/centos5-i386/RPMS.rpmforge enabled = 0 protect = 0 # Here we reuse the key from Dag RPMforge since the RPMs are signed with it gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag gpgcheck = 1