Créer un dépôt debian trivial
Ce document n'a pas été validé par la communauté. Soyez prudent vis-à-vis de son contenu! Si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le forum
Document réalisé à partir du T&A de Mattotop et de la doc Debian
Créer un différentiel Debian trivial
L'objectif, outre le fait de comprendre comment fonctionne un dépôt (un référentiel)... est de mettre à disposition vos paquets simplement, pour votre réseau ou sur le net...
Introduction
Un dépôt (référentiel) est un ensemble de répertoires et fichiers qui permettent la mise à disposition simple de paquets Debian. Le dépôt est organisé selon une architecture précise, les paquets sont référencés dans des catalogues (fichiers Packages.gz et Sources.gz)
Ainsi, si le référentiel est correctement ajouté dans un fichier sources.list, la commande apt-get récupérera les catalogues. Les paquets du dépôts seront dés lors à disposition pour être installés.
Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, ainsi que les dépendances de chaque paquet (et des informations complémentaires).
Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires)
Si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels.
Installation des dépendances
# apt-get install dpkg-dev
Nous supposons que vous avez un serveur Web installé et opérationnel. Cela vous permettra de naviguer dans votre dépôt (référentiel), à partir de votre lan, et pourquoi pas du net...
Préparation des répertoires
Structure :
(racine du référentiel) | |-binary +-source
$ cd /var/www/ $ sudo su www-data $ mkdir debian $ cd debian/ ~/debian$ mkdir binary ~/debian$ mkdir source
Remplissage du référentiel
Copiez "vos" deb perso dans /var/www/debian/binary, puis :
~/debian$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz ** Paquets dans l'archive mais pas dans le fichier d'override : ** amaya google-chrome-beta googleearth gtkevemon icedove knoppix- customize kopete kopete-silc-plugin libtimedate-perl linux-kbuild- 2.6.36 lmb notalweg nvidia-glx skype unetbootin virtualbox-3.1 16 entrées écrites dans le fichier Packages.
Test sur une machine distante
# nano /etc/apt/sources.list.d/lol.list
# Référentiel perso deb http://lol.isalo.org/debian binary/ #deb-src http://lol.isalo.org/debian source/
# apt-get update
Ça marche...
apt-cache policy linux-kbuild-2.6.36 linux-kbuild-2.6.36: Installé : 2.6.36-rc5~experimental.1 Candidat : 2.6.36-rc5~experimental.1 Table de version : *** 2.6.36-rc5~experimental.1 0 500 http://lol.isalo.org/debian/ binary/ Packages 100 /var/lib/dpkg/status
Fichier preferences
Afin de ne pas être ennuyé avec les préférences, et donner une priorité plus basse à votre dépôt par rapport aux dépôts officiels, vous pouvez créer un fichier release (dans le répertoire /var/www/debian/binary)
$ nano Release Archive: unstable Component: main, contrib, non-free Origin: lol@isalo.org Label: Repertoire de paquets persos Architecture: i386, amd64
Et le fichier /etc/apt/preferences des "clients" :
Package: * Pin: origin lol.isalo.org Pin-Priority: 1
Qui nous donne bien :
$ apt-cache policy 1 http://lol.isalo.org/debian/ binary/ Packages release o=lol@isalo.org,l=Repertoire de paquets persos,c=main, contrib, non-free,b=i386, amd64 origin lol.isalo.org