= 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 [[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