Mageia : Créer son propre dépôt RPM
Table des matières
Pour les packageurs du dimanche, comme moi, il nous arrive de se faire des "petits" paquets, pour notre propre besoin.
Je ne détaillerai pas ici la création de paquets RPM's, se référer à l'article Compiler ses propres paquets rpm avec Mageia.
Le but de cet article étant de mettre en place son dépôt de RPM.
Et bien en premier lieu, il faut .... un serveur, relié à Internet. Il n'est pas nécessaire qu'il tourne sur Mageia. S'il tourne sur Mageia c'est un plus, pour générer les informations sur les médias. Sinon, il faudra disposer sur le serveur d'un serveur SSH, d'un client Mageia, sur lequel est installé SSHFS.
Dans mon cas, je vais illustrer avec un serveur qui n'est pas sous Mageia, il est sous Gentoo, et je dispose donc d'un client Mageia.
Il est important de bien structurer les futurs dépôts.
Par exemple, lorsque j'ai créé l'arborescence des dépôts MLO, voici comment j'ai fait :
( C'est largement inspiré des dépôts officiels de Mageia )
Ce qu'il est important de retenir, c'est de faire un dépôt 32 bits et un autre 64 bits.
Il est préférable de créer trois sous dossiers (core, nonfree, tainted) afin de placer les paquets en fonction de leur licence. Ainsi, un pur utilisateur libre, pourra s'il le souhaite, ne pas utiliser nos paquets 'nonfree' et 'tainted'.
Enfin, créer un dépôt nommé SRPMS où nous stockerons les RPM Source (Source RPM).
Les fichiers RPM sont à placer (si vous avez suivi mon architecture) dans le dossier $ARCH/$TYPE (où $ARCH correspond à i586 ou x86_64, et $TYPE correspond à core, nonfree, tainted).
Voici un exemple dans notre arborescence de quelques paquets RPM :
Ne créez pas de dossier media_info, il est généré selon les explications du paragraphe suivant.
Une fois les RPM uploadés dans les dossiers, il reste à générer les médias. J'entends par là générer toutes les infrmations sur :
Pour cela, se placer dans le répertoire $ARCH/$TYPE et exécuter cette commande :
Cela créera le dossier media_info.
Voici ce qui est généré (à l'exception du fichier pubkey dont j'expliquerai la signification plus bas dans l'article).
==> Il faut continuer la
Voici le script que j'utilise pour générer mon arborescence :
Voici le script que j'utilise pour générer les fichiers d'information des médias :
Introduction
Pour les packageurs du dimanche, comme moi, il nous arrive de se faire des "petits" paquets, pour notre propre besoin.
Je ne détaillerai pas ici la création de paquets RPM's, se référer à l'article Compiler ses propres paquets rpm avec Mageia.
Le but de cet article étant de mettre en place son dépôt de RPM.
Prérequis
Et bien en premier lieu, il faut .... un serveur, relié à Internet. Il n'est pas nécessaire qu'il tourne sur Mageia. S'il tourne sur Mageia c'est un plus, pour générer les informations sur les médias. Sinon, il faudra disposer sur le serveur d'un serveur SSH, d'un client Mageia, sur lequel est installé SSHFS.
Dans mon cas, je vais illustrer avec un serveur qui n'est pas sous Mageia, il est sous Gentoo, et je dispose donc d'un client Mageia.
Bien organiser son architecture
Il est important de bien structurer les futurs dépôts.
Par exemple, lorsque j'ai créé l'arborescence des dépôts MLO, voici comment j'ai fait :
( C'est largement inspiré des dépôts officiels de Mageia )
Code BASH :
tree -d /media/mlo/Mageia/3 /media/mlo/Mageia/3 |-- i586 | |-- core | | |-- media_info | |-- nonfree | | |-- media_info | |-- tainted | |-- media_info |-- SRPMS | |-- core | | |-- media_info | |-- nonfree | | |-- media_info | |-- tainted | |-- media_info |-- Testing |-- x86_64 |-- core | |-- media_info |-- nonfree | |-- media_info |-- tainted |-- media_info 22 directories
Ce qu'il est important de retenir, c'est de faire un dépôt 32 bits et un autre 64 bits.
Il est préférable de créer trois sous dossiers (core, nonfree, tainted) afin de placer les paquets en fonction de leur licence. Ainsi, un pur utilisateur libre, pourra s'il le souhaite, ne pas utiliser nos paquets 'nonfree' et 'tainted'.
- Le dépôt Core comprend des paquets avec des logiciels libres et open-source, à savoir les paquets autorisés sous licence libres et open-source
- Le dépôt Nonfree (non-libres) comprend les paquets qui sont libres de charge/gratuit, c'est à dire que nous pouvons les redistribuer, mais ils contiennent du logiciel à source fermé (d'où le nom de Nonfree).
- Le dépôt Tainted (corrompu, contaminé) comprend les paquets sous différentes licences, celles qui sont libres et non libres, mais les principaux critères pour les paquets dans ce dépôt est qu'ils peuvent enfreindre des brevets et des lois sur le droit d'auteur (copyright) dans certains pays dans le monde (par exemple les codecs multimédia nécessaires pour lire des fichiers audio/vidéo de différents types, les paquets nécessaires pour lire les DVD vidéo du commerce ... etc).
Enfin, créer un dépôt nommé SRPMS où nous stockerons les RPM Source (Source RPM).
Où placer les RPM ?
Les fichiers RPM sont à placer (si vous avez suivi mon architecture) dans le dossier $ARCH/$TYPE (où $ARCH correspond à i586 ou x86_64, et $TYPE correspond à core, nonfree, tainted).
Voici un exemple dans notre arborescence de quelques paquets RPM :
Code BASH :
tree /media/mlo/Mageia/3/x86_64/nonfree/ -L 1 /media/mlo/Mageia/3/x86_64/nonfree/ |-- get-java-oracle-1.7.0_21-2.nonfree.mga3.x86_64.rpm |-- get-skype-4.2.0.11-2.nonfree.mga3.noarch.rpm |-- get-skype-4.2.0.11-3.nonfree.mga3.noarch.rpm |-- media_info |-- neroaac-codec-1.5.1-3.nonfree.mga3.noarch.rpm |-- shorten-3.6.1-4.nonfree.mga3.x86_64.rpm |-- Teamviewer8-8.0.17147-1.nonfree.mga3.x86_64.rpm 1 directory, 6 files
Ne créez pas de dossier media_info, il est généré selon les explications du paragraphe suivant.
Générer les informations des médias
Une fois les RPM uploadés dans les dossiers, il reste à générer les médias. J'entends par là générer toutes les infrmations sur :
- Qu'y a t il dans les dépôts
- Quelles sont les informations du paquet
- Quels sont les fichiers, le changelog ...
Pour cela, se placer dans le répertoire $ARCH/$TYPE et exécuter cette commande :
Code BASH :
genhdlist2 --xml-info --allow-empty-media .
Cela créera le dossier media_info.
Voici ce qui est généré (à l'exception du fichier pubkey dont j'expliquerai la signification plus bas dans l'article).
Code BASH :
tree /media/mlo/Mageia/3/x86_64/core/media_info /media/mlo/Mageia/3/x86_64/core/media_info |-- changelog.xml.lzma |-- files.xml.lzma |-- hdlist.cz |-- info.xml.lzma |-- MD5SUM |-- pubkey |-- synthesis.hdlist.cz 0 directories, 7 files
- changelog.xml.lzma : Ce fichier XML (compressé) contient l'ensemble des modifications des paquets présent dans le dépôt (Il recense toutes les lignes du fichier SPEC du pavé %changelog)
- files.xml.lzma : Ce fichier XML (compressé) contient l'ensemble des fichiers présents dans chaque paquet RPM présent dans le dépôt Il recense toutes les lignes du fichier SPEC du pavé %files)
- hdlist.cz :
- info.xml.lzma :
- MD5SUM :
- synthesis.hdlist.cz :
==> Il faut continuer la
Les scripts qui vont bien !
Générer l'arborescence
Voici le script que j'utilise pour générer mon arborescence :
Code BASH :
#!/bin/bash #Script de génération de l'arborescence d'un dépôt RPM #Auteur : Adrien.D - 26/05/2013 #Definition du nom du dépôt DIST=4 #Chemin complet de la clé publique (0 si pas de clé publique) PUB=0 #BEGIN# #Pour chaque architecture on va for ARCH in {i586,SRPMS,x86_64} do #Créer chaque sous-dépôt for TYPE in {core,nonfree,tainted} do DIR="$DIST/$ARCH/$TYPE/media_info" echo $DIR mkdir -p "$DIR" if [ -e $PUB ] then echo "copie $PUB dans $DIR" cp "$PUB" "$DIR" fi done done #END#
Générer les informations des médias
Voici le script que j'utilise pour générer les fichiers d'information des médias :
Code BASH :
#!bin/bash # Script de regénération des médias MLO by Adrien.D # Date : 02/11/2013 DIST=$1 read -p "Rafraichir les médias de Mageia $DIST ? (Entrée pour continuer, Ctrl+C pour annuler)" #Pour chaque architecture on va for ARCH in {i586,SRPMS,x86_64} do #Créer chaque sous-dépôt for TYPE in {core,nonfree,tainted} do DIR="$DIST/$ARCH/$TYPE" echo $DIR DIRM="$DIR/media_info" echo "$DIRM" genhdlist2 --xml-info --allow-empty-media --media_info-dir $DIRM $DIR done done