Quoi ?! t'as pas envie de mettre plein de sets sur ta pauvre CF card pour ne pas ruineZ ton portezorros et pourtant t'aimerais bien garder tes multiples puffy-boxes à jours sans galères ?

Bon, ben binpatch, c'est fait pour toi : http://openbsdbinpatch.sourceforge.net/

Si t'es trop flemmard pour lire, file donc à la section 'Megaflemme'.

Les premiers pas

Pour commencer, il te faut une machine sur laquelle tu vas pouvoir builder tes jolis patches binaires, donc oui, une babasse OpenBSD de la release cible à maintenir, et avec de quoi compiler les choses du Bien…

Ensuites, tu télécharges la purée (binpatch) et la décompresse dans une zolie partoche plein de place (prévoir laaarge : au moins 2 à 2,5 Go de libres, si! si!). Disons /opt/binpatch/ pour faire simple.

Puis, tu y vas de ton petit patch roulé sous les aisselles en ajoutant la cible suivante dans ton /opt/binpatch/bsd.binpatch.mk tout nouveau tout beau :

_includes=${MAKE_ENV} make includes 

dans la section 'shortcuts'

Puis enfin, tu te sors les doigts te vimifies bien vite un zoli Makefile tout propre avec, par exemple pour 4.0, ces convi choses dedans (vi /opt/binpatch/Makefile) :

# Mon Makefile qui va bien pour la 4.0 sur i386
# (C) moi même en français dans le texte
#
# List of patches for all architectures
PATCH_COMMON=001_httpd 002_openssl 003_systrace 004_arc 005_ldso 008_icmp6 009_timezone
# List of patches for i386 only
PATCH_I386=007_agp
# Faut garder cela...
bin:
cd ${WRKSRC}/bin && (${_obj}; ${_cleandir}; ${_depend} && ${_build})

sbin:
cd ${WRKSRC}/sbin && (${_obj}; ${_cleandir}; ${_depend} && ${_build})

libc:
cd ${WRKSRC}/lib/libc && \
(${_obj}; ${_cleandir}; ${_depend} && ${_build})
# et comment les faire les zolis binpatchs ?
009_timezone:
cd ${WRKSRC}/share/zoneinfo && \
(${_obj}; ${_build})

008_icmp6: _kernel

007_agp: _kernel

005_ldso:
cd ${WRKSRC}/libexec/ld.so && \
(${_obj}; ${_cleandir}; ${_depend}; ${_build})

004_arc: _kernel

003_systrace: _kernel

002_openssl:
cd ${WRKSRC}/lib/libssl && \
(${_obj}; ${_depend}; ${_includes}; ${_build})

001_httpd:
cd ${WRKSRC}/usr.sbin/httpd && \
(${_obj_wrp}; ${_cleandir_wrp}; ${_depend_wrp}; ${_build_wrp})

.include "bsd.binpatch.mk"

(le lecteur curieux se doutera qu'à l'époque de la rédaction du présent article, j'en était au 009 sur la 4.0…)

Puis, let's rock ma poule : tu suis le README et met à sa bonne place les petites choses qui manquaient :

mkdir /opt/binpatch/distfiles
mkdir /opt/binpatch/distfiles/i386
cd /opt/binpatch/distfiles/
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/src.tar.gz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/sys.tar.gz
cd /opt/binpatch/distfiles/i386/
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/bsd
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/bsd.rd
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/base40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/etc40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/comp40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/misc40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/game40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/man40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/xbase40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/xetc40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/xfont40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/xshare40.tgz
wget ftp://spargel.kd85.com/pub/OpenBSD/4.0/i386/xserv40.tgz

Puis maintenant, tu prépares le terrain:

make init
make extract

Et te voila tout prêt à aller chercher un café bien chaud pendant que tu vas rouler tes premiers patches.

Les premiers patchs

Genre, pour builder le patch binaire relatif à l'errata 001 :

make PATCH="001" patch
make PATCH="001" build
make PATCH="001" plist
make PATCH="001" package

Et hop, te voila avec /opt/binpatch/packages/binpatch-4.0-i386-001.tgz tout propre prêt à être répendu sur tes petites boites sans compilos à grand coup de tar xzpf binpatch-4.0-i386-001.tgz -C / (biensur en tant que root).

Encore plus fainéant que le Grand Fainéant

Bon, toussa c'est bien, mais si t'y rajoutes les deux scripts patch_add et patch_info que tu trouveras chez zombix (http://www.zombix.org/?page_id=90 ) et ben t'auras presque un beau système convi à entretenir (allez, te reste plus qu'à ftpiser les binpatch avant de les detarrer sur le système et t'as un zoli système flambi pour ton armada de puffyboxes :)

Et même plus corpo que le Grand Corpo, tant que t'y es

Bah, et ca te vas toujours pas ? ben files donc utiliser gzsig pour signer tes patches, et les diffuser sur ton réseau préféré pour y gagner moults zorros si tu sais dessiner le zoli paquet cadeau autour, et t'as gagné la médaille du “corpo qui gagne des zorros sans se sortir trop les doigts du bas du dos” (TM)

Megaflemme ?

Bon, ca et saoule et tu veux simplement rapidement faire le job (builder ses binpatchs et/ou rapidement patcher une poignée de box) ? J'ai mis ce que j'utilise moi-même là bas : http://haven.senso-rezo.org/OpenBSD/binpatch/

A vous les studios.

openbsd/binary_patching_pour_openbsd.txt · Last modified: 2010/01/12 13:29 (external edit)