Reprepro

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

Installation d'un référentiel (Dépôt) Debian avec "pool", sécurisation pgp, et mirroring.

REPREPRO

Ce Tuto est réalisé sur une squeeze à jour

Installation

# apt-get install reprepro

Nous présumons que vous avez Apache2 (ou un autre serveur Web) installé et opérationnel.

Préparation des répertoires de base

# mkdir /var/www/debian
# mkdir /var/www/debian/conf
# mkdir /var/www/debian/incoming

Configuration

Nous créons les quatres branches dont nous aurons besoin. Vous pouvez tout aussi bien n'en créer qu'une pour commencer

# nano /var/www/debian/conf/distributions

Origin: lol
Label: lol's apt
Suite: stable
Codename: lenny
Version: 5.03
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description

Origin: lol      
Label: lol's apt
Suite: testing
Codename: squeeze
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description

Origin: lol      
Label: lol's apt
Suite: unstable
Codename: sid
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description

Origin: lol      
Label: lol's apt
Suite: experimental
Codename: experimental
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description
# chown -R www-data:www-data /var/www/debian/

Construction du référentiel

# reprepro -b . export

La commande à créé deux répertoires: db et dists

# ls
conf  db  dists  incoming

Vous pouvez déjà naviguer dans votre dépôt...

 

Ajouter un paquet au référentiel

# reprepro -vb . includedeb squeeze /var/cache/apt/archives/reprepro_4.2.0-1_amd64.deb
/var/cache/apt/archives/reprepro_4.2.0-1_amd64.deb: component guessed as 'main'
Exporting indices...

Ajouter un paquet source au référentiel

Il vous faut avec les sources, un fichier .desc 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...

Enlever un paquet du dépôt

# reprepro -b . remove sid reprepro
Exporting indices...
Deleting files no longer referenced...

Génération de votre clef 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.

# gpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 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 clé désiré:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (signature seule)
   (4) RSA (signature seule)
Votre choix ? 1
les clés RSA peuvent faire entre 1024 et 4096 bits de longueur.
Quelle taille de clé désirez-vous ? (2048) 1024
La taille demandée est 1024 bits
Spécifiez combien de temps cette clé devrait être valide.
         0 = la clé n'expire pas
      <n>  = la clé expire dans n jours
      <n>w = la clé expire dans n semaines
      <n>m = la clé expire dans n mois
      <n>y = la clé expire dans n années
La clé est valide pour ? (0) 1y
La clé expire le ven. 30 sept. 2011 21:29:05 EAT
Est-ce correct ? (o/N) o

Vous avez besoin d'un nom d'utilisateur pour identifier votre clé; le
programme le construit à partir du nom réel, d'un commentaire et d'une
adresse e-mail de cette manière:
   « Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> »

Nom réel: George Thejungle
Adresse e-mail: <george@thejungle.org>
Commentaire: GJ
Vous avez sélectionné ce nom d'utilisateur:
    "George Thejungle (GJ) <george@thejungle.org>"

Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? o
Vous avez besoin d'une phrase de passe pour protéger votre clé
secrète.

Un grand nombre d'octets aléatoires doit être généré. 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'avoir assez d'entropie.

Il n'y a pas assez d'octets aléatoires disponibles. Faites autre chose
pour que l'OS puisse amasser plus d'entropie ! (il faut 277 octets de plus)

+++++
......+++++
Un grand nombre d'octets aléatoires doit être généré. 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'avoir assez d'entropie.
....+++++
+++++
gpg: clé 94821D6C marquée comme ayant une confiance ultime.
les clés publique et secrète ont été créées et signées.

gpg: vérifier la base de confiance
gpg: 3 marginale(s) nécessaires, 1 complète(s) nécessaires, modèle
de confiance PGP
gpg: profondeur: 0  valide:   3  signé:   0
confiance: 0-. 0g. 0n. 0m. 0f. 3u
gpg: la prochaine vérification de la base de confiance aura lieu le 2011-09-30
pub   1024R/94821D6C 2010-09-30 [expire: 2011-09-30]
    Empreinte de la clé = 6853 34C1 4A74 0A2D 71C7  87BC E494 7233 9482 1D6C
uid                  George Thejungle (GJ) <george@thejungle.org>
sub   1024R/F1D4BE56 2010-09-30 [expire: 2011-09-30]

Ajoutons la signature PGP à notre fichier de configuration :

Origin: lol
Label: lol's apt
Suite: stable
Codename: lenny
Version: 5.03
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description
SignWith: yes

Il faut passer cette commande pour chacun de vos dépôts

Nous ajoutons la clef à nos dépôts :

# reprepro --ask-passphrase -b . export
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:
258FA3EA17101C09 George Thejungle (GJ) <george@thejungle.org> needs a passphrase
Please enter passphrase:

