Depuis quelque temps je me suis lancé dans la création de paquets pur certains programmes afin de pouvoir partager certaines de mes découvertes parmis les innombrables Logiciels libres qui existent sur le net.
Au départ les paquets etaient sur un serveur ftp tout simplement afin que chacun puissent les télécharger. Mais voila, une nouvelle fois, la curiosité m’a poussé à trouver un moyen de créer un dépot que chacun pourra rajouter à son sources.list.
Voici la méthode que j’ai utilisée pour y arriver.
Créer l’arborescence
Si vous disposez d’un serveur ftp accessible sur le web, la racine de ce serveur est /ftp-perso/ et que vous souhaitez avoir un dépot qui se nomme breezy-perso, il vous faut donc créer les répertoires suivants:
/ftp-perso/ubuntu/dists/breezy-perso/main/binary-i386
/ftp-perso/ubuntu/dists/breezy-perso/main/sources
Copier les paquets
Il faut transferer les paquets source et les paquets binaires dans leurs répertoires respectifs.
- les binaires : programme_version_architecture.deb vont dans /ftp-perso/ubuntu/dists/breezy-perso/main/binary-i386
- les sources : programme_version_architecture.diff.gz, programme_version_architecture.dsc et programme_version.tar.gz vont dans /ftp-perso/ubuntu/dists/breezy-perso/main/sources
Générer les fichiers du dépôt
Le dépôt nécessite deux fichiers qui se nomment Packages.gz et Sources.gz. Ils contiennent des informations sur les paquets disponibles sur le dépôt et sont téléchargé par le client lors de l’exécution de la commande apt-get update Pour les générer il va falloir vous placer dans /ftp-perso/ et télécharger votre répertoire ubuntu. Une fois sur votre disque ouvrez un terminal dans /ubuntu/dist/breezy-perso/main/ et faite un simple:
dpkg-scanpackages binary-i386 /dev/null dists/breezy-perso/main/ | gzip -f9 > binary-i386/Packages.gz dpkg-scansources source /dev/null dists/breezy-perso/main/ | gzip -f9 > source/Sources.gz
Il vous suffit ensuite de transférer les fichiers Packages.gz et Sources.gz sur votre serveur ftp dans leurs repertoires respectifs.
Mettre à jour le serveur
A chaque mise à jour d’un paquet pensez à recréer les fichiers Packages.gz et Sources.gz afin que les utilisateurs du dépot puissent en profiter.
Utiliser le serveur
Pour l’utiliser il suffit de rajouter à son sources.list les lignes suivantes:
deb http://votre-serveur-web/ubuntu breezy-perso main
deb-src http://votre-serveur-web/ubuntu breezy-perso main
Bon courage à ceux qui se lance dans l’aventure comme moi…
12 réponses sur « Créer un dépot Ubuntu »
Je n’ai encore jamais créé de package mais ce sujet m’intéresse et j’imagine que cela me servira certainement un jour. À lire ton article, la création du dépôt a l’air assez simple. Je constate juste que la création des fichiers Packages.gz et Sources.gz a l’air assez lourde, à mon avis il doit y avoir moyen de gèrer tout cela assez facilement à l’aide d’un makefile. Je ne m’y connais pas encore vraiment en la matière mais d’autres l’ont certainement déjà fait, non ?
Au fait c’est bien beau de pouvoir créer un dépôt mais n’aurais-tu pas quelques bons liens pour créer des packages de manière simple ? Je sais, google, mais bon je risque de tomber sur pas mal de trucs compliqués avant de trouver la perle rare…
Et sinon sais-tu s’il y a un moyen simple de créer un mirroir de dépôt (pour plusieurs dépôts à la fois idéalement) ? Personnellement j’aimerais avoir un petit mirroir sur mon réseau local ce qui m’éviterait d’avoir à télécharger plusieurs fois les mises à jour (une fois par ordi). Dans un rêve d’ultime perfection, le dépôt ne serait en fait qu’une mise en cache (partielle) des package: seuls les packages nécessaires s’y trouveraient. En fait je pense que ça ne doit pas être très difficile à réaliser (du moins pour un seul dépôt), si ça existe pas déjà je pense être capable de faire ça en php 🙂
Créer son propre dépot c’est bien, mais multiplier les dépots et avoir un sources.list de 40 lignes c’est moins bien. Alors pourquoi ne pas expliquer aussi comment ajouter son paquet dans un dépot déjà existant ? Je prends l’exemple des dépots officiels Ubuntu, lorsque tu y mets un paquet, il est automatiquement mirroré, automatiquement disponible pour tous les ubunteros.
Bref, je trouve qu’un billet sur l’ajout d’un paquet à un dépot serait bien complémentaire de celui-ci, non ?
Pour LordFarquaad, ce que tu souhaites c’est un proxy, il faudrait que tu regardes comment mettre en place un proxy sur ton réseau local (par exemple : squid).
Je suis d’accord avec le commentaire ci-dessus.
De plus, les repos persos ont l’inconvénient de multiplier les mauvais packets en circulation sur le net.
En effet, comment s’assurer de la cohérence des dépendances pour les updates ? Comment être certain qu’on a pas fait d’erreur ?
Faire sponsoriser son packet et via REVU (qui est l’interface permettant de faire rentrer des packets dans Universe) permet d’améliorer la qualité de celui-ci, de corriger les erreurs, car ils sont validés par 3 MOTU avant de pouvoir intégrer Universe.
Bref, ça permet une meilleure qualité de packets, ça permet au packageur d’apprendre énormément (parceque les "checkinstall built packages", c’est vraiment du gachis…), et enfin, ça profite a tous, et pas a son petit cercle de connaissances….
Qualité et universalité, ce sont bien des valeurs du libre non ?
Tout d’abord merci à tous pour avoir pris le temps de lire ce billet et surtout d’y avoir réagi, je suis content que ce blog soit à la base de discussion entre passionné.
à LordFarquaad: une simple recherche sur le blog t’aurait mener vers ce billet construire son .deb… et en ce qui concerne l’automatisation de la tache est plus simple lorsque le serveur ftp est le tiens puisque qu’il te suffit d’ouvrir ton terminal dans ton serveur ftp et de générer les fichier directement.
à Ploc et Tonio: effectivement il serait plus simple de pouvoir les intégrer dans les dépots officiels mais pour cela il faut avoir un peu plus d’expérience et de maitrise de l’empaquetage afin de proposer des paquets qui seront officialisés. Pour le moment ma connaissance ne me permet de prétendre à un tel statut, chaque chose en son temps un jour peut être ??? je suis preneur de tout conseil lien accompagnement dans cette voie car cela m’intéresse particuliérement.
à Tonio: tu as l’air de t’y connaitre, souhaites tu me montrer la voie ?
Ce dépot n’a pas pour ambition de devenir un dépot indispensable mais simplement de partagé des paquets dont j’ai eu besoin et que j’ai réalisé.
et y’a aussi EasyDépot trouvable sur le dépot
deb blognux.free.fr/debian unstable main
ou directement là:
blognux.free.fr/debian/di…
Je me ferai un plaisir de t’aider et de te mettre le pied, bien évidemment 😉
Si ça peut te rassurer, je n’y connaissais RIEN quand j’ai uploadé mon premier packet sur REVU, et je peux t’assurer que c’est et de très loin la meilleure manière d’apprendre.
Tu pourras me trouver sur le channel #ubuntu-motu ou #kubuntu-dev sur freenode.
Si tu ne peux me contacter par IRC, je t’invite à m’envoyer un mail : tonio (at) ubuntu.com
Ouah, une adresse ubuntu.com !!! Ça en jette dis donc !
Tous les "ubuntu-members" une adresse en ubuntu.com 🙂
Et c’est pas compliqué de le devenir, il suffit d’une contribution "officielle" efficace (pas la peine d’en faire des tonnes ou de coder 20 heures par jour quoi ^^)
Je voulais remercier Freetux d’être passé signaler sur framasoft son petit guide. Pour ma part, j’ai une question complémentaire : comment je peux générer les 2 fichiers package.gz et source.gz sachant que mon serveur ftp est mutualisé et que je ne peux pas lancer de commande terminal dessus ?
Merci par avance. Toine
j’ai exactement le meme probleme et c’est pour cela que je conseille de télécharger le repertoire ubuntu qui contient /dist/breezy-perso/main/ afin d’avoir sur son ordi l’archtecture suivante /ubuntu/dist/breezy-perso/main/ et ainsi pouvoir lancer les commandes adéquates pour obtenir les fichiers qu’il suffira pour finir d’uploader sur ton serveur ftp.
Donc, il faut créer un répertoir /ubuntu/ à la racine du système de fichier, c’est ça ?
Le repertoire ubuntu peut se trouver dans ton home ou sur ton bureau le principal est d’avoir l’architecture suivante /ubuntu/dist/breezy-perso/main/