Reprepro
Reprepro est un outils pour gérer les APT repositories.
Reprepro est capable de gérer de multiples repositories ( dépôts) pour de multiples versions de distribution et un pool de package. Il s’agit de fichier .deb, .udeb, .dsc, etc. Il peut procéder aux mises à jour depuis un répertoire entrant ( incoming directory), copier des packages « references » entre des versions de distributions, lister tous les packages et/ou versions disponibles dans le repository, etc…
Reprepro maintient une base de données interne (un fichier .DBM) du contenu du repository, ce qui le rend plutôt rapide et efficient. Pour ceux qui viennent du monde Windows, on peut dire que Reprepro est l’équivalent de WSUS.
Il s’installe depuis le package Debian reprepro
, et il est configuré à l’aide des fichiers contenus dans le sous-dossier conf
.
Installation d’un référentiel (Dépôt) Debian avec « pool », sécurisation pgp, et mirroring.
Ce Tutoriel est réalisé sur un Debian GNU/Linux 8.3 (jessie) à jour.
Installation
Vous devez avoir Apache2 (ou un autre serveur Web) installé et opérationnel. # apt-get install reprepro
Préparation des répertoires de base
# mkdir /var/www/reprepro # mkdir /var/www/reprepro/conf # mkdir /var/www/reprepro/incoming
Configuration
Les fichiers de configuration qu’utilise reprepro sont les suivants:
- conf/distributions : Décrit la structure du dépôt, et les distributions et composants supportés
- conf/updates : Décrit la liste des dépôts en amont d’où reprepro peut répliquer les packages
- conf/incoming : Décrit les dossiers locaux d’où reprepro peut importer des packages
- conf/uploders : Contient des règles sur qui peut importer des packages dans les archives
Nous créons les branches dont nous aurons besoin. Vous pouvez tout aussi bien n’en créer qu’une pour commencer. Ici nous allons créer une branche pour le système Debian « jessie » toutes les versions, et une branche pour le système Ubuntu « trusty » version 14.04:
# nano /var/www/reprepro/conf/distributions Origin: JF Rullier Label: Dépôt ACTIVPART Debian Suite: stable Codename: jessie Update: jessie Version: all Architectures: i386 amd64 source Components: main Description: dépôt Debian jessie toutes versions Origin: JF Rullier Label: Dépôt ACTIVPART Unbuntu Suite: stable Codename: trusty Update: trusty Version: 14.04 Architectures: i386, amd 64 source #(en fonction de vos besoin) Components: main restricted universe multiverse #(en fonction de vos besoin) Description: Dépôt pour Ubuntu version 14.04 (nommée "trusty" )
Positionner les permissions:
# chown -R www-data:www-data /var/www/reprepro/
Construction du référentiel
La commande suivante va générer les fichiers index pour les distributions choisies.
root@srv1:/var/www/reprepro# reprepro -b . export root@srv1:/var/www/reprepro#
La commande à créé deux répertoires: db et dists
root@srv1:/var/www/reprepro# ls conf db dists incoming root@srv1:/var/www/reprepro#
Dans db, se trouve la base de données, constituée de plusieurs fichiers .db:
root@srv1:/var/www/reprepro# ls -l db total 255876 -rw-r--r-- 1 root root 34340864 mars 2 12:56 checksums.db -rw-r--r-- 1 root root 16384 mars 1 14:51 contents.cache.db -rw-r--r-- 1 root root 213827584 mars 2 12:56 packages.db -rw-r--r-- 1 root root 13774848 mars 2 12:56 references.db -rw-r--r-- 1 root root 45056 mars 2 12:56 release.caches.db -rw-r--r-- 1 root root 32 mars 2 13:12 version root@srv1:/var/www/reprepro#
Et dans dists, on trouve un répertoire pour chaque entrée « Codename » du fichier « distributions« :
root@srv1:/var/www/reprepro# ls -l dists total 8 drwxr-xr-x 3 root root 4096 mars 1 14:51 jessie drwxr-xr-x 6 root root 4096 mars 1 14:51 trusty root@srv1:/var/www/reprepro#
Vous pouvez déjà naviguer dans votre dépôt…
root@srv1:/var/www/reprepro# ls -l dists/jessie/main/ total 12 drwxr-xr-x 2 root root 4096 mars 1 14:51 binary-amd64 drwxr-xr-x 2 root root 4096 mars 1 14:51 binary-i386 drwxr-xr-x 2 root root 4096 mars 1 14:51 source root@srv1:/var/www/reprepro#
Ajouter un paquet au référentiel
IL s’agit d’ajouter à la base de données un paquet (un fichier .deb) qui se trouve dans le dossier /var/cache/apt/archives. Exemple: ajoutons le paquet « multiarch-support » au dépôt de la distribution « jessie »:
root@srv1:/var/www/reprepro# reprepro -vb . includedeb jessie /var/cache/apt/archives/multiarch-support_2.24-10_amd64.deb /var/cache/apt/archives/multiarch-support_2.24-10_amd64.deb: component guessed as 'main' Exporting indices... root@srv1:/var/www/reprepro#
Vérification avec la commande « list »:
$ sudo reprepro -vb . list jessie jessie|main|amd64: multiarch-support 2.24-10 $
Pour pouvoir ajouter un paquet, il faut donc connaître le nom du fichier .deb.
Commencer par installer le paquet apt-file:
$ sudo apt install apt-file $
Puis actualisation du cache:
$ sudo apt-file update Ignoring source without Contents File: http://security.debian.org/dists/jessie/updates/main/Contents-amd64.gz Downloading complete file http://debian.mirrors.ovh.net/debian/dists/jessie-updates/main/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 227k 100 227k 0 0 2918k 0 --:--:-- --:--:-- --:--:-- 2922k Downloading complete file http://debian.mirrors.ovh.net/debian/dists/jessie-backports/main/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 5386k 100 5386k 0 0 9802k 0 --:--:-- --:--:-- --:--:-- 9793k Downloading complete file http://debian.mirrors.ovh.net/debian/dists/jessie/main/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 26.0M 100 26.0M 0 0 10.6M 0 0:00:02 0:00:02 --:--:-- 10.6M Downloading complete file http://debian.mirrors.ovh.net/debian/dists/jessie/contrib/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 88313 100 88313 0 0 1727k 0 --:--:-- --:--:-- --:--:-- 1760k Downloading complete file http://debian.mirrors.ovh.net/debian/dists/jessie/non-free/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 761k 100 761k 0 0 6170k 0 --:--:-- --:--:-- --:--:-- 6194k Downloading complete file https://packages.gitlab.com/gitlab/gitlab-ce/debian/dists/jessie/main/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 20 100 20 0 0 15 0 0:00:01 0:00:01 --:--:-- 15 $
Ensuite recherchons le paquet. Par exemple le jeu « mah-jong »:
$ sudo apt-cache show mah-jong
Package: mah-jong
Version: 1.11-2
Installed-Size: 1069
Maintainer: Nicolas Boullis <nboullis@debian.org>
Architecture: amd64
Depends: libc6 (>= 2.7), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.24.0)
Description-fr: Jeu originel de Mah-Jong
Ce paquet fournit un ensemble de programmes permettant de jouer au
jeu classique de Mah-Jong : un serveur, un client par joueur
humain et un client pour un joueur d’intelligence artificielle
(ordinateur). Cela permet de jouer au Mah-Jong avec 1 à 4 joueurs.
.
Le jeu classique de Mah-Jong ne doit pas être confondu avec le jeu de
patience bien connu, si ce n'est le fait qu'il utilise le même jeu de
tuiles.
.
L'auteur d'origine du programme suggère des donations volontaires
pour son travail. Veuillez consulter le fichier
/usr/share/doc/mah-jong/README.Debian pour plus d'informations.
Description-md5: 822830fc091ce9f29cecc60a3fbfa6d1
Homepage: http://mahjong.julianbradfield.org/
Tag: game::board, interface::x11, role::program, uitoolkit::gtk,
use::gameplaying, x11::application
Section: games
Priority: optional
Filename: pool/main/m/mah-jong/mah-jong_1.11-2_amd64.deb
Size: 400938 MD5sum: af4a443b9d07a64c4fb43aab76296368 SHA1: 9e2b29b168bdd626cc88059384ea627827b7c704 SHA256: adff067f5260d3f88d767f115801e421b75837bdfbf3835be635f958b0432b5f $
Puis ajoutons ce paquet au repository reprepro:
$ sudo reprepro -vb . includedeb jessie mah-jong_1.11-2_amd64.deb Error 2 opening mah-jong_1.11-2_amd64.deb: No such file or directory There have been errors! francou@srv1:/var/www/reprepro$ sudo reprepro -vb . includedeb jessie pool/main/m/mah-jong/mah-jong_1.11-2_amd64.deb pool/main/m/mah-jong/mah-jong_1.11-2_amd64.deb: component guessed as 'main' Exporting indices... Successfully created './dists/jessie/Release.gpg.new' Successfully created './dists/jessie/InRelease.new' $
Vérifions que ce paquet a bien été ajouté:
$ sudo reprepro -b /var/www/reprepro list jessie mah-jong jessie|main|amd64: mah-jong 1.11-2 francou@srv1:/var/www/reprepro$
Ajouter plusieurs paquets en une fois
Voici un petit script permettant d’ajouter tous les paquets présents dans un dossier en une seule commande:
#!/bin/bash for paquet in $1/*.deb; do reprepro -b . includedeb trusty $paquet; done
Lister les paquets du référentiel
$ sudo reprepro list jessie ... jessie|main|amd64: libapache2-mod-php5 5.6.24+dfsg-0+deb8u1 jessie|main|amd64: multiarch-support 2.19-18+deb8u2 jessie|main|amd64: php5-mysql 5.6.24+dfsg-0+deb8u1 ... $
Enlever un paquet du dépôt
Par exemple enlevons le paquet multiarch-support
$ sudo reprepro remove jessie multiarch-support Exporting indices... Deleting files no longer referenced... $
Ajouter un paquet source au référentiel
Il vous faut avec les sources, un fichier .dsc qui doit contenir les informations du paquet, par exemple:
Format: 1.0 Source: notalweg Binary: notalweg Architecture: any Version: 0.2-1 Maintainer: Cyrille Colin <colin@univ-metz.fr> Homepage:http://talweg.univ-metz.fr Standards-Version: 3.8.1 Build-Depends: debhelper (>= 7), autotools-dev, liblog4net1.2-cil, make, mono-gmcs, libmysql5.0-cil, libmono-ldap2.0-cil, libmono-system-web2.0-cil Checksums-Sha1: ee1774e8649bcd4eb38d87d035d29edde9d54741 167744 notalweg_0.2-1.tar.gz Checksums-Sha256: 53ea2c131633ccdf4681fd9e7968e80ae0d59259e34b8ff81a8231756fdfba12 167744 notalweg_0.2-1.tar.gz Files: cc672ae30ddc04092b9e6da80efa0143 167744 notalweg_0.2-1.tar.gz
# reprepro -vb . includedsc lenny /var/cache/apt/archives/notalweg_0.2-1.dsc /var/cache/apt/archives/notalweg_0.2-1.dsc: component guessed as 'main' Exporting indices...
Configuration Apache
Le principal intérêt de votre dépôt Reprepro est que vos autres ordinateurs Linux puissent venir y puiser leurs mises à jour. Pour cela vous devez rendre votre dépôt accessible en HTTP.
Créer un fichier /etc/apache2/sites-available/reprepro.conf
<VirtualHost *:80 >
DocumentRoot /var/www/reprepro
# Complétez le nom du serveur de votre choix
ServerName reprepro.activpart.com
ErrorLog /var/log/apache2/reprepro-error.log
LogLevel warn
CustomLog /var/log/apache2/reprepro-access.log combined
ServerSignature On
# Permet la lecture du dossier, qui permet aux utilisateurs de parcourir le référentiel également en utilisant le navigateur.
<Directory "/var/www/reprepro">
Options Indexes FollowSymLinks MultiViews
DirectoryIndex index.html
AllowOverride Options
Order allow,deny
allow from all
</Directory>
# Cache le dossier conf/ dans tous les référentiels
<Directory "/var/www/reprepro/*/conf">
Order allow,deny
Deny from all
Satisfy all
</Directory> # Cache le dossier db/ dans tous les référentiels
<Directory "/var/www/reprepro/*/db">
Order allow,deny
Deny from all
Satisfy all
</Directory>
</VirtualHost>
Vérification de la configuration Apache:
root@srv1:/etc/apache2/sites-available# apachectl -t Syntax OK root@srv1:/etc/apache2/sites-available#
Recharger la configuration Apache:
root@srv1:/etc/apache2/sites-available# service apache2 reload root@srv1:/etc/apache2/sites-available#
Faites les ajouts nécessaires dans votre serveur DNS pour que votre nom d’hôte ( dans cet exemple reprepro.activpart.com) pointe sur la bonne IP.
Faisons un test avec un navigateur:
Mirroring
L’intérêt réside aussi dans le fait d’avoir un dépôt à jour. Ici nous allons récupérer les packages pour la suite « jessie » depuis debian.org.
Récupérer le trousseau (keyring ou « anneau de clés » en anglais) de clés publiques pour Debian:
root@srv1:~#/ apt-get install debian-keyring root@srv1:~#/ apt-get install debian-archive-keyring root@srv1:~#
Liste des fichiers concernés:
root@srv1:~# dpkg -L debian-archive-keyring|egrep 'jessie.*gpg$' /etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg /etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg /etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg root@srv1:~#
Extraction de la clé publique
root@srv1:/var/www# gpg /etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg
pub 4096R/2B90D010 2014-11-21
uid Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>
root@srv1:/var/www#
Pour cela, il faut paramétrer un fichier /var/www/reprepro/conf/updates. Ici le paramètre Name : jessie doit correspondre à la ligne Update : jessie que nous avons mise dans le fichier distributions
Name: jessie Method: http://ftp.fr.debian.org/debian/ Suite: jessie Components: main Architectures: amd64 source VerifyRelease: 2B90D010 FilterFormula: Priority (==required)
Le fichier ci-dessus fera un téléchargement des deb de jessie (amd64 et source) pour une installation minimale (Priority (==required). Voir le manuel pour plus de précisions.
On lance une mise à jour de notre dépôt:
root@srv1:/var/www/reprepro# reprepro -V update jessie
Created directory "./lists" Warning: No VerifyRelease line in 'jessie' or any rule it includes via 'From:'. Release.gpg cannot be checked unless you tell which key to check with. (To avoid this warning and not check signatures add 'VerifyRelease: blindtrust'). aptmethod error receiving 'http://ftp.fr.debian.org/debian/dists/jessie/InRelease': '404 Not Found [IP : 2a01:e0c:1:1598::2 80]' aptmethod got 'http://ftp.fr.debian.org/debian/dists/jessie/Release' aptmethod got 'http://ftp.fr.debian.org/debian/dists/jessie/main/binary-amd64/Packages.xz' Uncompress './lists/jessie_jessie_main_amd64_Packages.xz' into './lists/jessie_jessie_main_amd64_Packages' using '/usr/bin/unxz'... aptmethod got 'http://ftp.fr.debian.org/debian/dists/jessie/main/source/Sources.xz' Uncompress './lists/jessie_jessie_main_Sources.xz' into './lists/jessie_jessie_main_Sources' using '/usr/bin/unxz'... Calculating packages to get... processing updates for 'jessie|main|source' reading './lists/jessie_jessie_main_Sources' processing updates for 'jessie|main|amd64' reading './lists/jessie_jessie_main_amd64_Packages' nothing to do for 'jessie|main|i386' Created directory "./pool/main/b" Created directory "./pool/main/b/base-files" Created directory "./pool/main/b/base-passwd" Created directory "./pool/main/b/bash" Created directory "./pool/main/u" Created directory "./pool/main/u/util-linux" ... aptmethod got 'http://ftp.fr.debian.org/debian/pool/main/u/util-linux/util-linux_2.25.2-6_amd64.deb' aptmethod got 'http://ftp.fr.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2+b1_amd64.deb' Shutting down aptmethods... Installing (and possibly deleting) packages... Exporting indices... root@srv1:/var/www/reprepro#
Vérifions…
root@srv1:/var/www/reprepro# reprepro list jessie jessie|main|amd64: base-files 8+deb8u7 jessie|main|amd64: base-passwd 3.5.37 jessie|main|amd64: bash 4.3-11+deb8u1 jessie|main|amd64: bsdutils 1:2.25.2-6 ..... jessie|main|amd64: util-linux 2.25.2-6 jessie|main|amd64: zlib1g 1:1.2.8.dfsg-2+b1 root@srv1:/var/www/reprepro#
Utilisation de votre dépôt
L’essentiel de la configuration est en place. Voyons maintenant comment utiliser le dépôt.
Remarque concernant apt-update et apt-upgrade :
On lance d'abord update
, puis upgrade
. Aucun des 2 ne lance l’autre automatiquement.
apt-get update
met à jour la liste des packages disponibles et leur versions, mais n’installe ni ne met à jour aucun paquet.apt-get upgrade
par contre installe les nouvelles versions des paquets que vous avez déjà. Après avoir mis à jour la liste par update, le gestionnaire de paquets sait s’il y a des nouvelle mises à jour pour les logiciels que vous avez installé. C’est pour cela que vous devez d’abord lancerupdate
.
Mise à jour du système local
Si vous l’utilisez en local, dans ce cas il vous suffit d’ajouter à votre /etc/apt/sources.list la ligne :
deb file:/var/www/reprepro jessie main contrib non-free
Bien sûr il faudra changer le stable en unstable pour la version instable.
Mise à jour de PC clients
Sur votre nouveau serveur reprepro, il faut maintenant exporter la clé publique dans un dossier accessible par le Web. En effet, les machines qui accéderont à ce dépôt personnel demanderont la clé car les paquets sont signés :
root@srv1:/# gpg --armor --export jf.rullier@activpart.com >> /var/www/reprepro/reprepro.gpg.key
Côté client, Ajouter la clé au trousseau
root@motoclic:~# wget -O - http://reprepro.activpart.com/reprepro.gpg.key | apt-key add - --2017-03-01 22:42:43-- http://reprepro.activpart.com/reprepro.gpg.key Résolution de reprepro.activpart.com (reprepro.activpart.com)… 149.202.192.45 Connexion à reprepro.activpart.com (reprepro.activpart.com)|149.202.192.45|:80… connecté. requête HTTP transmise, en attente de la réponse… 200 OK Taille : 2872 (2,8K) [application/pgp-keys] Sauvegarde en : « STDOUT » - 100%[=====================>] 2,80K --.-KB/s ds 0s 2017-03-01 22:42:43 (419 MB/s) — envoi vers sortie standard [2872/2872] OK root@motoclic:~#
Il vous suffira alors d’ajouter à tous les pc devant se servir de ce serveur la ligne :
deb http://reprepro.activpart.com/ jessie main contrib non-free
dans le fichier sources.list .
Ensuite on lance sudo apt-get update
root@motoclic:/# apt-get update Ign http://reprepro.activpart.com jessie InRelease Ign http://reprepro.activpart.com jessie Release.gpg Réception de : 1 http://reprepro.activpart.com jessie Release [2 298 B] Réception de : 2 http://reprepro.activpart.com jessie/main amd64 Packages [24,8 kB] .... root@motoclic:/#
et les paquets ajoutés à votre serveur personnel devraient être disponibles.
Vous pouvez aussi ajouter vos fichiers sur un site web (le site disponible pour vous chez votre fournisseur d’accès ou autre…). Il vous suffira de donner la bonne URL dans une ligne semblable à ci-dessus. Tout le monde pourrait alors avoir accès à vos chers debs. Nous allons voir comment sécuriser les échanges.
Sécurisation
Nous avons vu plus haut le message » Warning: No VerifyRelease line in ‘jessie’ » lorsque nous avons mis à jour le serveur mirroir.
C’est parce qu’il faut passer par l’utilisation d’une clé GPG.
La génération de la clef peut prendre du temps… Il est préférable de la faire directement sur la machine et non pas par ssh.
root@srv1:~# gpg --gen-key gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Sélectionnez le type de clef désiré : (1) RSA et RSA (par défaut) (2) DSA et Elgamal (3) DSA (signature seule) (4) RSA (signature seule) Quel est votre choix ? 1 les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits. Quelle taille de clef désirez-vous ? (2048) La taille demandée est 2048 bits Veuillez indiquer le temps pendant lequel cette clef devrait être valable. 0 = la clef n'expire pas <n> = la clef expire dans n jours <n>w = la clef expire dans n semaines <n>m = la clef expire dans n mois <n>y = la clef expire dans n ans Pendant combien de temps la clef est-elle valable ? (0) La clef n'expire pas du tout Est-ce correct ? (o/N) o Une identité est nécessaire à la clef ; le programme la construit à partir du nom réel, d'un commentaire et d'une adresse électronique de cette façon : « Heinrich Heine (le poète) <heinrichh@duesseldorf.de> » Nom réel : JF Rullier Adresse électronique : jf.rullier@activpart.com Commentaire : ACTIVPART Vous avez sélectionné cette identité : « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> » Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électronique ou (O)ui/(Q)uitter ? O Une phrase secrète est nécessaire pour protéger votre clef secrète. De nombreux octets aléatoires doivent être générés. Vous devriez faire autre chose (taper au clavier, déplacer la souris, utiliser les disques) pendant la génération de nombres premiers ; cela donne au générateur de nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie. ... Il n'y a pas suffisamment d'octets aléatoires disponibles. Veuillez faire autre chose pour que le système d'exploitation puisse rassembler plus d'entropie (128 octets supplémentaires sont nécessaires). fdgqdgfdsgdglkùkdslghùskdglkmhmFSkghkSFlkhfsùjgkF%Jmfsj shfhgfùlkjyjztlhùjn,!zedfrh,sdmhùkmrtlmhkzrt .....+++++ gpg: /root/.gnupg/trustdb.gpg : base de confiance créée gpg: clef B6ED6A32 marquée de confiance ultime. les clefs publique et secrète ont été créées et signées. gpg: vérification de la base de confiance gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s), modèle de confiance PGP gpg: profondeur : 0 valables : 1 signées : 0 confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u. pub 2048R/B6ED6A32 2017-02-28 Empreinte de la clef = 6063 95C8 FFBE 0A89 0AD0 BEED 3C2B 93A8 B6ED 6A32 uid JF Rullier (ACTIVPART) <jf.rullier@activpart.com> sub 2048R/2A5D9300 2017-02-28 root@srv1:~# Vérifions si la nouvelle clé est dans le trousseau:
root@srv1:~# gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/B6ED6A32 2017-02-28 uid JF Rullier (ACTIVPART) <jf.rullier@activpart.com> sub 2048R/2A5D9300 2017-02-28 pub 1024D/CD2EFD2A 2009-12-15 uid Percona MySQL Development Team <mysql-dev@percona.com> sub 2048g/2D607DAF 2009-12-15 root@srv1:~# root@srv1:/var/www/reprepro# reprepro --ask-passphrase -b . export
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x Veuillez entrer la phrase secrète pour déverrouiller la clef secrète pour le x x certificat OpenPGP : x x « JF Rullier (ACTIVPART) <jf.rullier@activpart.com> » x x clef RSA de 2048 bits, identifiant B6ED6A32, x x créée le 2017-02-28. x x x x x x Phrase secrète ______________________________________________________________ x x x x <OK> <Cancel> x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
root@srv1:/var/www/reprepro#
Il faut entrer 2 fois la passphrase pour chacun de vos dépôts.
Si vous obtenez une erreur comme celle-ci:
ERROR: Condition ‘B6ED6A32’ not fullfilled for ‘/var/www/reprepro//lists/jessie_jessie_Release.gpg’.
Signatures in ‘/var/www/reprepro//lists/jessie_jessie_Release.gpg’:
‘8B48AD6246925553’ (signed 2017-01-14): missing pubkey
‘7638D0442B90D010’ (signed 2017-01-14): missing pubkey
‘CBF8D6FD518E17E1’ (signed 2017-01-14): missing pubkey
Error: Not enough signatures found for remote repository jessie (http://ftp.fr.debian.org/debian jessie)!
Cela signifie qu’il faut importer les clés du dépôt ftp.fr.debian.org/debian jessie
Pour cela, répeter pour chaque « missing pubkey »:
root@srv1:/# gpg –keyserver pgpkeys.mit.edu –recv-key 8B48AD6246925553
gpg: demande de la clef 46925553 sur le serveur hkp pgpkeys.mit.edu
gpg: clef 46925553 : clef publique « Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org> » importée
gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),
modèle de confiance PGP
gpg: profondeur : 0 valables : 1 signées : 0
confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.
gpg: Quantité totale traitée : 1
gpg: importées : 1 (RSA: 1)
root@srv1:/#
et
root@srv1:/# gpg -a –export 8B48AD6246925553 | apt-key add –
OK
root@srv1:/#
Vérifions que les clés sont bien ajoutées au trousseau:
root@srv1:/# gpg –list-keys
/root/.gnupg/pubring.gpg
————————
pub 2048R/B6ED6A32 2017-02-28
uid JF Rullier (ACTIVPART) <jf.rullier@activpart.com>
sub 2048R/2A5D9300 2017-02-28
sub 2048R/2DB65D33 2017-03-01
pub 4096R/46925553 2012-04-27 [expire : 2020-04-25]
uid Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>
pub 4096R/2B90D010 2014-11-21 [expire : 2022-11-19]
uid Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>
pub 4096R/518E17E1 2013-08-17 [expire : 2021-08-15]
uid Jessie Stable Release Key <debian-release@lists.debian.org>
root@srv1:/#
Lister les clés GPG disponibles sur le serveur reprepro depuis un client
$ sudo apt-key list --keyserver reprepro.activpart.com /etc/apt/trusted.gpg -------------------- pub 2048R/B6ED6A32 2017-02-28 uid JF Rullier (ACTIVPART) <jf.rullier@activpart.com> sub 2048R/2A5D9300 2017-02-28 sub 2048R/2DB65D33 2017-03-01 pub 4096R/E15E78F4 2015-04-17 [expire : 2020-04-15] uid GitLab B.V. (package repository signing key) <packages@gitlab.com> /etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg ---------------------------------------------------------- pub 4096R/2B90D010 2014-11-21 [expire : 2022-11-19] uid Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org> /etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg ------------------------------------------------------------------- pub 4096R/C857C906 2014-11-21 [expire : 2022-11-19] uid Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org> /etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg ------------------------------------------------------- pub 4096R/518E17E1 2013-08-17 [expire : 2021-08-15] uid Jessie Stable Release Key <debian-release@lists.debian.org> /etc/apt/trusted.gpg.d/debian-archive-squeeze-automatic.gpg ----------------------------------------------------------- pub 4096R/473041FA 2010-08-27 [expire : 2018-03-05] uid Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org> /etc/apt/trusted.gpg.d/debian-archive-squeeze-stable.gpg -------------------------------------------------------- pub 4096R/B98321F9 2010-08-07 [expire : 2017-08-05] uid Squeeze Stable Release Key <debian-release@lists.debian.org> /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg ---------------------------------------------------------- pub 4096R/46925553 2012-04-27 [expire : 2020-04-25] uid Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org> /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg ------------------------------------------------------- pub 4096R/65FFB764 2012-05-08 [expire : 2019-05-07] uid Wheezy Stable Release Key <debian-release@lists.debian.org> $