I (re-)installed Arch Linux today. Having been using Debian for over a week, I managed to break it during an upgrade (X refused to start. Probably should be fixable, but several hours hacking at google revealed nothing so I decided to go back to what I know – Arch). Coming back from Debian, which is an extremely solid distribution – the very reason I installed it on my mail server – to Arch which is much more bleeding-edge I expected to see the odd bug or two.
I did not expect the shock of poor quality and the bugs which were just unfixed purely out of laziness, as far as I can see. Even before the system was installed the problems started…
- installer borks on grub-install if cd-drives are above hdds in device chain (as is the case on my desktop). It assumes that hd0(according to grub)==hda(according to the kernel) however if hda and hdb are cd-drives and hdc is the first hard disk, then hd0==hdc not hda. Debian,Fedora,Ubuntu (in fact every other installer I’ve come across) all cope fine so it must be fairly straight-forward to fix.
- installer leaves stuff in an inconsistent state if an error occurs while formatting or mounting a filesystem. Any filesystems mounted before the error remain mounted, although the installer dumps you back at the beginning. It then cannot continue as it will try to (re-)format the mounted filesystem, and fail dumping you back at the start again. Clearly the solution is to unmount the filesystems manually before continuing but what’s the point of an installer if it doesn’t work?! I would use Gentoo if wanted to mess with this kind of stuff (well, actually I would prefer to use Gentoo but the (mostly perceived) time required to install it prevents me from doing it).
- makepkg, the script for building your own Arch packages (which is so easy to use building packages is trivial, so the distro’s small repository of prebuilt packages is not too much of a problem), does not work when run from within directories with spaces. This is probably due to poor bash scripts, as is the next problem;
- I like to rename the network interfaces on my desktop computer (which has 2 network ports on the motherboard). Since the network ports use different chipsets I usually name them ‘eth-‘ using udev rules. This works fine on Debian and SuSE, however the network interfaces cannot have hyphens in their name in Arch due to a “won’t fix” bug in the network init script. This is incredibly silly as it should be fixed by simply placing the correct quotes around the variable name when calling ifconfig or dhcpcd from within the init script.
- There is no vlock package. I consider, among other things, vim,screen and vlock to be core to the functionality of Linux systems(or indeed *nix systems in general). While with a small distribution such as Arch I would expect to have to build my own packages for a few things I would expect these 3 at least to be in the basic repository!
I had a look at fixing the bugs in the init-scripts and makepkg. While I successfully fixed the bug in makepkg itself (simply a case of enclosing the relevant variables in “quotes”) most, if not all, of the PKGBUILD scripts refer to $startdir without quotes which means that, since the script is passed straight to bash, to be rid of the bug completely this variable would have to be quoted in all PKGBUILDs. This is no small task.
On the init-script front, the problem is that that rc.conf is simply ‘source’d. This means that hiphens cannot occur in variable names (at the time of writing my rant, I was assuming that rc.conf would have been parsed rather than ‘source’d). This bug is probably not fixable unless rc.conf becomes parsed which would more than likely go against Arch’s KISS philosophy.
i-ho, i-ho, back to Debian I go