pkgin 0.5, faster pussycat kill kill

Tags: ,
No Comments »

Avant de partir me dorer la pilule à la maison, je vous jette en pâture une toute nouvelle pre-release de pkgin, j’ai nommé 0.5.0.

Fruit des conseils avisés du sieur Bapt, fort de son experience avec son fâmeux pkgng, ainsi que des multiples feedbacks d’horizons très differents, le code de pkgin 0.5.0 est plus rapide, plus simple et embarque un certain nombre de features requests.

Dans l’ordre d’implémentation:

  • Migration silencieuse d’une base 0.4 vers 0.5
  • Fonction check_yesno() plus souple
  • “Yes” par defaut pour pkgin install / remove / upgrade
  • Une unique structure pour toutes les formes de listes de packages
  • Nettoyage de dizaines de calculs de listes inutiles (perfs x10)
  • Introduction du champs FULLPKGNAME, accélération des recherches
  • unique_pkg(): plus de “many versions of foo available”, le plus récent est toujours choisi
  • Import du progressmeter d’OpenSSH

Cette version restera en gestation dans wip le temps qu’elle soit correctement testée, les changements sont nombreux et profonds, je dois m’assurer que tout fonctionne comme il se doit.
Vous l’aurez compris, il faut tester, TESTER, TESTER !
Je vous invite à rapporter les problèmes potentiels sur la liste de developpement de pkgin, à pkgin-devel-at-lists-point-sourceforge-point-net.

pkgin upgrade

Leeeeeeeet the sun shiiiiiiiiiine

Tags: , , ,
No Comments »

En fevrier dernier, je vous parlais d’Illumos, incubateur libre permettant à OpenIndiana de garder l’haleine fraiche et le teint pétillant.

Les choses ont pas mal évolué depuis, en particulier, je me suis un chouillat impliqué dans le projet visant à intégrer parfaitement pkgsrc à Illumos.

De discussions en reflexions, j’en suis venu à me demander s’il ne serait pas judicieux de monter un repository de binaires pkgsrc pour OpenIndiana/Illumos/Solaris puisque cette plateforme est finalement parfaitement supportée depuis des lustres mais qu’aucun repo digne de ce nom n’a été maintenu plus de 2 mois. (et puis evidemment, il faut bien un package manager pour gêrer tous ces binaires hin hin hin…)
Ainsi, Mads Worsøe Duun, l’initiateur du projet pkgsrc pour Illumos, a demandé aux gentils administrateurs du projet OpenIndiana (ouais, faut suivre) de nous mettre à disposition une buildbox afin de proposer des packages à jour, et bien plus de logiciels que n’en proposent Blastwave ou les repos IPS/pkg d’OpenSolaris (*ricane* *ricane*).

Ce qui est réellement à notre disposition ici, c’est une Zone, or, dans la plupart des documentations sur ce sujet (pkgsrc et Solaris), la méthode préférée, c’est de justement créer une zone pour faire son bulk build, mais comme ne nous pouvons pas créer de zone dans une zone (YO DAWG), il faudra procéder autrement, et c’est la raison même de cet article.

Comme l’explique la documentation officielle, il serait parfaitement inconscient de réaliser son bulk build sur une arborescence opérationnelle, en effet, sur les 10000 packages disponibles, une quantité non négligeable d’entre eux vont ajouter des utilisateurs, des groupes, des repertoires, des logs, des modules, des librairies etc etc etc. Il vous faut une sandbox. Fort heureusement, la “création” d’une sandbox Solaris est d’une grande simplicité.

Je vous livre ici les differentes étapes que vous pourrez bien entendu concaténer dans un joli petit script.

On déclare tout d’abord la localisation du bac à sable sur le filesystem, puis on s’y rend :

SANDBOX="/export/home/pkgsrc/sandbox"
cd ${SANDBOX}

Là, nous créons tous les répertoires nécessaires au bon fonctionnement du chroot, /tmp possède evidemment des droits particuliers :

mkdir -p bin sbin usr lib etc tmp dev opt var/run proc
chmod 777 tmp; chmod +t tmp

On peuple un peu /etc de fichiers indispensables :

cp /etc/passwd etc/
cp /etc/group etc/
cp /etc/shadow etc/
cp /etc/nsswitch.conf etc/
cp /etc/vfstab etc/
cp /etc/resolv.conf etc/
cp /etc/hosts etc/
cp /etc/netconfig etc/
cp /etc/datemsk etc/
cp /etc/user_attr etc/
cp /etc/auto_home etc/
cp /etc/project etc/
cp -r /etc/skel /etc/

chmod 400 etc/shadow

Enfin, point de copie de fichiers inutiles, nous mountons en loopback les repertoires /dev et /proc en lecture et écriture, puis bin sbin usr lib en lecture seule afin de ne pas faire de bêtises.

for rwfs in proc dev
do
        mount -F lofs /${rwfs} ${SANDBOX}/${rwfs}
