Sleeper must be awaken

mercredi 30 avril 2008

Création de repository debian

Dans le billet précédent nous avons vu comment créer un paquet debian. Nous allons maintenant voir comment le placer dans repository de votre conception. Votre programme sera donc accessible en tant que ressource web, et via apt-get; l'installation n'en sera que plus simplifiée pour les utilisateurs de votre programme.

Attention : dans ce billet nous ne détaillerons pas comment installer un serveur web. Nous partons du principe que vous en avez déjà un pré-configuré, ou que vous utilisez un hébergeur pour accueillir vos fichiers.

Étape 1 - Préparation

Commençons d'abord par créer une arborescence correcte pour notre repository :

$>mkdir repository
$>mkdir -p repository/dists/unstable/main/binary-i386
$>mkdir -p repository/dists/unstable/main/sources

Ceci étant copions les fichiers que nous avions préparés :

$>cp helloworld_1.0-1.dsc repository/dists/unstable/main/binary-i386
$>cp helloworld_1.0-1_all.deb repository/dists/unstable/main/binary-i386
$>cp helloworld_1.0-1.diff.gz repository/dists/unstable/main/source
$>cp helloworld_1.0-1.dsc repository/dists/unstable/main/source
$>cp helloworld_1.0.orig.tar.gz repository/dists/unstable/main/source

Etape 2 - Création du repository

$>cd repository/dists/unstable/main
$>dpkg-scanpackages binary-i386 /dev/null dists/unstable/main/ | gzip -f9 > binary-i386/Packages.gz
$>dpkg-scansources source /dev/null dists/unstable/main/ | gzip -f9 > source/Sources.gz

Il faut maintenant créer deux fichiers qui serviront à décrire nos repository :

binary-i386/Release

Archive : unstable
Version : 1
Component : main
Origin : Test
Label : helloworld
Architecture : i386

source/Release:

Archive : unstable
Version : 1
Component : main
Origin : Test
Label : helloworld
Architecture : source

Étape 3 - Dépôts des fichiers

Vos fichiers et votre arborescence sont maintenant créés. Il ne reste plus qu'à les mettre sur votre hébergeur ou sur votre serveur personnel l'arborscence créée.
Vous devez donc copiez toute l'arborescence repository sur votre serveur.

http://www.votresite.fr/repository/dists/unstable/main/binary-i386
http://www.votresite.fr/repository/dists/unstable/main/source

Etape 4 - Utilisation du repository

Modifier maintenant le fichier /etc/apt/sources.list et rajoutez ces deux lignes avant de pouvoir utilisez votre commande apt-get.

deb http://www.votresite.fr/repository unstable main
deb-src http://www.votresite.fr/repository unstable main

Maintenant vous pouvez tranquillement utiliser le fameux : apt-get install helloworld

mardi 29 avril 2008

Fabrication d'un paquet debian .deb

Suite à de nombreuses recherches en anglais et bien souvent assez hard, je me suis dis qu'expliquer mes nombreuses heures de déboires pourraient en aider plus d'un.

Les paquets utiles

  • dpkg-dev
  • gcc
  • make
  • patch
  • perl
  • dh-make et debhelper
  • autoconf et automake
  • fakeroot
  • gnupg

Voila normalement si vous utilisez correctement apt-get vous devriez avoir une belle config a ce stade, donc on peut démarrer le plus marrant : la création du paquet.

Préambule

Dans un soucis de compréhension, mettons que nous avons de base l'architecture ci-contre :
-helloword-1.0/
+-- helloworld.c
+-- Makefile

Nous passerons sur le codage d'un helloworld, et voyons plutôt le Makefile :
DESTDIR=
BINDIR=/usr/bin
all: oldboy 

oldboy : helloworld.c
  gcc helloworld.c -o helloworld

clean:
  rm -f helloword

install:
  install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
  install -m 0755 -o root -g root helloworld $(DESTDIR)/$(BINDIR)

