Gentooisez votre Debian Le diable est parmis nous !

, par MiKaël Navarro

Recompiler un package Debian

 Récupérer les sources, soit avec apt-get source <nom> ou alors directement en téléchargeant les fichiers sources (<nom>.tar.gz, <nom>.dsc et éventuellement <nom>.diff.gz) depuis le mirroir Debian.
Dans ce dernier cas décompresser les sources avec dpkg-source -x <nom>.dsc

 Recompiler les sources, dans le répertoire d’extraction :
dpkg-buildpackage -rfakeroot -uc -ub
ou bien encore fakeroot debian/rules binary

Et pour l’intégrer à un script ./configure il suffit de placer dans la variable d’environnement DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary depuis le répertoire source.

Y’a aussi apt-get source -b <nom> qui fait tout tout seul, y’a plus qu’a installer le paquet construit.

Automatisation

Une autre solution est d’installer apt-build
qui est configurable dans le fichier /etc/apt/apt-build.conf :

build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O3
march = -march=athlon-xp
mcpu = -mcpu=athlon-xp
options = "-pipe -fomit-frame-pointer
                 -mmmx -msse -m3dnow
                 -mfpmath=sse,387
                 -fforce-addr -fsunroll-loops
                 -falign-functions=32
                 -maccumulate-outgoing-args
                 -ffast-math -fprefetch-loop-arrays
                 -fPIC"
make_options = "-j"
...

Puis il faut déclarer les dépots src dans le fichier /etc/apt/source.list :

deb-src ftp://mirror-deb/ [stable|testing] main contrib
...

Les commandes dispo. (en tant que root ou assimilé via sudo) sont :

 apt-build update|upgrade

 apt-build install package
téléchargera les sources nécessaires, les compilera et les installera.

 apt-build source package
téléchargera les sources, le fichier diff, le répertoire debian/... dans le dossier build ; puis décompactera les sources, appliquera le diff.

On peut maintenant modifier le package, puis on utilisera l’action install sur le package modifié.

 apt-build clean-build | remove | info

 apt-build world
recompilera tout.
Mais auparavant il faut créer la liste des packages que l’on souhaire recompiler :

  • dpkg --get-selections | awk '{if ($2=="install") print $1}' > /etc/apt/apt-build.list
  • enlever les packages trops sensibles de la liste (ex. gcc, libc6, ...).

P.-S.

Cf. les paquets hello(-dbs)_*.deb pour des exemples de packaging Debian.