done

for rofs in bin sbin usr lib
do
        mount -F lofs -o ro /${rofs} ${SANDBOX}/${rofs}
done

C’est prêt !

imil@pkgsrc:~$ pfexec chroot pkgsrc/sandbox /usr/bin/bash
bash-4.0#

Afin de pouvoir correctement compiler l’ensemble des paquets de pkgsrc, vous aurez également besoin d’installer les logiciels suivants à l’aide de la commande pkg install : SUNWgcc, gnu-patch, gnu-tar, system/xopen/xcu4, gnu-grep, developer/object-file.

Enfin, voici les particularités de mon mk.conf, à ajouter aux directives du mk.conf chrooté grace au bootstrap et son drapeau --mk-fragment :

PKGSRC_COMPILER=                ccache gcc

ACCEPTABLE_LICENSES+=           vim-license
ACCEPTABLE_LICENSES+=           sendmail-license

FAILOVER_FETCH=                 yes
ALLOW_VULNERABLE_PACKAGES=      yes
PKG_DEVELOPER=                  yes

MAKE_JOBS=              16

PASSIVE_FETCH=          1

X11_TYPE=               native
X11BASE=                /usr/X11

Ainsi que la commande complète de bootstrap :

./bootstrap --workdir=/tmp/pkgsrc --prefix=/opt/ipp/pkg --abi=32 --mk-fragment=mk-fragment.conf

Happy building.

Less politics, more fun

Tags: ,
5 Comments »

On peut lire ici : As of release 3.1.8, pkgin is the binary package manager for MINIX 3. This page describes how to use pkgin.

Comme MINIX 3 fait partie des cibles de pkgin 0.4.0, je me suis fendu d’une install fraîche. Et au premier boot, j’ai pu contempler ceci :

mmmmmm :)

Armaged^WAmalgamation

Tags: ,
No Comments »

Depuis la semaine dernière, j’ai corrigé plusieurs bugs dans pkgin, comme vous l’avez peut-être lu ici ou .
Ces fixes devraient marquer la fin de la branche 0.3, actuellement disponible dans pkgsrc, et je me permets de rappeler que si vous ne l’avez pas déjà fait, je ne saurais trop vous conseiller que de mettre à jour vos pkgin 0.3.3.1 en 0.3.3.4 dès que possible, les correctifs étant assez violents.

Je démarre donc aujourd’hui la branche 0.4, et comme je l’ai annoncé à droite et à gauche, cette branche a 3 objectifs majeurs :

  • Inclusion de SQLite dans le source tree
  • Amélioration des performances
  • Integration propre des patchs MINIX

J’avais adressé le premier point lors du 1er Hackathon Parisien, mais plusieurs éléments m’empêchaient d’être pleinement satisfait. Étant d’un naturel maniaque, evincer ce magnifique WARNS=2 me fend le coeur, mais en l’occurrence, c’est la seule façon de mener à bien la compilation de sqlite3.c lorsqu’on désactive un certain nombre de fonctions :

COPTS.sqlite3.c+=       -DSQLITE_OMIT_AUTHORIZATION             \
                        -DSQLITE_OMIT_EXPLAIN                   \
                        -DSQLITE_OMIT_PROGRESS_CALLBACK         \
                        -DQLITE_OMIT_TCL_VARIABLE               \
                        -DSQLITE_OMIT_LOAD_EXTENSION            \
                        -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT     \
                        -DSQLITE_OMIT_ALTERTABLE                \
                        -DSQLITE_OMIT_ANALYZE                   \
                        -DSQLITE_OMIT_ATTACH                    \
                        -DSQLITE_OMIT_CAST                      \
                        -DSQLITE_OMIT_CONFLICT_CLAUSE           \
                        -DSQLITE_OMIT_EXPLAIN                   \
                        -DSQLITE_OMIT_REINDEX                   \
                        -DSQLITE_OMIT_SUBQUERY                  \
                        -DSQLITE_OMIT_TEMPDB                    \
                        -DSQLITE_OMIT_TRIGGER                   \
                        -DSQLITE_OMIT_VIEW                      \
                        -DSQLITE_OMIT_VIRTUALTABLE

La directive WARNS=2 intègre entre autre le drapeau -Wunused, et lorsqu’on inclut le fichier sqlite.c officiel, c’est une myriade d’insultes que gcc vous jette à la figure.

Je vous livre l’état de mes recherches. SQLite, sous license “public domain”, permet l’inclusion d’un fichier dit “Amalgamation”, sqlite3.c, de pres de 130000 lignes, qui represente l’ensemble de SQLite en un seul .c. Très pratique. Mais ce fichier est en réalité le résultat d’une petite manipulation effectuée depuis les sources officielles et originales. Ainsi, on téléchargera depuis le site officiel le zip (allez comprendre) de la version souhaitée, puis réalisera les opérations suivantes :

