Pkg_dry, phase 2

Tags:
1 Comment »

Petit à petit, mon apt(8) wanabee prend forme. Hier j’ai passé deux étapes (ou pratiquement): actions sur plusieurs packages passés en paramètre et première approche de la fonction d’autoremove.

Pour la première, la finalité est évidente :

[~/src/pkg_dry] ./pkg_dry -i mc zsh lighttpd
nothing to upgrade.
6 packages to be installed: libslang-1.4.9nb7 glib2-2.18.3nb1 unzip-5.52nb4 mc-4.6.1nb4 zsh-4.2.7nb1 lighttpd-1.4.20
proceed ? [y/N]

Pour la seconde, si la finalité semble tout aussi évidente, la mise en oeuvre l’est beaucoup moins. Pour le moment, l’autoremove est une action volontaire, exemple :

[~/src/pkg_dry] ./pkg_dry -r mc zsh lighttpd
3 packages to delete: mc-4.6.1nb4 zsh-4.2.7nb1 lighttpd-1.4.20
proceed ? [y/N] y
removing mc-4.6.1nb4...
Executing `/bin/rmdir /usr/pkg/man/sr/man8 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/man/sr/man1 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/man/sr 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/man/it/man1 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/man/it 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/man/hu/man1 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/man/hu 2>/dev/null || true'
Executing `/bin/rmdir /usr/pkg/share/mc 2>/dev/null || true'
removing zsh-4.2.7nb1...
zsh-4.2.7nb1: removing /usr/pkg/bin/zsh from /etc/shells
removing lighttpd-1.4.20...
processing local summary...
updating database: 100%
[~/src/pkg_dry] ./pkg_dry -m
in order to remove packages from the autoremove list, flag those with the -k modifier.

3 packages to be autoremoved: libslang-1.4.9nb7 glib2-2.18.3nb1 unzip-5.52nb4
proceed ? [y/N]

Ici, après avoir effacé -entre autres- mc, pkg_dry -m propose d’effacer les dépendances orphelines de premier niveau. Il faudra un peu plus reflexion pour correctement proposer un autoremove recursif et en faire une action par défaut.
Un autre problème concerne les packages installés autrement que via pkg_dry. Pour contourner le problème, j’ai ajouté un flag, -k, permettant à un package enregistré d’être en état non autoremovable. Par defaut, un package volontairement installé avec pkg_dry est non autoremovable.

Il reste encore un peu de travail sur cet aspect.

Les testeurs sont toujours bienvenus, principalement sur la version du CVS (voir post précedent) vu que cette dernière est maintenant assez éloignée de la milestone de la semaine dernière.

Pkg_dry: un peu de news ?

Tags:
3 Comments »

Je le sous-entend sans vraiment en causer depuis quelques semaines: je bosse sur un clone d’apt(8) pour NetBSD. Le projet n’est pas fini, loin s’en faut, mais j’ai atteint une Milestone aujourd’hui. Démonstration.

Installation :

[~/src/pkg_dry] ./pkg_dry -i eterm
nothing to upgrade.
5 packages to be installed: tiff-3.8.2nb4 jpeg-6bnb4 imlib2-1.4.2nb1 libast-0.6.1nb3 eterm-0.9.4nb1
proceed ? [y/N] y
downloading packages...
downloading tiff-3.8.2nb4.tgz: 100%
downloading jpeg-6bnb4.tgz: 100%
downloading imlib2-1.4.2nb1.tgz: 100%
downloading libast-0.6.1nb3.tgz: 100%
downloading eterm-0.9.4nb1.tgz: 100%
installing packages...
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/tiff-3.8.2nb4.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/jpeg-6bnb4.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/jpeg-6bnb4.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
pkg_add: other version 'jpeg-6bnb4' already installed
pkg_add: 1 package addition failed
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/imlib2-1.4.2nb1.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/libast-0.6.1nb3.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/eterm-0.9.4nb1.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
eterm-0.9.4nb1: setting permissions on /usr/pkg/bin/Eterm (o=root, g=wheel, m=4511)
processing local summary...
updating database: 100%

Desinstallation :

[~/src/pkg_dry] ./pkg_dry -r jpeg
5 packages to delete: eterm-0.9.4nb1 libast-0.6.1nb3 imlib2-1.4.2nb1 tiff-3.8.2nb4 jpeg
proceed ? [y/N] y
removing eterm-0.9.4nb1...
removing libast-0.6.1nb3...
removing imlib2-1.4.2nb1...
removing tiff-3.8.2nb4...
removing jpeg...
processing local summary...
updating database: 100%

Ça a l’air de rien comme ça, et c’est pas pour me lamenter, mais gérer les dépendances récursives et l’ordre de ces dernières pour pas que pkg_add(1) et surtout pkg_delete(1) ne gueulent, c’était pas une mince affaire.
En tout cas, ça prend forme. En réalité, l’upgrade doit également fonctionner, mais, à nouveau pour satisfaire les ancestraux outils sus-cités, il faudra un peu d’astuce.

Que reste-t-il à faire ? Evidemment, travailler sur une belle methode d’upgrade. Le moteur semble fonctionner, il faut le mettre en pratique désormais. Et puis quelques tests simples, verifier que ce qui est en REQUIRES pour un package est bien présent sur le systeme; à l’inverse renseigner PROVIDES (notez que ces derniers champs ne sont pas des dépendances en soi). Additionner les tailles de packages pour verifier que la machine dispose bien de l’éspace nécessaire, ajouter la possibilité de merger plusieurs repositories, gérer plusieurs packages passés à la ligne de commande, i.e. :

