Gentooisez votre Debian Le diable est parmis nous !
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, ...).