You are on page 1of 7

Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

Utilisateur:Sbrunner/Création de paquets Debian


Le but de cet article est d'aller plus loin dans les possibilités fournies par Debian pour une bonne gestion des
paquets. La distribution utilisée est Ubuntu d'où l'utilisation de sudo.

Sommaire
1 Prérequis
2 Miroir
3 Création de fichier .deb
3.1 Compilation depuis deb-src
3.2 Création officielle
3.3 Mise à jour d'un paquet existant
3.4 Depuis les sources
3.4.1 Préparation du système
3.4.2 Création du paquet
3.5 Conversion d'un .rpm
4 Création d'un "Dummy Package"
4.1 Création d'un paquet depuis un binaire
4.2 Autre
4.2.1 Java-sun
4.2.1.1 Installation du system
4.2.1.2 Création du paquet
5 PBuilder
6 Création de dépôt
6.1 Pour une création toute simple

Prérequis
Avant de commencer il faut déjà être familier avec :

Le gestionnaire de paquets Synaptic (http://doc.ubuntu-fr.org/synaptic/)


Introduction au système de dépôts (http://doc.ubuntu-fr.org/depots/)
APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/index.fr.html)
Comment traiter les erreurs ? (http://www.debian.org/doc/manuals/apt-howto/ch-erros.fr.html)

Miroir
Si on a plusieurs ordinateurs sur le même réseau il est conseillé, pour économiser du temps et de la bande
passante, de mettre en place un miroir ou un cache.

Un miroir est une copie intégrale d'un dépôt.

Un cache (apt-cacher) garde une copie de chaque paquet téléchargé pour ne pas le télécharger plusieurs fois.

1 sur 7 20/10/2010 15:14


Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

Je vous conseille de voir l'article d'Andesi : Mise en place d'un miroir de paquets (http://www.andesi.org
/index.php?node=27) .

Création de fichier .deb


La gestion des paquets de Debian est géniale (un des avantages : pouvoir désinstaller le paquet avec un
simple sudo apt-get remove paquet), mais il se peut que l'on ait besoin d'un programme qui n'existe pas
encore en .deb (ou pas adapté a Ubuntu).

Remarque : bien que je ne ne l'aie pas fait des dizaines de fois, ce sont des méthodes que j'ai au moins testées
une fois.

Compilation depuis deb-src

Il se peut que le paquet existe uniquement en format source comme c’est le cas pour Debian Mentor par
exemple (http://mentors.debian.net/).

Pour cela il faut simplement ajouter le dépôt deb-src.

Installer les paquets nécessaires pour la compilation (il est possible que ce paquet dépende d'un paquet
disponible uniquement en source, il faut donc le télécharger, le compiler et l'installer avant).

sudo apt-get build-dep paquet

Il se peut que le paquet dépende d'un autre qui est disponible uniquement en source, il faut donc le compiler
en premier !

Télécharger les sources et les compiler (attention, des sources sont téléchargées et le fichier .deb est créé
dans le répertoire courant). Remarque : le fakeroot n'est pas toujours nécessaire.

fakeroot apt-get -b source package

ou

apt-get source package


cd package-version
dpkg-buildpackage -rfakeroot -us -uc

Il ne reste plus qu'à l'installer

sudo dpkg -i paquet.deb

Création officielle

Voici la documentation de Debian : Guide du nouveau responsable Debian (http://www.debian.org


/doc/manuals/maint-guide/index.fr.html) .

Lightbulb Howto make debian standards debs from scratch (http://ubuntuforums.org


/showthread.php?t=51003&page=1&pp=10) - How to make a Debian package without using a helper

2 sur 7 20/10/2010 15:14


Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

(http://women.alioth.debian.org/wiki/index.php/English/BuildingWithoutHelper)

Mise à jour d'un paquet existant

Installer le paquet nécessaire pour la compilation

sudo apt-get build-dep paquet

Télécharger les sources sans les compiler (attention des sources sont téléchargées dans le répertoire courant)

apt-get source package

Renommer le répertoire paquet-ancienneversion en paquet-nouvelleversion

Décompresser les nouvelles sources dans le répertoire renommé lors de l'opération précédente (sans le
répertoire principal généralement présent).

Modifier le fichier debian/changelog en ajoutant un bloc, attention la syntaxe est importante (création de la
date : 822-date). Vous pouvez aussi utiliser la commande dch (dch -v numéro de version).

Compiler en exécutant depuis ce même répertoire (paquet-version) :

dpkg-buildpackage -rfakeroot

Installer le nouveau paquet

dpkg -i ../paquet_version_architecture.deb

Depuis les sources

Préparation du système

Installation des paquets nécessaires

sudo apt-get install auto-apt checkinstall build-essential

Mise à jour des données

sudo auto-apt update


sudo auto-apt updatedb
sudo auto-apt update-local

Création du paquet

Installation des paquets nécessaires à la compilation

auto-apt -xy run ./configure

3 sur 7 20/10/2010 15:14


Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

Compilation

./configure
make

Installation et création du fichier .deb

sudo checkinstall -y

Changement des droits ;-)

sudo chown user:groupe paquet.deb

Conversion d'un .rpm

Installer alien

sudo apt-get install alien

Conversion du paquet

alien --to-deb paquet.rpm

Création d'un "Dummy Package"


Repris de l'article Install a dummy package to satisfy dependencies on debian (http://www.wickle.com
/wiki/index.php/Install_a_dummy_package_to_satisfy_dependencies_on_debian)

Dans mon cas je voulais installer un paquet dépendant de kernel-image-... et sous Ubuntu le kernel s'appelle
linux image j'ai donc créé un paquet "dummy" pour résoudre ce problème.

Commençons par installer equivs

$ sudo apt-get install equivs

Puis créons une description du paquet : kernel.ctl

Section: base
Package: kernel-image-2.6.12-10-686-dummy
Depends: linux-image-2.6.12-10-686
Provides: kernel-image-2.6.12-10-686
Description: kernel-image-2.6.12-10-686 dummy package

Création du paquet :

$ equivs-build kernel.ctl

4 sur 7 20/10/2010 15:14


Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

dh_testdir
touch build-stamp
dh_testdir
dh_testroot
dh_clean -k
dh_clean: Compatibility levels before 3 are deprecated.
# Add here commands to install the package into debian/tmp.
touch install-stamp
dh_testdir
dh_testroot
dh_installdocs
dh_installdocs: Compatibility levels before 3 are deprecated.
dh_installchangelogs
dh_installchangelogs: Compatibility levels before 3 are deprecated.
dh_compress
dh_compress: Compatibility levels before 3 are deprecated.
dh_fixperms
dh_fixperms: Compatibility levels before 3 are deprecated.
dh_installdeb
dh_installdeb: Compatibility levels before 3 are deprecated.
dh_gencontrol
dh_gencontrol: Compatibility levels before 3 are deprecated.
dh_md5sums
dh_md5sums: Compatibility levels before 3 are deprecated.
dh_builddeb
dh_builddeb: Compatibility levels before 3 are deprecated.
dpkg-deb : construction du paquet « kernel-image-2.6.12-10-686-dummy » dans « ../kernel-image-2.6.12-10-686-dum

The package has been created.


Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!

Maintenant installons le paquet :

$ sudo dpkg -i kernel-image-2.6.12-10-686-dummy_1.0_all.deb

Plus d'information sur http://www.us.debian.org/doc/manuals/apt-howto/ch-helpers.en.html#s-equivs/

Création d'un paquet depuis un binaire

Préparation du système

sudo apt-get install checkinstall

Installation du programme avec création du paquet

sudo checkinstall -y --pkgname=paquet --pkgversion=version /path/installer

Exemple

sudo checkinstall -y --pkgname=et --pkgversion=2.6 /home/sbrunner/Games/et-linux-2.60.x86.run

Remarque : Normalement on n'est pas obligé de spécifier le nom du paquet et le N° de version, mais pour
cela il faut que l'installer se trouve dans un répertoire nommé

/.../paquet-version/

si se n'est pas le cas checkinstall, ne pouvant trouver le nom de paquet ou le N° de version, ne crée pas de
fichier .deb.

5 sur 7 20/10/2010 15:14


Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

Autre

Java-sun

Pour créer un paquet des JDK et des JRE de Sun il existe une méthode simple.

Installation du system

sudo apt-get update


sudo apt-get install java-package java-common fakeroot

Création du paquet

Télécharger le fichier d'installation depuis java.sun.com

Création du paquet

fakeroot make-jpkg installer.bin

Installation

sudo dpkg -i paquet.deb

Configuration de la machine virtuelle par défaut

sudo update-alternatives --config java

PBuilder
Créer les environnements pour Ubuntu et Debian :

pbuilder-dist sid create


pbuilder-dist hardy create

Mise à jours

pbuilder-dist sid update


pbuilder-dist hardy update

Build

pbuilder-dist sid build fichier.sdc


pbuilder-dist hardy build fichier.sdc

Création de dépôt

6 sur 7 20/10/2010 15:14


Utilisateur:Sbrunner/Création de paquets Debian - Wikipédia http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Création_de_paquets...

Pour une création traditionnelle d'un dépôt je vous conseille l'article de Debian Addict : Créer un dépôt
Debian (http://www.debianaddict.org/article31.html)

Pour une création toute simple

Copier les fichier .deb dans un répertoire, pour l'exemple ./binary.

Créer le dépôt avec la commande :

cd binary
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Ajouter le dépôt dans votre source.list :

deb http://server/sous-repertoire/binary ./

Ce document provient de « http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Cr%C3


%A9ation_de_paquets_Debian ».

Dernière modification de cette page le 5 mars 2010 à 13:31.


Droit d'auteur : les textes sont disponibles sous licence Creative Commons paternité partage à l’identique ;
d’autres conditions peuvent s’appliquer. Voyez les conditions d’utilisation pour plus de détails, ainsi que les
crédits graphiques.
Wikipedia® est une marque déposée de la Wikimedia Foundation, Inc., organisation de bienfaisance régie
par le paragraphe 501(c)(3) du code fiscal des États-Unis.

Politique de confidentialité
À propos de Wikipédia
Avertissements

7 sur 7 20/10/2010 15:14

You might also like