site  contact  subhomenews

Compiling Sabotage OS

April 29, 2016 — BarryK
I posted about using a ready-made Sabotage x86_64 musl rootfs:

I was most intrigued by the directory layout. Very simple and logical. Packages are installed into /opt, with symlinks created from the normal locations in the filesystem. /usr is just a symlink to ".".

This is kind of like Gobolinux. But, I recall looking at Gobolinux many years ago, and just now took another look:
I thought then, and still do, that it is "too different". Well, obviously it works, but it is not for me.

Sabotage, on the otherhand, is really still the standard Linux directory hierarchy, with the advantage of packages getting installed in /opt -- which is really nice, as you can see at a glance everything in a package.
You can even do stuff like install a package by putting it in /opt, then run "butch relink <package>" to create the symlinks (butch is the package manager).

Note, "butch unlink <package>" will remove all the symlinks. Neat. That effectively uninstalls the package.

There doesn't have to be any separate package database, as /opt is itself the database.

I have some reservations:

Musl seems to be compiling just about everything these days. Sabotage have 700 packages, but I see that Alpine Linux compiles many more with musl.
So, I guess that musl is OK. Great of course for creating static utilities. The space saving, well, when we are compiling apps that are many megabytes in size, such as Firefox, the saving of musl is probably insignificant.

Probably the same thing could be said about busybox, that Sabotage uses.

Sabotage was originally developed by Josiah Worcester:
Development stopped in 2011. The project was forked by a couple of guys:
...what is good to see is that it is still active.

I decided to give it a go. I got the source from github:
# git clone git://

This will build the entire distro from source. What I found though, is that it does not like Quirky 8.0, or rather one of the header files, for which I can blame Ubuntu.
So, I booted up my good old Quirky April 7.2.1, built from packages compiled in T2. This is very much a "vanilla flavoured" build, just about anything will compile. And indeed, sabotage is off and running, compiling that is.

I will post a report sometime.

Just a thought: Quirky and Puppy are chameleons, Woof* builds them from the binary packages of any distro. No reason why Woof* cannot build from the binary packages created by Sabotage.


I should mention, one thing that prompted me to play further with Sabotage, is my growing dislike of multi-lib.

I think that a distro should be built for one architecture. Multi-lib is bloatware and complication, and potentially troublesome. It is also a mess.

Unfortunately, with T2, if I choose a x86_64 build, multi-lib is required, cannot be turned off. It is beyond me to patch T2 so as to turn it off.

Sabotage will build x86_64 without multi-lib, just the simple /lib and /include, with /usr symlinked to /, no /lib64 or /lib/x86_64-linux-gnu, /include/x86_64-linux-gnu, etc.
Note though, there is a facility to install 32-bit libraries and executables, in /bit32, totally separated which is very good.

They use eudev!!!

gettext-tiny, which seems to be their own creation, instead of the big cumbersome gnu gettext.

Simple easy-to-read shell scripts.

butch, the package manager, is a single executable written in C. Small and fast. Only just started looking at it, like it very much so far.

I was looking at the projects he has contributed to, or created:

Project 'filesync' interests me:

hi, thanks for showing up here and your reports on the list.
indeed the mailing list is almost dead, and i keep forgetting to look into there.
the mailing list is a relic from the first sabotage incarnation -- written by @chneukirchen , later forked by @pikhq and finally by me. i'd probably never have created it, since github features all facilities offered by mailing lists in an imo nicer packet.
you can open and discuss issues, pull request and comment with on a single-line granularity directly in the diffs.

Tags: linux