Le répertoire d'installation doit être DESTDIR

Étape 1 - Compression

On crée un tar.gz du programme. La forme du nom est extrêmement importante

Makefile helloworld.c
$>tgz helloworld_1.0.orig.tar.gz helloworld-1.0/
Writing gzip'd tar archive to "helloworld_1.0.orig.tar.gz".
...

Étape 2 - Création

On crée un squelette de paquet avec dh_make.

$>cd helloworld-1.0/
$>dh_make
ldap_sasl_interactive_bind_s: No such attribute (16)
Type of package: single binary, multiple binary, library, kernel
module or cdbs?
[s/m/l/k/b] s
Maintainer name : OLD boy
Email-Address : oldboy@fai.fr
Date : Wed, 7 Nov 2007 15:51:18 +0100
Package Name : helloworld
Version : 1.0
License : blank
Type of Package : Single
Hit  to confirm:

A ce stade vous vous apercevez que dh_make a crée pour vous tout un tas de fichiers dans un répertoire nommé debian. La moitié de ces fichiers sont des exemples ".ex" donc vous pouvez allègrement les détruire. Le même sort peut être appliqué au fichier dirs, docs et README.debian

Étape 3 - Édition

Nous allons maintenant pouvoir éditer les fichiers importants.

control

Source: helloworld
Section: misc
Priority: optional
Maintainer: OLD boy 
Build-Depends: debhelper (>= 5)
Standards-Version: 3.7.2
Package: helloworld
Architecture: all
Depends:
Description: program that displays hello world.

copyright

This package was debianized by OLD boy 
 on Thu, 30 Apr 2008 14:12:07 +0100.
Upstream Author: OLD boy 
Copyright: 2007 OLD boy
License: public domain
The Debian packaging is (C) 2007, OLD boy  and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.

changelog

helloworld (1.0-1) unstable; urgency=low
* Initial release.
-- OLD boy  Thu, 30 Apr 2008 14:12:07 +0100

Étape 4 - Construction

Bien nous allons maintenant pouvoir passer à la dernière étape qui consiste en la construction de notre paquet .deb.
Pour se faire nous allons nous placer dans helloworld-1.0 et utiliser dpkg comme suit :

$>cd helloworld-1.0
$>dpkg-buildpackage -rfakeroot

Laissez le gentiment travaillez ca ne devrait pas être long du tout. Une fois terminé vous pourrez alors admirer le travail. :)

$>ls .. -l
total 32
drwxr-xr-x 3 oldboy oldboy 4096 2007-11-07 16:06 helloworld-1.0
-rw-r--r-- 1 oldboy oldboy 2856 2007-11-07 16:06 helloworld_1.0-1_all.deb
-rw-r--r-- 1 oldboy oldboy 1392 2007-11-07 16:06 helloworld_1.0-1.diff.gz
-rw-r--r-- 1 oldboy oldboy 329 2007-11-07 16:06 helloworld_1.0-1.dsc
-rw-r--r-- 1 oldboy oldboy 733 2007-11-07 16:06 helloworld_1.0-1_i386.changes
-rw-r--r-- 1 oldboy oldboy 526 2007-11-07 15:49 helloworld_1.0.orig.tar.gz
Et voilà le travail !

Informations supplémentaires

Vous pouvez toujours voir la référence debian en la matière pour plus amples informations notamment concernant les options du fichier control : Guide du nouveau responsable Debian

Bienvenue

Ceci est donc mon blog personnel. Je vous souhaite donc la bienvenue et espère que ce que je met dessus servira à d'autres.

Ce blog illustre mes premiers pas dans le monde des CMS au travers de DotClear. Je profite de cette technologie pour archiver mon expérience de développeur, au travers de minis HOWTOS et Tutoriaux sur le monde de l'informatique et de la programmation. Il se peut également que vienne s'ajouter à cela des articles plus personnels sur des jeux videos, des groupes musicaux ou encore des endroits que j'aime.