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.
April 19th, 2009 at 7:18 pm
Excellent boulot, c’est vraiment une des rares choses qui – a mon goût – manque sur les BSD.