Despite being a long-time Gentoo user, when I got my new PC last weekend I decided on a whim to install Exherbo. Actually it wasn’t really a whim, I’d been thinking about trying it for some time, and a fresh install on my fancy fast new hardware was a good opportunity.
While Portage has been more or less stagnating lately, Ciaran McCreesh’s
Paludis is fast, reliable, and innovative. Exherbo
(which is really just Paludis plus a package tree maintained by some
recruited by McCreesh) also places a much higher
focus on quality than Gentoo does: for example, Paludis (much like McCreesh
himself and the other Exherbo developers) is extremely unforgiving of any mistakes or
dodginess in packages. And package tests are run by default when building. Of
course this means Exherbo requires more patience and effort than Gentoo does
(just as Gentoo requires more patience and effort than a binary distro like
Fedora does), but I suspect it pays off in the form of a more reliable system.
That said, I still consider my Exherbo installation to be an experiment. If it proves too painful, I will probably go back to Gentoo. I’m still running Gentoo on my home server and my work laptop, and I don’t envisage switching distros on those any time soon. But after a week of bug fixing and writing packages, my system is almost at the state I want it, and so far I’m liking it better than Gentoo. I’m also looking forward to trying out systemd once the 2.6.36 kernel goes stable.
Mainly as an aid to my own memory, I’ve written up the following list of the problems I have run into with Exherbo so far, how I worked around them, and what I would like to do to fix them properly. (In most cases these aren’t really specific to Exherbo, or at least aren’t caused by Exherbo itself, it just happens that I never encountered them before.)
Enabling the pcre option causes grep to be linked against libpcre.so. Grep lives in /bin and libpcre.so lives in /usr/lib. Lots of init scripts use grep, including the localmount one which mounts /usr. Can you see where this went wrong? :-)
For now I’ve just disabled the pcre option for grep, but really libpcre.so should probably be installed into /lib. More importantly, Paludis should be able to notice and prevent these kinds of breakages (by refusing to install binaries into /bin or /sbin which link to libraries outside of /lib, for example). I think I could probably do this as a Paludis hook, or maybe patch it.
I use nss_ldap and pam_ldap on my home systems for consistent uids/gids across the network. (I started doing this long ago, for NFS mounts, although I no longer use NFS anywhere much.) I had to package these myself, which was not too hard, but they also required a bit of fiddling to get them working properly. First of all, I had to add
use netin the deps for the dbus init script, because dbus would act really weird if nss_ldap couldn’t talk to the network when it started. It also made my PAM configuration a lot more confusing, when I went to configure pam_gnome_keyring (see below).
The gdm package installs a PAM configuration file that uses the obsolete pam_keyring instead of pam_gnome_keyring. This could be tricky to fix though, because that module (like all PAM modules I suppose) is very sensitive to ordering, as I discovered when trying to get it to play nice with pam_ldap. The substack feature in recent PAM versions helps.
The openldap package doesn’t have an option to disable building the server, or linking against SASL. I don’t need either of those on my system, so it would be nice not to have them installed.
I needed to whitelist my DNS and LDAP servers in sydbox, for building packages which make getent calls as part of their tests. (Sydbox is the sandboxing solution which Paludis uses.) Although sydbox normally reads its configuration from /etc, Paludis invokes it with
--profilewhich reads from /usr/share instead. For now I’ve just edited that file, but of course it will be overwritten when I next upgrade so that’s not a good solution. I need some better way of customising the sydbox profile which Paludis uses.
Glibmm (and gtkmm etc) install HTML docs which I do not want.
Nautilus supports extracting XMP metadata by using exempi, but this isn’t enabled in the nautilus package (probably because exempi isn’t packaged). XMP is near to my heart, so I’d like to fix this up.
Xmonad needs to install an xmonad.desktop file. I don’t know why upstream still don’t do this.
Thunderbird fails abysmally to build on my system. It is making me quite angry.
I packaged mail-notification, but its Gmail support doesn’t work. Some brief Googling made me think it was due to weird/broken SSL support in gnome-vfs (openssl vs gnutls?). This will be painful to fix because upstream doesn’t give a shit about gnome-vfs anymore. Gentoo has some bugs relating to this, and apparently some patches that fix it somehow.
I’m also trying out etckeeper with git, rather than manually keeping /etc in hg as I used to do. It’s quite nifty, although I have seen it create empty commits in git, and its Paludis integration doesn’t understand protected config files, which is annoying.
So now I can throw away the paper notes I kept about this while my system was still unusable. Here’s hoping I have a chance to work on some of this stuff in the near future…