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 lancer update.

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>

$

 

 

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.