Modifications entre les versions 2 et 30 (s'étendant sur 28 versions)
Version 2 à la date du 2008-01-15 11:52:09
Taille: 2414
Éditeur: ThomasNoël
Commentaire: reprepro ... essayons, ça à l'air correct
Version 30 à la date du 2011-03-11 03:14:48
Taille: 4766
Commentaire: adél réelle mais masquée
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
Cette page présente un projet de dépôt de paquets Debian/Ubuntu (au moins) accessible aisément via le système de gestion de paquets APT. = Que peut-on proposer ? Qui peut ? =
Ligne 3: Ligne 3:
== Stratégie ==
 * création d'un nom DNS `apt.auf.org` dirigé dans un premier temps vers `apt.vn.auf.org` ''=> fait le 06/09/2007''
 * mise en place d'un dépôt `apt.vn.auf.org` (au BAP, Vietnam) géré par ProgFou '''=> septembre 2007'''
 * test de ce dépôt à l'échelle de l'ensemble des machines du Bureau Asie-Pacifique ''=> octobre 2007''
 * test de ce dépôt à l'échelle de l'ensemble des machines de la région Asie-Pacifique ''=> décembre 2007''
 * déplacement de ce dépôt sur un serveur à Montréal (ou Paris, ou mieux : les deux en miroir rsync) ''=> janvier 2008''
Si vous savez fabriquer des paquets Debian ou Ubuntu, vous pouvez les mettre à disposition sur le dépôt AUF. Pour cela, il faut :
 * savoir faire des paquets Debian corrects : `dh-make`, `debuild`, retro-portages, ...
 * savoir à quelle distribution sont destinés les paquets :
  * Debian lenny ou squeeze
  * Ubuntu lucid, maverick, natty, etc
 * avoir un accès au réseau privé de l'AUF (aucun autre accès spécifique n'est nécessaire, ni mot de passe, ni clé ssh, rien).
Ligne 10: Ligne 10:
== Mise en place ==
 * création d'un serveur virtuel web `apt.vn.auf.org`
 * création de dossiers par distribution (objectifs différents pour Debian et Ubuntu)
 * création de compte utilisateurs avec accès sftp (très peu au début, plus ouvert ensuite)
  * les utilisateurs déposeront leurs paquets via leurs comptes
  * la signature des paquets sera ensuite vérifiée
  * puis les paquets seront transférés vers l'arborescence du dépôt
 * mise en place des clés SSH et GPG des utilisateurs
 * création d'une ''keyring'' (liste de clés) des utilisateurs
 * mise en place d'une technique de mise à jour des infos du dépôt :
  * faire un comparatif entre `apt-ftparchive` (que j'utilise déjà), `debarchiver` et `mini-dinstall`
  * mise en place d'une technique de signature de l'archive via GPG
Tout le monde peut envoyer des paquets selon deux niveaux :
 * '''niveau experimental''' : paquets destinés à expérimenter de nouvelles idées, de nouvelles façons de faire
 * '''niveau test''' : paquets qui demandent à être testés et qui sont des candidats pour devenir des paquets « officiels » de l'AUF.
Ligne 23: Ligne 14:
= apt.auf.org = Une fois qu'un paquet est correctement testé, il est validé : il faut alors demander son inclusion dans le '''niveau stable'''. Il suffit d'envoyer votre demande sur la liste de discussion technique de l'AUF, un des « ftp-masters » se fera un plaisir d'y répondre.
Ligne 25: Ligne 16:
Mise en place en cours par Thomas (et ses faibles connaissances en la matière). = Concrétement =
Ligne 27: Ligne 18:
J'ai renoncé à mini-dinstall et autres solutions bancales pour tenter d'aller vers une gestion "classique" avec repertoire ''pool'' et séparation "composant par composant". Je suis donc allé vers [http://mirrorer.alioth.debian.org/ reprepro] ([http://packages.debian.org/etch/reprepro version etch]) Pour envoyer un paquet, on utilise '''dput''' : `aptitude install dput`.
Ligne 29: Ligne 20:
L'idée est d'avoir au final des sources.list de ce genre là : Voici une configuration typique, à placer dans `$HOME/.dput.cf` :
Ligne 31: Ligne 22:
# les paquets pour mise en place VoIP :
deb http://apt.auf.org/debian etch voip
# les paquets pour mise en place RPV2 :
deb http://apt.auf.org/debian etch rpv2
# les paquets pour un poste client Ubuntu :
deb http://apt.auf.org/ubuntu gutsy auf-desktop
# Exemple de configuration de "dput" pour envoyer des paquets
# pour Ubuntu "Hardy" (8.04) dans les sections "test" et "experimental".
[DEFAULT]
hash = md5
allow_unsigned_uploads = 1
run_dinstall = 0
scp_compress = 1
default_host_main = precisez-la-section
fqdn = apt.auf
method = ftp
login = anonymous

# paquets pour "lucid-tests auf"
[lucid-test]
incoming = test/lucid

# paquets pour "lucid-experimental auf"
[lucid-experimental]
incoming = experimental/lucid
Ligne 39: Ligne 43:
TODO : la gestion des signatures gpg. Je ne sais pas ce qu'il faut faire, a fortiori comment ;) Pour envoyer un paquet en mode experimental il suffit alors de faire :
 {{{
$ dput lucid-experimental le-nom-du-paquet.changes
}}}

Si tout va bien le paquet sera ajouté dans le dépôt 5 minutes plus tard (par cron). Vous pourrez voir le résultat de votre demande en suivant [[http://apt.auf.org/rss.xml|le flux RSS de apt.auf.org]]. Si la version expérimentale fonctionne chez vous, envoyez dans `lucid-test` et demandez à des collègues de tester.


== Annexe : proposer un paquet binaire pour plusieurs architecture (i386 et amd64) ==

Pour proposer un paquet binaires dans plusieurs architectures (typiquement i386 et amd64) :
  * il faut compiler d'abord une architecture classiquement et inclure les sources dans l'upload (donc `dpkg-buildpackage` avec l'option `-sa`)
  * envoyer par `dput` le `...changes`
  * puis compiler la ou les autres architectures avec l'option `-b` qui ne construit ''que'' le paquet binaire...
  * envoyer par `dput` le ou les `...changes` obtenus

= Pour les curieux : comment ça marche à l'intérieur =

{{attachment:reprepro-apt-auf-org.png}}

Le système est basé sur [[http://mirrorer.alioth.debian.org/|reprepro]] ([[http://packages.debian.org/etch/reprepro|version etch]]). C'est ce logiciel qui gère le dépot : on lui dit quel paquet ajouter à quel composant de quelle distribution, et il gère le pool, les fichiers Release, Packages, Sources, etc. A côté, un serveur ''apache2'' propose le dépôt en HTTP.

Le principe : il y a un utilisateur virtuel "reprepro" sur le système, qui gère le dépôts. C'est cet utilisateur qui va lancer le logiciel "reprepro" avec les bons arguments. Il est le seul à avoir accès en écriture sur le dépôt.

 * `/srv/www/apt.auf.org/pool` et `.../dists` : le dépôt lui-même
 * `~reprepro/conf/` : configuration de reprepro, voir `man reprepro` pour explication :
 * `~reprepro/db/` : contient les bases de données internes de reprepro

Un script shell appelé `reprepro-incoming` lance le logiciel reprepro en lui disant d'aller chercher les paquets de tel composant pour telle distribution dans tel répertoire. La liste de ces paramètres est dans `~reprepro/incomings` :
 {{{
# Fichier ~reprepro/incomings

# Format d'une ligne :
# distrib composant repertoire email-pour-rapport

squeeze-test auf /home/ftp/test/squeeze root+aptauf_À_auf.org
squeeze-experimental auf /home/ftp/experimental/squeeze root+aptauf_À_auf.org
}}}

Le script `reprepro-incoming` gère l'envoie de rapport par mail (dernier paramètre de chaque ligne d'appel). Il est lancé par '''cron toutes les 5 minutes'''.

Pour info, le script dans sa version du 11 février 15h TU : [[attachment:reprepro-incoming]]

= Il reste à faire =

 * regarder le [[http://packages.debian.org/etch-backports/reprepro|backport de reprepro]] et notamment son "processincoming"
 * mettre tout le code sur git.auf.org

Que peut-on proposer ? Qui peut ?

Si vous savez fabriquer des paquets Debian ou Ubuntu, vous pouvez les mettre à disposition sur le dépôt AUF. Pour cela, il faut :

  • savoir faire des paquets Debian corrects : dh-make, debuild, retro-portages, ...

  • savoir à quelle distribution sont destinés les paquets :
    • Debian lenny ou squeeze
    • Ubuntu lucid, maverick, natty, etc
  • avoir un accès au réseau privé de l'AUF (aucun autre accès spécifique n'est nécessaire, ni mot de passe, ni clé ssh, rien).

Tout le monde peut envoyer des paquets selon deux niveaux :

  • niveau experimental : paquets destinés à expérimenter de nouvelles idées, de nouvelles façons de faire

  • niveau test : paquets qui demandent à être testés et qui sont des candidats pour devenir des paquets « officiels » de l'AUF.

Une fois qu'un paquet est correctement testé, il est validé : il faut alors demander son inclusion dans le niveau stable. Il suffit d'envoyer votre demande sur la liste de discussion technique de l'AUF, un des « ftp-masters » se fera un plaisir d'y répondre.

Concrétement

Pour envoyer un paquet, on utilise dput : aptitude install dput.

Voici une configuration typique, à placer dans $HOME/.dput.cf :

  • # Exemple de configuration de "dput" pour envoyer des paquets
    # pour Ubuntu "Hardy" (8.04) dans les sections "test" et "experimental".
    [DEFAULT]
    hash                    = md5
    allow_unsigned_uploads  = 1
    run_dinstall            = 0
    scp_compress            = 1
    default_host_main       = precisez-la-section
    fqdn                    = apt.auf
    method                  = ftp
    login                   = anonymous
    
    # paquets pour "lucid-tests auf"
    [lucid-test]
    incoming                = test/lucid
    
    # paquets pour "lucid-experimental auf"
    [lucid-experimental]
    incoming                = experimental/lucid

Pour envoyer un paquet en mode experimental il suffit alors de faire :

  • $ dput lucid-experimental le-nom-du-paquet.changes

Si tout va bien le paquet sera ajouté dans le dépôt 5 minutes plus tard (par cron). Vous pourrez voir le résultat de votre demande en suivant le flux RSS de apt.auf.org. Si la version expérimentale fonctionne chez vous, envoyez dans lucid-test et demandez à des collègues de tester.

Annexe : proposer un paquet binaire pour plusieurs architecture (i386 et amd64)

Pour proposer un paquet binaires dans plusieurs architectures (typiquement i386 et amd64) :

  • il faut compiler d'abord une architecture classiquement et inclure les sources dans l'upload (donc dpkg-buildpackage avec l'option -sa)

  • envoyer par dput le ...changes

  • puis compiler la ou les autres architectures avec l'option -b qui ne construit que le paquet binaire...

  • envoyer par dput le ou les ...changes obtenus

Pour les curieux : comment ça marche à l'intérieur

reprepro-apt-auf-org.png

Le système est basé sur reprepro (version etch). C'est ce logiciel qui gère le dépot : on lui dit quel paquet ajouter à quel composant de quelle distribution, et il gère le pool, les fichiers Release, Packages, Sources, etc. A côté, un serveur apache2 propose le dépôt en HTTP.

Le principe : il y a un utilisateur virtuel "reprepro" sur le système, qui gère le dépôts. C'est cet utilisateur qui va lancer le logiciel "reprepro" avec les bons arguments. Il est le seul à avoir accès en écriture sur le dépôt.

  • /srv/www/apt.auf.org/pool et .../dists : le dépôt lui-même

  • ~reprepro/conf/ : configuration de reprepro, voir man reprepro pour explication :

  • ~reprepro/db/ : contient les bases de données internes de reprepro

Un script shell appelé reprepro-incoming lance le logiciel reprepro en lui disant d'aller chercher les paquets de tel composant pour telle distribution dans tel répertoire. La liste de ces paramètres est dans ~reprepro/incomings :

  • # Fichier ~reprepro/incomings
    
    # Format d'une ligne :
    # distrib composant repertoire email-pour-rapport
    
    squeeze-test           auf     /home/ftp/test/squeeze              root+aptauf_À_auf.org
    squeeze-experimental   auf     /home/ftp/experimental/squeeze      root+aptauf_À_auf.org

Le script reprepro-incoming gère l'envoie de rapport par mail (dernier paramètre de chaque ligne d'appel). Il est lancé par cron toutes les 5 minutes.

Pour info, le script dans sa version du 11 février 15h TU : reprepro-incoming

Il reste à faire

  • regarder le backport de reprepro et notamment son "processincoming"

  • mettre tout le code sur git.auf.org

DépôtAPT/EnvoyerSesPaquets (dernière édition le 2011-03-11 03:14:48 par JeanChristopheAndré)