Premier test

Les lignes qui vont bien dans le sources.list:

# mon referenciel perso
deb http://nas.zehome.org/debian/ lenny main contrib non-free
deb http://nas.zehome.org/debian/ squeeze main contrib non-free
deb http://nas.zehome.org/debian/ sid main contrib non-free
deb http://nas.zehome.org/debian/ experimental main contrib non-free
# apt-get update (chez un "client")
...
28,3ko réceptionnés en 27s (1 015o/s)
Lecture des listes de paquets... Fait
W: Erreur de GPG : http://nas.isalo.org lenny Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 258FA3EA17101C09
W: Erreur de GPG : http://nas.isalo.org squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 258FA3EA17101C09
W: Erreur de GPG : http://nas.isalo.org sid Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 258FA3EA17101C09
W: Erreur de GPG : http://nas.isalo.org experimental Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 258FA3EA17101C09


Nous avons évidemment une erreur de clef GPG... Pour résoudre cela, nous allons installer un serveur de clef. Ce serveur aura d'autres fonctions si vous le souhaitez... Échange de clef publiques pour vos mails par exemple...

Installation de OpenSKS

Rendez-vous ici

Ajout de la clef GPG à votre serveur SKS

# sks merge /root/mygpg.pub
Loading keys...
   6 keys loaded, 0 files left
   DB time:  0.00 min.  Total time: 0.00 min.
# sks cleandb
# service sks restart
Stopping sks daemons: sksrecon.. sksdb.. done.
Starting sks daemons: sksdb.. sksrecon.. done.

Test chez un client

Client :

# gpg --keyserver hkp://nas.isalo.org --recv-keys 258FA3EA17101C09
gpg: requête de la clé 17101C09 du serveur hkp nas.isalo.org
gpg: clé 17101C09: clé publique « George Thejungle (GJ) <george@thejungle.org> » importée
gpg:        Quantité totale traitée: 1
gpg:                       importée: 1  (RSA: 1)
# gpg -a --export 17101C09 | sudo apt-key add -
OK

Faire du "mirroring" avec reprepro

La possibilité de faire du "mirroring" partiel ou total est une des fonctions extrêmement pratiques de reprepro.

Dans votre fichier /var/www/debian/conf/distributions

Origin: lol
Label: lol's apt
Suite: testing
Update: squeeze
Codename: squeeze
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description
SignWith: yes

Ajoutez la ligne Update: squeeze

Créez un fichier /var/www/debian/conf/updates contenant ceci :

Name: squeeze
Method: http://ftp.fr.debian.org/debian/
Suite: squeeze
Components: main
Architectures: amd64 source
FilterFormula: Priority (==required)

Je vous renvoie au man pour plus de précisions. Le fichier ci-dessus fera un téléchargement des deb de squeeze (amd64 et source) pour une installation minimale (Priority (==required)

Il suffit ensuite de lancer la commande suivante :

# reprepro -V update squeeze
Created directory "./lists"
Warning: No VerifyRelease line in 'squeeze' 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 got 'http://ftp.fr.debian.org/debian/dists/squeeze/Release'
aptmethod got 'http://ftp.fr.debian.org/debian/dists/squeeze/main/binary-amd64/Packages.bz2'
Uncompress './lists/squeeze_squeeze_main_amd64_Packages.bz2' into './lists/squeeze_squeeze_main_amd64_Packages'...
aptmethod got 'http://ftp.fr.debian.org/debian/dists/squeeze/main/source/Sources.bz2'
Uncompress './lists/squeeze_squeeze_main_Sources.bz2' into './lists/squeeze_squeeze_main_Sources'...
Calculating packages to get...
  nothing to do for 'squeeze|contrib|source'
  nothing to do for 'squeeze|contrib|amd64'
  nothing to do for 'squeeze|contrib|i386'
  nothing to do for 'squeeze|non-free|source'
  nothing to do for 'squeeze|non-free|amd64'
  nothing to do for 'squeeze|non-free|i386'
  processing updates for 'squeeze|main|source'
  reading './lists/squeeze_squeeze_main_Sources'
  processing updates for 'squeeze|main|amd64'
  reading './lists/squeeze_squeeze_main_amd64_Packages'
  nothing to do for 'squeeze|main|i386'
Created directory "./pool"
Created directory "./pool/main"
...

De la lecture

https://www.memolinux.info/doku.php?id=unix:systeme:reprepro

http://guilhem.toile-libre.org/tutoriels/depot_debian.html

http://mirrorer.alioth.debian.org/reprepro.1.html

http://www.debian-administration.org/articles/286

http://www.jejik.com/articles/2006/09/setting_up_and_managing_an_apt_repository_with_reprepro/

Lol 1 octobre 2010 à 10:38 (EAT)