« Reprepro » : différence entre les versions

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Installation d'un référentiel (Dépôt) Debian avec "pool" et sécurisation pgp.
Installation d'un référentiel (Dépôt) Debian avec "pool", sécurisation pgp, et mirroring.


== REPREPRO ==
'''REPREPRO'''


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


=== Installation ===
== Installation ==


  # apt-get install reprepro
  # apt-get install reprepro
Ligne 11 : Ligne 11 :
Nous présumons que vous avez Apache2 (ou un autre serveur Web) installé et opérationnel.
Nous présumons que vous avez Apache2 (ou un autre serveur Web) installé et opérationnel.


=== Préparation des répertoires de base ===
== Préparation des répertoires de base ==


  # mkdir /var/www/debian
  # mkdir /var/www/debian
Ligne 17 : Ligne 17 :
  # mkdir /var/www/debian/incoming
  # mkdir /var/www/debian/incoming


=== Configuration ===
== Configuration ==


Nous créons les quatres branches dont nous aurons besoin.
Nous créons les quatres branches dont nous aurons besoin.
Ligne 59 : Ligne 59 :
  # chown -R www-data:www-data /var/www/debian/
  # chown -R www-data:www-data /var/www/debian/


=== Construction du référenteil ===
== Construction du référentiel ==


  # reprepro -b . export
  # reprepro -b . export


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


  # ls
  # ls
Ligne 72 : Ligne 72 :
[[Fichier:Reprepro1.jpeg]]
[[Fichier:Reprepro1.jpeg]]


=== Ajouter un paquet au référentiel ===
== Ajouter un paquet au référentiel ==


  # reprepro -vb . includedeb squeeze /var/cache/apt/archives/reprepro_4.2.0-1_amd64.deb
  # reprepro -vb . includedeb squeeze /var/cache/apt/archives/reprepro_4.2.0-1_amd64.deb
Ligne 78 : Ligne 78 :
  Exporting indices...
  Exporting indices...


=== Enlever un paquet du dépôt ===
== 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:
 
<code>
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
</code>
 
# 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
  # reprepro -b . remove sid reprepro
Ligne 84 : Ligne 110 :
  Deleting files no longer referenced...
  Deleting files no longer referenced...


=== Génération de votre clef GPG ===
== Génération de votre clef GPG ==


La généaration de la clef peut prendre du temps... Il est préférable de la faire directement sur la machine et non pas par ssh.
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 --gen-key
Ligne 157 : Ligne 183 :
  sub  1024R/F1D4BE56 2010-09-30 [expire: 2011-09-30]
  sub  1024R/F1D4BE56 2010-09-30 [expire: 2011-09-30]


Ajoutons la clef à nos dépôts :
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
  # reprepro --ask-passphrase -b . export
Ligne 177 : Ligne 217 :
  Please enter passphrase:
  Please enter passphrase:


=== Premier test ===
== 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")
  # apt-get update (chez un "client")
Ligne 191 : Ligne 239 :
Nous avons évidemment une erreur de clef GPG...
Nous avons évidemment une erreur de clef GPG...
Pour résoudre cela, nous allons installer un serveur de clef.
Pour résoudre cela, nous allons installer un serveur de clef.
Ce serveur aura d'autres fonctions si vous le souhaitez... Echange de clef publiques pour vos mails par exemple...
Ce serveur aura d'autres fonctions si vous le souhaitez... Échange de clef publiques pour vos mails par exemple...


=== Installation de OpenSKS ===
== Installation de OpenSKS ==


[[SKS_OpenPGP_Keyserver|Rendez-vous ici]]
[[SKS_OpenPGP_Keyserver|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/


[[Utilisateur:Lol|Lol]] 1 octobre 2010 à 10:38 (EAT)
[[Utilisateur:Lol|Lol]] 1 octobre 2010 à 10:38 (EAT)
[[Catégorie:Serveurs]]

Dernière version du 13 août 2011 à 07:19

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)