The grumpy editor's Arch Linux experience

This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

The Arch Linux distribution has been on your editor's radar for a few years now. Arch is arguably not one of the mainstream distributions, but it clearly has a dedicated following and it is often mentioned at gatherings of developers. Recently, frustration with the distribution running on the desktop machine reached a point where a jump into the unknown seemed attractive; one day later, that machine was running Arch. Now, with a few weeks of experience to draw on, a report seems warranted.

Arch Linux 0.1 was released in 2002; it was a completely new distribution, built from scratch rather than being based on an existing distribution. So, naturally, it has its own ways of doing things and its own package manager; we can never have enough package managers, after all. Arch is purely community-based; there is no company sponsoring its development in any significant way.

This distribution is not for everybody; it is, instead, clearly aimed at users who know Linux relatively well and are not looking for a lot of hand-holding. There is not much in the way of helpful graphical administration tools, and there is no attempt to create a base distribution that is ready for any particular task beyond running a shell. Rather than provide a finished house, Arch consists of a pile of building materials and the tools needed to assemble them into almost any needed form. Unlike Gentoo, Arch does not (usually) require users to compile their own software, but the two distributions are similar in a number of other ways.

Installation

The Arch experience starts with installation, which is not a matter of inserting the media and answering a few simple questions. The Arch installation media, instead, boots to a shell prompt; it is then up to the user to configure networking, partition the target storage device(s), mount those partitions in the proper places, do the base system install (using the pacstrap command), configure the boot loader, and reboot. Then it's a matter of configuring the rest of the system to actually do something useful. The full installation instructions are worth a look, in that they typify the feel of Arch Linux in a number of ways: there is a fair amount of work to do, things can go wrong in a number of places, there is a great deal of flexibility, and the documentation is extensive and helpful.

The quality of Arch's documentation is worth a special mention, actually. Your editor has noticed for years that searches for a wide range of Linux-related issues often turn up pages on the Arch Linux site. The Arch community clearly puts quite a bit of time into maintaining this documentation and the result is almost invariably complete and helpful. That is a good thing, because one ends up digging into the documentation rather more often than with other distributions.

One of the final installation steps throws the user into a text editor to verify that the GRUB2 configuration file makes sense for the target system (assuming, of course, that GRUB2 was chosen as the boot loader; there are other alternatives). Your editor has never quite reached the point with GRUB2 where anything really makes sense at a first glance. In this case, the file "looked OK" but failed to boot the system. Fortunately, the Arch install media also makes a fine recovery system; once your editor was able to communicate the true location of the root partition to the bootloader, things went a lot more smoothly.

Packages

A basic Arch installation doesn't actually do much, though, so one has to go through the process of installing the packages needed to get some real work done. That meant learning the pacman package manager, but, before even that, there was the challenge of getting the wired network connection working. The networking configuration documentation is an impressive tome in its own right; the instructions for setting up a static, wired connection involve typing in two shell scripts and a systemd unit file by hand. One could install NetworkManager, Connman, or Wicd to automate this task, but that does not appear to be the Arch way; why bother with a network management daemon for a static wired connection when something simpler will do?

The package manager does most of the things that one would expect from such a tool, but its syntax isn't meant to be picked up quickly. Almost everything of interest is a variant on " pacman -S "; a bare -S will install a package, -Ss searches for a package -Syu updates all packages, etc. It is fast and functional, seemingly spending a lot less time messing around with metadata than yum or apt-get do, but it does take a little while to get started with.

One key aspect of Arch's design would appear to be a much looser coupling between packages. On many distributions, it can be dismaying to see how many seemingly unrelated packages a simple installation can drag in; that doesn't happen with Arch. If you attempt to remove Samba from a Fedora system, it will try to take the entire desktop environment with it; Samba will not be installed on an Arch system in the first place unless it has been explicitly requested, and desktop environments are happy to muddle along without it.

This aspect of Arch is pleasing in a number of ways; it reduces the amount of unused cruft on the disk and the number of mysterious processes running in the system. But it has its downside as well: programs can behave strangely if the packages they need for a specific functionality are not there. For example, your editor's first attempt to run " git gui " yielded this output:

/usr/lib/git-core/git-gui: line 10: exec: wish: not found fatal: 'gui' appears to be a git command, but we were not able to execute it. Maybe git-gui is broken?

