Outils personnels

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

De wikiGite

(Configuration)
 
(25 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
= Installation de MREPO sur CentOS/BlueOnyx =
 
= Installation de MREPO sur CentOS/BlueOnyx =
Les sources RPMFORGE doivent être installées.
+
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++
+
<source lang="bash">yum --enablerepo=rpmforge install mrepo hardlink++</source>
  
 
= 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
+
<source lang="bash">cd /etc
vi mrepo.conf
+
vi mrepo.conf</source>
 
Ajouter
 
Ajouter
 
  hardlink = yes
 
  hardlink = yes
Ligne 12 : Ligne 12 :
  
 
Si le DocumentRoot n'est pas /var/www (exemple : sur BlueOnyx), indiquer dans wwwdir le chemin vers de DocumentRoot du virtualhost.
 
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.
 
'''Note BlueOnyx''' : supprimer le répertoire error et l'index.html créés automatiquement dans le répertoire web du virtualhost.
 
  # packages directory
 
  # packages directory
Ligne 19 : 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
mv /var/www/mrepo /home/.sites/70/site4/web/
+
<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 :
cp /usr/share/doc/mrepo-0.8.7/dists/centos5.conf /etc/mrepo.conf.d
+
<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 :
  ### 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
/etc/init.d/httpd restart
+
<source lang="bash">/etc/init.d/httpd restart
/etc/init.d/mrepo restart
+
/etc/init.d/mrepo restart
  
# mrepo -g -vvv
+
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 51 : 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 66 : 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'''/
+
<source lang="bash">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'''/</source>
 
La mise à jour du dépôt se fera par
 
La mise à jour du dépôt se fera par
mrepo -ug -vvv
+
<source lang="bash">mrepo -ug -vvv</source>
  
 
= Signer le dépôt =
 
= Signer le dépôt =
'''A VALIDER'''
+
'''<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.
# gpg -gen-key
+
<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 :
# gpg -list-keys
+
<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)
# vi .rpmmacros
+
<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é :
# rpm --resign /chemin/vers/le/depot/paquet.rpm
+
<source lang="bash">rpm --resign /chemin/vers/le/depot/paquet.rpm</source>
 
Vérifier la signature
 
Vérifier la signature
# rpm --checksig -v paquet.rpm
+
<source lang="bash">rpm --checksig -v paquet.rpm</source>
(il peut petre nécessaire d'importer la clé publique sur le système : rpm --import)
+
(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
# gpg -export -a "Votre clé" > Public_key.txt
+
<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
 
  gpgcheck=1
 
  gpgcheck=1
  gpgkey=http://repos.systea.net/mrepo/centos5-i386/RPMS.rpmforge/repodata
+
  <nowiki>gpgkey=http://repos.domain.tld/mrepo/centos5-i386/RPMS.rpmforge/repodata</nowiki>
  
= Dag RPMforge mirror repo =
+
= Dépôt miroir de Dag/RPMforge =
Créer /etc/mrepo.conf.d/dag.conf :
+
== Création du dépôt et synchronisation ==
 +
Créer /etc/mrepo.conf.d/rpmforge.conf :
 
  ### Name: RPMforge - Dag
 
  ### Name: RPMforge - Dag
 
   
 
   
Ligne 116 : 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 :
rsync --list-only rsync://apt.sw.be/pub/
+
<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 mettre à jour 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 !!!
mrepo -ugvvv
+
<source lang="bash">mrepo -gvvv centos5</source>
  
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 :
 
  30 2 * * * root /usr/bin/mrepo -q -ug
 
  30 2 * * * root /usr/bin/mrepo -q -ug
  
------------------------------------
+
== Paramétrage du client YUM ==
Paramétrage du client YUM
+
Dans /etc/yum.repos.d, créer un fichier monappli.repo :
 
+
### Name: RPMforge RPM Repository for CentOS/RHEL 5
Dans /etc/yum.repos.d, créer un fichier systea.repo :
+
### URL: http://rpmforge.net/
### Name: RPMforge RPM Repository for CentOS/RHEL 5 - Systea
+
[maforge]
### URL: http://rpmforge.net/
+
name = CentOS/RHEL $releasever - RPMforge
[systeaforge]
+
baseurl = http://repos.domain.tld/mrepo/centos5-i386/RPMS.rpmforge
name = CentOS/RHEL $releasever - RPMforge - Systea
+
enabled = 0
baseurl = http://repos.systea.net/mrepo/centos5-i386/RPMS.rpmforge
+
protect = 0
enabled = 0
+
# Here we reuse the key from Dag RPMforge since the RPMs are signed with it
protect = 0
+
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
# Here we reuse the key from Dag RPMforge since the RPMs are signed with it
+
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
 
gpgcheck = 1
 

Version actuelle datée du 20 mars 2012 à 16:44

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