Creation d'un dépôt de RPMs : Différence entre versions
De wikiGite
Ligne 5 : | Ligne 5 : | ||
= Configuration = | = Configuration = | ||
Créer un virtualhost (ex. repos.domain.tld). Son emplacement sera indiquée dans la configuration de mrepo. | Créer un virtualhost (ex. repos.domain.tld). Son emplacement sera indiquée dans la configuration de mrepo. | ||
− | + | <source lang="bash">cd /etc | |
− | + | vi mrepo.conf</source> | |
Ajouter | Ajouter | ||
− | + | <source lang="bash">hardlink = yes</source> | |
et modifier "mailto" vers un mail administrateur qui recevra les informations de modifications des dépôts. | et modifier "mailto" vers un mail administrateur qui recevra les informations de modifications des dépôts. | ||
Ligne 20 : | Ligne 20 : | ||
De même, modifier /etc/httpd/conf.d/mrepo.conf pour refléter ce répertoire, et y copier /var/www/mrepo | De même, modifier /etc/httpd/conf.d/mrepo.conf pour refléter ce répertoire, et y copier /var/www/mrepo | ||
− | + | <source lang="bash">mv /var/www/mrepo /home/.sites/70/site4/web/</source> | |
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 : | 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 : | ||
− | + | <source lang="bash">cp /usr/share/doc/mrepo-0.8.7/dists/centos5.conf /etc/mrepo.conf.d</source> | |
Exemple court pour le dépôt d'une application spécifique : | Exemple court pour le dépôt d'une application spécifique : | ||
Ligne 37 : | Ligne 37 : | ||
Relancer le tout, et créer les dépôts | Relancer le tout, et créer les dépôts | ||
− | + | <source lang="bash">/etc/init.d/httpd restart | |
− | + | /etc/init.d/mrepo restart | |
− | + | mrepo -g -vvv</source> | |
Verbosity set to level 3 | Verbosity set to level 3 | ||
Using configfile /etc/mrepo.conf | Using configfile /etc/mrepo.conf | ||
Ligne 69 : | Ligne 69 : | ||
Il reste à créer le répertoire pour les paquets | Il reste à créer le répertoire pour les paquets | ||
− | + | <source lang="bash">mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/'''stable'''/ | |
− | + | mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/'''updates'''/</source> | |
La mise à jour du dépôt se fera par | La mise à jour du dépôt se fera par | ||
− | + | <source lang="bash">mrepo -ug -vvv</source> | |
= Signer le dépôt = | = Signer le dépôt = | ||
'''<span style="color:red">PROCEDURE NON TESTEE - A VALIDER</span>''' | '''<span style="color:red">PROCEDURE NON TESTEE - A VALIDER</span>''' | ||
* Créer les clés DSA sur le serveur, avec l'utilisateur qui signera les paquets. Ici on reste root. | * Créer les clés DSA sur le serveur, avec l'utilisateur qui signera les paquets. Ici on reste root. | ||
− | + | <source lang="bash">gpg -gen-key</source> | |
Vérifier que que la clé publique est valide, au moins sur le système local : | Vérifier que que la clé publique est valide, au moins sur le système local : | ||
− | + | <source lang="bash">gpg -list-keys</source> | |
La clé publique (pub) a par exemple l'id 1F7A1AB2. | 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) | Créer un fichier .rpmmacros dans le répertoire de l'utilisateur (ici, toujours root) | ||
− | + | <source lang="bash">vi .rpmmacros</source> | |
%_signature gpg | %_signature gpg | ||
Ligne 89 : | Ligne 89 : | ||
Il reste à signer les paquets du dépôt avec cette clé : | Il reste à signer les paquets du dépôt avec cette clé : | ||
− | + | <source lang="bash">rpm --resign /chemin/vers/le/depot/paquet.rpm</source> | |
Vérifier la signature | Vérifier la signature | ||
− | + | <source lang="bash">rpm --checksig -v paquet.rpm</source> | |
− | (il peut | + | (il peut être nécessaire d'importer la clé publique sur le système : rpm --import) |
Et exporter la clé publique pour la mettre à disposition | Et exporter la clé publique pour la mettre à disposition | ||
− | + | <source lang="bash">gpg -export -a "Votre clé" > Public_key.txt</source> | |
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 | ||
Ligne 117 : | Ligne 117 : | ||
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 : | 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 : | ||
− | + | <source lang="bash">rsync --list-only rsync://apt.sw.be/pub/</source> | |
puis en descendant petit à petit l'arborescence. | 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 !!! | Puis créer la base de RPMS. La copie des fichiers commence : plus de 10000 pour i386, ça peut être long !!! | ||
− | + | <source lang="bash">mrepo -gvvv centos5</source> | |
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/'''. | 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/'''. |
Version du 20 mars 2012 à 16:44
Sommaire
Installation de MREPO sur CentOS/BlueOnyx
Mrepo est une création de Dag (http://dag.wieers.com). Les sources RPMFORGE doivent être installées (-> Dépôts complémentaires).
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 être 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