Créer un dépôt debian trivial

De Le Wiki de debian-fr.xyz
Aller à : navigation, rechercher

Attention! 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