$ unzip SQLite-a586a4deeb253300.zip
$ mkdir custom-sqlite
$ cd custom-sqlite
$ chmod +x ../SQLite-a586a4deeb253300/configure
$ CFLAGS="-DSQLITE_OMIT_AUTHORIZATION -DSQLITE_OMIT_EXPLAIN -DSQLITE_OMIT_PROGRESS_CALLBACK -DQLITE_OMIT_TCL_VARIABLE -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT -DSQLITE_OMIT_ALTERTABLE -DSQLITE_OMIT_ANALYZE -DSQLITE_OMIT_ATTACH -DSQLITE_OMIT_CAST -DSQLITE_OMIT_CONFLICT_CLAUSE -DSQLITE_OMIT_EXPLAIN -DSQLITE_OMIT_REINDEX -DSQLITE_OMIT_SUBQUERY -DSQLITE_OMIT_TEMPDB -DSQLITE_OMIT_TRIGGER -DSQLITE_OMIT_VIEW -DSQLITE_OMIT_VIRTUALTABLE" ../SQLite-a586a4deeb253300/configure --disable-tcl --disable-readline
$ make sqlite3.c

And voilà, le fichier sqlite3.c alors généré est une amalgamation de SQLite exempte des fonctions sus-citées, qu’on peut notemment voir ici.

Un parc à jour

Tags: , ,
No Comments »

Sur le “SuperPlan Mini” qui héberge désormais iMil.net, les services sont portés par des DomUs paravirtualisés Xen. Ces machines virtuelles fonctionnent avec les mêmes versions de noyau, d’espace utilisateur et surtout, de packages. Je ne partage pas via NFS l’espace utilisateur car je ne garantis pas la sécurité des applications hébergées sur l’une et l’autre des VMs (du php, beaucoup trop de php…).

Afin de simplifier la mise à jour des packages, j’utilise, devinez quoi: pkgin. Seulement voila, comme je l’expliquais quelques posts plus bas, j’ai besoin de spécifier certaines options à quelques packages, et de fait, je ne peux pas uniquement fonder mes mises à jour sur les paquets binaires fournis par le Projet NetBSD.
Dans l’exemple qui suit, on considèrera une machine “maître”, à qui revient la bonne gestion des packages et qui exporte son repertoire /usr/pkgsrc en NFS :

$ cat /etc/exports
/usr/pkgsrc  -alldirs -maproot=root -network 10.20.30.0 -mask 255.255.255.0
$ tail -3 /etc/rc.conf
rpcbind=yes
mountd=yes
nfs_server=yes

Voici la méthodologie que j’utilise pour le moment, pas trop fastidieuse mais tout de même pas d’une convivialité extrème :

  • Sur la machine maitre
  • Mise à jour des binaires sur la machine “maître” :
    # pkgin up && pkgin fug
    
  • Remplacement des packages “custom” (je pourrais le faire avec pkg_chk, ce serait probablement plus propre)
    # cd /usr/pkgsrc/chat/irssi && make replace clean
    
  • Regénération de tous les packages :
    # pkg_tarup -a -d /usr/pkgsrc/packages/All/ '*'
    
  • Préparation du pkg_summary :
    # cd /usr/pkgsrc/packages/All/
    # pkg_info -X * |bzip2 -c > pkg_summary.bz2
    
  • Sur les machines “slave”
  • Renseignement du repository local :
    $ cat /usr/pkg/etc/pkgin/repositories.conf
    file:///usr/pkgsrc/packages/All
    
  • Mise à jour de la base et des packages
    # pkgin up && pkgin fug
    

Et le tour est joué.

Maintenant, toi aussi tu peux zuipzuip !

Tags: , ,
3 Comments »

Et oui, ami des bureaux qui tournicottent, car on peut lire dans l’annonce officielle de pkgsrc-2009Q4 la phrase suivante :

the “Package of the Quarter” award is hereby awarded jointly to
clang, the compiler and lowlevel virtual machine infrastructure
nominated by Matthias Drochner, and to compiz, the compositing window
manager, nominated by iMil.

Parce que pour ne rien gâcher, c’est un package of the quarter :)

Ajoutons à cela le dernier post d’Hubert qui annonce :

Staying with driver games, iMil writes me that there’s documentation on getting DRI, AIGLX, Composite and Compiz going with NetBSD 5.0 available in the O(ther)NetBSD Wiki now.

The documentation covers how to enable the Direct Rendering Manager (DRI), setting up and configuring Modular X.org, assuring that everything’s in place, and how to get Compitz going. Mmm, wobbly windows at last! :-)

Je pense qu’on peut raisonnablement se dire qu’un bon petit pkgin in compiz compiz-fusion-plugins-main compiz-fusion-plugins-extra compizconfig-backend-gconf compiz-bcop ccsm suivi de la lecture de cette documentation devrait en ravir plus d’un.

Ah, et pour xorg-modular, c’est par ici.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE