It's been a while since I started to use Alpine Linux, specially because I knew
it was well known for being a very lightweight Linux distribution, a
prerequisite reliable I have written in the past. After a year working from
home due to Covid-19, I finally decided to stop using my laptop as my main
workstation. The reasons vary, but mostly due to the limitations of computer
storage and having to deal with batteries. So I finally moved into a proper
desktop workstation.
On Why I use Vim or About Complexity in Tech
After migrating everything from my laptop to my new workstation, it occurred to
me that it was the perfect opportunity to do a much desired Alpine Linux
test-drive. Needless to say, I never looked back.
Honestly, the thing I like the most on Alpine, is the fact that it is *very*
simple. Everything in it emanates minimalism, a sense of not being intrusive
and attempt to be very barebones system, but without being masochist.
Everything on it tells me that it were made with the objective to always opt-in
for the simplest path possible, even if that means to sacrifice some
"pre-optimizations" for you, and to always pick the fewest moving parts, and
parts that behaves correctly.
I feel that it's a distribution that I can trust on how it will behaves and
which emanates reliability. All development is made on a "edge" branch, and
every six months they freeze that as a new release, which also has support for
over two years. The rolling release model, which means that whenever a package
is updated upstream it'll be updated on the distro by some maintainer has
proved a complete success on other distros (Arch Linux and Gentoo) and it's the
path Alpine implemented as well. In my opinion, the two years period of
support, is a little too much for my taste, but it's enough to discourage you
from letting the system atrophy. Update between versions of Alpine is simple as
edit a file and bump the repository version. Keeping an up-to-date system is
the bare minimum of any decent infrastructure and Alpine manage to make this
even less painful.
The system service supervisor, openRC, is small and simple and essentially
there's two formats of writing services for it. Either filling some variables
on the service file or writing more complex scripts if necessary, it's all
shell script at the end of the day.
Satellite openRC file on git.eletrotupi.com with little configuration
My configuration for hometown which is a little more complex
The system packager is simply the fastest package manager and profoundly
documented. Packaging software is a breeze and straight to the point. Also, in
less than a hour it's possible to setup the infrastructure to offer third-party
packages. Alpine offers even the tools for you to build that infrastructure,
sign packages, keep packages indexed, and all you'll need to do is exposing
that repository over a reverse-proxy and that's it.
The weakest point is documentation, that not only is vastly incomplete,
sometimes even send you to other places such as the Arch Wiki. It also features
guides for really old versions of Alpine. Efforts have been made to improve
this situation and to keep man pages tidy as well.
Another issue, even though it shows me more about how mainstream developers see
Linux, is the fact that most mainstream software have some difficulties to play
nice on Alpine. Specially due to the fact that Alpine implements as it's C
Library, instead of GNU. The objective of the musl-c project is to do a
"correct, simple and safe" implementation of the C Library, which makes
software that is deeply GNU dependent to not being able to run smoothly on
Alpine, as they are not portable. Keep in mind that is not some lost cause and
there are some layers of compatibility available that the Alpine and the musl-c
team have made it and to be fair, I only experienced some games failing on it.
the musl-c library project page
So, to summarize, I really like Alpine Linux and find myself picking to use my
laptop over my main workstation just because it runs Alpine. All my servers run
Alpine, and soon my workstation as well. I keep a third-party repository, some
dozen packages and if I have the chance I'll update any Dockerfile/server at
work to use it as well.
My personal Alpine third-party package repository
--
The post "Alpine Linux" was published in June 15, 2021.
The content of this site is under the terms of Creative Commons CC-BY-SA. The
code is available under GPL-3.0.