Outils personnels

Creation d'un dépôt de RPMs : Différence entre versions

De wikiGite

(Signer le dépôt)
(Signer le dépôt)
Ligne 100 : Ligne 100 :
 
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
  gpgkey=http://repos.systea.net/mrepo/centos5-i386/RPMS.rpmforge/repodata
+
  <nowiki>gpgkey=http://repos.systea.net/mrepo/centos5-i386/RPMS.rpmforge/repodata</nowiki>
  
 
= Dag  RPMforge mirror repo =
 
= Dag  RPMforge mirror repo =

Version du 30 mars 2011 à 16:01

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.systea.net). 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: ePhoto
### URL: http://ephoto.einden.com/

[ephoto]
name = ePhoto $release ($arch)
release = 3
stable = http://repos.systea.net/$release/ephototest/i386/RPMS/

### Additional repositories
updates = http://repos.systea.net/$release/ephototest/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/ephoto.conf
Reading config file /etc/mrepo.conf.d/rpmforge.conf
Setting option arch in section [centos5] to: i386 x86_64
ephoto-i386: Generating ePhoto 3 (i386) meta-data
ephoto-i386: Create repomd repository for stable

Saving Primary metadata
Saving file lists metadata
Saving other metadata
ephoto-i386: Create repomd repository for updates

Saving Primary metadata
Saving file lists metadata
Saving other metadata

Sous /home/sites/repos.systea.net/web/mrepo/ephoto-test-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.systea.net/web/ephoto-i386/stable/
# mkdir -p /home/sites/repos.systea.net/web/ephoto-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.systea.net/mrepo/centos5-i386/RPMS.rpmforge/repodata

Dag RPMforge mirror repo

Créer /etc/mrepo.conf.d/dag.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 mettre à jour la base de RPMS. La copie des fichiers commence : plus de 10000 pour i386, ça peut être long !!!

mrepo -ugvvv

Les paquets sont synchronisés (chemin BlueOnyx pour l'exemple) dans /home/sites/repos.systea.net/web/centos5-i386/rpmforge et les metadonnées correspondantes dont créées dans /home/sites/repos.systea.net/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 systea.repo :

      1. Name: RPMforge RPM Repository for CentOS/RHEL 5 - Systea
      2. URL: http://rpmforge.net/

[systeaforge] name = CentOS/RHEL $releasever - RPMforge - Systea baseurl = http://repos.systea.net/mrepo/centos5-i386/RPMS.rpmforge enabled = 0 protect = 0

  1. 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