Outils personnels

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.systea.net). 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.
 
  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: ePhoto
+
  ### Name: MonAppli
### URL: http://ephoto.einden.com/
 
 
   
 
   
  ['''ephoto''']
+
  ['''monappli''']
  name = ePhoto $release ($arch)
+
  name = MonAppli $release ($arch)
 
  release = 3
 
  release = 3
  '''stable''' = http://repos.systea.net/$release/ephototest/i386/RPMS/
+
  '''stable''' = http://repos.domain.tld/$release/monappli/i386/RPMS/
 
   
 
   
 
  ### Additional repositories
 
  ### Additional repositories
  '''updates''' = http://repos.systea.net/$release/ephototest/i386/RPMS/
+
  '''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/ephoto.conf
+
  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
  ephoto-i386: Generating ePhoto 3 (i386) meta-data
+
  monappli-i386: Generating monappli 3 (i386) meta-data
  ephoto-i386: Create repomd repository for stable
+
  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
  ephoto-i386: Create repomd repository for updates
+
  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.systea.net/web/mrepo/ephoto-test-i386/, trois répertoires de metadatas sont créés : "RPMS.all", "RPMS.stable" et "RPMS.updates"
+
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.systea.net/web/ephoto-i386/'''stable'''/
+
  # mkdir -p /home/sites/repos.domain.tld/web/monappli-i386/'''stable'''/
  # mkdir -p /home/sites/repos.systea.net/web/ephoto-i386/'''updates'''/
+
  # 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.systea.net/mrepo/centos5-i386/RPMS.rpmforge/repodata</nowiki>
+
  <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.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/'''.
+
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 systea.repo :
+
Dans /etc/yum.repos.d, créer un fichier monappli.repo :
  ### Name: RPMforge RPM Repository for CentOS/RHEL 5 - Systea
+
  ### Name: RPMforge RPM Repository for CentOS/RHEL 5
 
  ### URL: http://rpmforge.net/
 
  ### URL: http://rpmforge.net/
  [systeaforge]
+
  [maforge]
  name = CentOS/RHEL $releasever - RPMforge - Systea
+
  name = CentOS/RHEL $releasever - RPMforge
  baseurl = http://repos.systea.net/mrepo/centos5-i386/RPMS.rpmforge
+
  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

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