# pkg_dry -i foo bar baz

Et lorsque tout ceci sera prêt: tester !

J’en suis pas là, on ne s’enflamme pas comme dirait un ami qui se reconnaitra :)

Pour ceux que ça interesse, le code est visible ici et pour ceux que ça interesse encore plus, il est téléchargeable de cette façon :

cvs -d :pserver:anoncvs@cvs.gcu.info:/cvs login
passwd: anoncvs
cvs -d :pserver:anoncvs@cvs.gcu.info:/cvs co pkg_dry

Attention cependant, ce code est très mouvant, et ne nous attendez pas à quelque chose de vraiment utilisable avant.. pfiou je sais pas.

Sur ce, upgrade, à nous deux !

update (12 / 04 / 2009)

<spoil>

[~/src/pkg_dry] ./pkg_dry -i apache22
2 packages to be upgraded: apache-2.0.63nb4 apr-0.9.17.2.0.63nb1
2 packages to be installed: apr-1.3.3 apache-2.2.11
proceed ? [y/N] y
removing apache-2.0.63nb4...
Executing `/bin/rmdir /usr/pkg/libexec/cgi-bin 2>/dev/null || true'
===========================================================================
The following users are no longer being used by apache-2.0.63nb4,
and they can be removed if no other software is using them:

        www

===========================================================================
===========================================================================
The following groups are no longer being used by apache-2.0.63nb4,
and they can be removed if no other software is using them:

        www

===========================================================================
removing apr-0.9.17.2.0.63nb1...
downloading packages...
installing packages...
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/apr-1.3.3.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
pkg_add: Warning: package `/home/imil/src/pkg_dry/cache/apache-2.2.11.tgz' was built for a different version of the OS:
pkg_add: NetBSD/i386 5.0_BETA (pkg) vs. NetBSD/i386 5.0_RC3 (this host)
Executing '/bin/mkdir -p /usr/pkg/share/httpd/manual/style/xsl/util'
Executing '/bin/mkdir -p /usr/pkg/share/httpd/manual/style/xsl'
Executing '/bin/mkdir -p /usr/pkg/share/httpd/manual/style/lang'
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-autoindex.conf to /usr/pkg/etc/httpd/httpd-autoindex.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-dav.conf to /usr/pkg/etc/httpd/httpd-dav.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-default.conf to /usr/pkg/etc/httpd/httpd-default.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-info.conf to /usr/pkg/etc/httpd/httpd-info.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-languages.conf to /usr/pkg/etc/httpd/httpd-languages.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-manual.conf to /usr/pkg/etc/httpd/httpd-manual.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-mpm.conf to /usr/pkg/etc/httpd/httpd-mpm.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-multilang-errordoc.conf to /usr/pkg/etc/httpd/httpd-multilang-errordoc.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-ssl.conf to /usr/pkg/etc/httpd/httpd-ssl.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-userdir.conf to /usr/pkg/etc/httpd/httpd-userdir.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/extra/httpd-vhosts.conf to /usr/pkg/etc/httpd/httpd-vhosts.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/httpd.conf to /usr/pkg/etc/httpd/httpd.conf
apache-2.2.11: copying /usr/pkg/share/examples/httpd/magic to /usr/pkg/etc/httpd/magic
apache-2.2.11: copying /usr/pkg/share/examples/httpd/mime.types to /usr/pkg/etc/httpd/mime.types
===========================================================================
The following files should be created for apache-2.2.11:

        /etc/rc.d/apache (m=0755)
            [/usr/pkg/share/examples/rc.d/apache]

===========================================================================
processing local summary...
updating database: 100%

</spoil>

update (14/04/2009)

REQUIRES vs PROVIDES [done]

[~/src/pkg_dry] ./pkg_dry -i hal
/usr/X11R7/lib/libexpat.so.1, needed by hal-0.5.11nb23 is not present in this system.
/usr/X11R7/lib/libexpat.so.1, needed by policykit-0.9nb3 is not present in this system.
/usr/X11R7/lib/libexpat.so.1, needed by dbus-glib-0.76 is not present in this system.
required files are missing in this system.

ça approche, ça approche…

Xen et NetBSD 5, la compil

Tags: ,
No Comments »

Pour tester “en vrai” mon fameux pkg_dry (work in progress, pas du tout utilisable, pas d’affolement), je devais posséder une VM NetBSD 5 “poubelle”. Seulement, depuis quelques temps déjà, je sais que cette version panic‘e sur KVM, VirtualBox et Xen HVM. Aussi me suis-je décidé à Xenifier ma machine de developpement NetBSD qui n’a pas d’instructions VT, afin d’y faire tourner un domU en paravirtualisation.

Voici la compilation des documents utiles :

Ce qu’il faut savoir :

  • Il n’est plus nécessaire d’utiliser grub pour démarrer le noyau Xen, le bootloader standard fonctionne parfaitement
  • En ajout à la doc du wiki NetBSD, j’ai du spécifier le bootdev dans mon /boot.cfg, le cas écheant, le noyau tentait de booter sur sd0a
  • De la même manière, dans la conf de mon domU, j’ai du ajouter la directive bootdev = "/dev/xbd0a"
  • J’utilise des images et non de vrais disques, la ligne correspondante dans la conf du domU est: disk = [ 'file:/home/imil/xen/slave-1.img,0x03,w', 'file:/home/imil/iso/netbsd-i386.iso,0x04,r' ]

À noter que je suis extremement impressionné par la rapidité d’un domU paravirtualisé, n’ayant jusqu’à présent utilisé que des guests HVM.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in