The relevant page in the Arch Linux documentation leads one to the answer quickly enough: "If you want to use Git's built-in GUI tools (e.g. gitk or git gui), make sure you have installed the tk package, or they will refuse to start with a cryptic error." On many other distributions, the graphical Git tools would have pulled tk in with them; on Arch, if one wants tk , one has to install it separately. In general, it seems to be necessary to spend a fair amount of time figuring out which packages are missing and filling them in; it gets a bit tiresome at times, especially when it's not clear which packages are missing.

Arch is a rolling distribution, meaning that it has no fixed release points. Instead, packages are updated when the upstream projects make their releases. These updates often come quickly: the Firefox 36.0.4 release showed up as an update one day after its release, for example. So an updated Arch system will always be running current software. That is one of the features your editor was looking for, and Arch seems to deliver nicely. Users who want a stable system where things don't change may want to look at a different distribution, though.

The package selection in Arch is broad indeed; almost anything one might want seems to be there, though one has to dip into the Arch User Repository (AUR) for much of it. The AUR is the equivalent of Ubuntu's PPA mechanism; it's a way for users to upload packages that are not part of the core repository. There is a difference, though, in that an AUR package is really just a recipe for downloading and building the program locally. By default it's a bit of a cumbersome, manual process, but tools like aurget make things easier.

Arch Linux was slow to sign its packages as a defense against tampering, but the main repository is now completely signed and signatures are checked at installation time. The story with AUR packages is a bit less clear; installing those requires trust in both the distribution system and the developer creating the package. There is a set of several dozen "trusted users" who are tasked with watching over the AUR system, but that is a small group given the thousands of packages uploaded there.

Running Arch

For a desktop system, a desktop environment was a logical place to start; the system initially didn't even have the X window system on it. The lack of a default-installed desktop does not imply a lack of desktop support, though; the list of supported desktop environments is extensive. Arch's packaging of GNOME works mostly as expected, with few surprises. The networking configuration dialog did not work — an unsurprising outcome given the absence of NetworkManager. There is also more than the usual amount of messing around required to install a minimal set of fonts. Beyond that, though, things seem to work nicely.

Your editor was especially pleased to find that the venerable xv image viewer/editor is available; few distributions carry it these days. Also nice is that, unlike some distributions, Arch has no problem with shipping potentially patent-encumbered software like codecs. So tasks like playing MP3 files, for example, just work. One interesting surprise was that Arch uses Python 3 by default. There is full support for Python 2 still, but it must be installed explicitly and Python 2 scripts that start with #!/usr/bin/python will fail to run.

Security support for Arch seems to be a bit of a hit-and-miss affair. For some vulnerabilities, like the "high priority" unzip code-execution flaw, Arch was nearly two months behind Fedora. For others, like the latest (as of this writing) OpenSSL vulnerabilities, instead, Arch was one of the first out of the gate. Others do not appear at all; from the posted alerts, for example, one would conclude that Arch has not had a kernel vulnerability since last November — an unlikely scenario. It seems that, to a fair extent, Arch is relying on its rolling package updates to just pick up security fixes as they happen.

Concluding thoughts

What is the end result? Arch Linux will be remaining on the desktop system for the foreseeable future. Now that the system is configured, stable, and productive, the time spent getting it into that state seems like a relatively small cost to pay. The desktop machine at this point is a joy to work with; it has just what is needed installed, and the distribution machinery itself almost never seems to get in the way. The system even feels faster and more responsive than it was before — though, lacking any objective measurements, your editor is more than prepared to concede that this difference might be entirely illusory.

Arch Linux is clearly a good option for its target audience: users who know Linux well, want to run up-to-date software, and are willing to put some time into setting the system up. It could also be a good choice for users who want to learn more about what is going on at all levels of the system rather than sticking with the graphical administration tools provided by the distributor. This is true for two reasons: setting up Arch forces the acquisition of a certain amount of in-depth knowledge, and the documentation makes that information relatively easy to find when the need arises. On the other hand, users who would prefer to avoid the need to acquire that knowledge are likely to be happier with a number of the available alternatives.

Arch Linux demonstrates nicely the value of the Linux ecosystem. It will never bring about the long-awaited Year Of The Linux Desktop; there are other distributions that are happy to focus on that goal. But, if those distributions were all we had, an important subset of the Linux user base would be poorly served. By focusing on users with a more technical mindset and the time to apply it, the Arch community has created a highly capable tool that can be easily adapted to a wide variety of needs.

