Until we meet again, SlackwarePosted: 2021-09-19 Filed under: misc 14 Comments
It seems I have come to the point where I no longer find Slackware fit for me. This post is not intended as some “I’m leaving Slackware! Farewell!” drama, that you may find at LQ. I believe no one cares about what I choose to use. I just feel that if I am going to give up maintenance of my SlackBuilds, I should at least provide some reasoning. Also, I am sad it all came to this and just want to vent. I guess my own blog is the right place.
I started using Linux in the beginning of the distant 2005, with a Finnish distribution called LBA-Linux. Couple of months later the project was discontinued, so I switched to Fedora for about half a year. In the autumn, I installed Slackware, which at the time was at version 10.1. I knew it was not advertised as easy to use, so I studied the install instructions and had them printed (something I keep to this day). Reading the documentation I managed to do the install, configure X and have a working GNOME 2.6. I was amazed by Slackware’s speed, but was kinda disappointed by missing features of its GNOME: it just felt a bit incomplete, compared to Fedora. Well, it was much faster than Fedora, so I was fine with the “trade-off”. Then 10.2 came, with no GNOME, so I switched to Xfce. Then I found Dropline GNOME and used it for several years. The community was great and helpful, also the project added dbus and hal, as well as NetworkManager, which at that time made Slackware much more user friendly for a beginner than the “vanilla” install.
So, my journey with Slackware continued. I was fond of GTK desktops, (Dropline) GNOME and Xfce. I used KDE occasionally, I have good memories of KDE 3.5.* in Slackware 12.2. Till this date, I have used 12 consecutive stable versions of Slackware. They span over a period of 16 years, from which, version 14.2 takes the staggering 5 years. Which is roughly 1/3 of the time. Guess where I am going with this…?
In August 2016 I started a new job as a post-doc. Among other things, I worked on a bioinformatics project, for which we purchased a Dell workstation in the end of 2017. I knew Slackware 14.2 would not like a M.2 disk, so I specifically asked for a “conventional” SSD, because I wanted to use my favorite distro. Well, the network adapter was not supported, so I fixed this by compiling a newer kernel. However, the GPU was not supported either, which was a real problem that I could not fix. So, I switched to -current for the first time ever. I had always avoided it, because I valued Slackware’s legendary stability and reliability. Well, the kernel that came with -current had some problem with the computer’s clock, so I had to upgrade to an even newer version. No problem. Then I installed everything I needed from SBo and struggled with SlackBuilds that would not build. I managed. Then, I tried keeping up with -current’s updates. Bad idea, especially for a production machine. I faced numerous problems and in the end, I decided to just install a “snapshot” of -current, build all additional software I needed from SBo and after 6-9 months make a clean install and do it all over again. No updates meanwhile. I put up with various bugs, like the horrendous non-scrolling (for fsck’s sake!) GTK3 scrollbars in Gnumeric, as well as other inconveniences. Like this, I managed to do my work, and in 2019 we published a paper that cordially cites Slackware and SBo.
So, I tried. I really did.
In April 2021 my full-time work contract ended, and I worked part-time for several months. It made me think that during these 5 years at my last workplace, there had been no new Slackware release. All this time, I had used a system that was deemed as “work in progress”. Well, thanks, but no thanks. This is not why I chose the distro at the first place. And you know what? I got tired. Nevertheless, I did another fresh install of -current after the beta was announced. I checked all my SlackBuilds on the beta release, pushed updates and found build fixes where necessary. I hope this made it easier for the core maintainers.
I cannot stand GTK3, so I prepared a set of SlackBuilds that build Xfce 14.2 and some goodies/programs on -current beta. My plan was to stick with Xfce 4.12 for as long as it builds. Which made me thinking, that I will need to do more and more things “the hard way”. After being a maintainer at SBo for 10 years, I came to realize that things could be much easier than they currently are when preparing build scripts. Not to mention the plethora of third-party tools for package management on Slackware, which to me at least, is an indication that something is seriously lacking for many users. I will take this no further, though.
Long story short: I am using CRUX. I will not debate whether it is better, the important thing is that it fits my needs better at the moment. How did I come to it? Earlier this year, I installed CRUX in a virtual machine just for fun. I find its ports and packaging system to be in the sweet spot between simplicity, power and ease-to-create new ports. Couple of months ago, I needed to install a program called guidance, which depends on a specific version of bioperl (1.6.*). The latter requires a bunch a perl modules, that are not available from SBo. I tried cpan2tgz, but it refused to resolve dependencies. So, what to do? I decided to take a look at what CRUX offers and it happens that there’s a tool called cpan2crux, that automatically generates ports for perl modules and their dependencies recursively. I managed to automatically create over 120 perl modules ports with their dependendies information included. From them, I had to manually fix less than 10. Deal, right?
So, I made the switch to CRUX the very next day. It is an up-to-date system with outstanding package managing tools. So, when I need to do things “the hard way” it’s quite easy.
Maybe at some point I will return to Slackware, who knows. In any case, I’ll be forever grateful to Slackware and its community.
EDIT (04 Feb 2022): Slackware 15.0 was released yesterday and this made me very happy. I am glad to see the project kicking and will definitely come back to Slackware at some point! :)))
Do I understand correctly that CRUX package has no any post-installation script? Only ports have them. If this is true, and you use a local package repository of packages compiled on one computer to be installed on all others, how do you live without post-installation scripts?
You should create a packages repository by a tool called pkg-repgen. It will collect all post install scripts in a special file and they will be called when installing a package. Check this:
Then you install packages from the repo by a tool called pkg-get, which tries to emulate the behaviour of prt-get, but for packages, not ports.
Check the “Install scripts” section. I did have some hiccups with it, but I am not sure whether it’s a bug or if I did not configure something right…
Thank you! It’s clear.
Another question, have you considered other distributions besides CRUX? For example, Void Linux?
I have considered Void, but never had the time to get to know it. I knew CRUX from some 10 years ago, when I used it for couple of months. Since I’ll be building my desktop environment myself, I guess CRUX is quite suitable. The only think I dislike is the lack of good .config file for the kernel. It’s fine that I need to compile a Kernel at install time, but configuring it myself is beyond my competence. Well, I ‘cheated’ a bit, and grabbed a.config from Slackware.
I am actually considering Debian.
I’m curious if the use of systemd influenced your decision at all, since you went between two systemd-free distros.
Not really, no.
How long does it take to run pkg-repgen? It seems it computes md5 for all packages every time, could be very slow. Or it works smarter?
I just timed it. On an i7-9700KF it takes 1m2.296s for 981 packages with total size of 6.5GB.
This blog of yours is really amazing. I bumped into it, not even a week ago, after your decision to move past Slackware, a decision I totally sympathize with. Slackware is a great distro but, sooner or later our circumstances change, we change.
Distros are more than just a name, they’re a way to do things. That way will work for us, until it won’t, regardless our efforts. Recognizing that moment is a sign of maturity. Proceeding accordingly requires courage. It’s the easiest thing in the world (and at the same time the hardest) doubling down on a defunct relationship, just because of the time and effort invested in it.
Thanks to you I also got to hear about CRUX. Nowadays I’m pretty comfy in the linux flavor I use, but sooner or later your situation may become mine also.
Best of luck!
Very nicely put. Also, thanks for the kind words.
Interesting, you wrote that you consider Debian. Can I ask why not Arch? It’s more like CRUX, the ports system is almost the same. The main difference is (systemd and) that Arch is rolling release. But CRUX is also rolling, de facto. Essentially, Arch is CRUX but much bigger, with large binary part, and excellent wiki (and systemd).
So, if you like CRUX and ready to tolerate systemd, Arch is just CRUX 2.0. Why not?
That’s a valid question to which I do not have a concrete answer. I used Arch in the pre-systemd “era” and was almost fine with it. It was not as stable as I wanted, some things broke upon updates and as a whole I did not like the rolling-release concept. On the other hand, at that time I knew less about Linux, so maybe I will give Arch a try again at some point, why not.
So far, I am fine with the “pace” of CRUX: it is semi-rolling. And since all updates happen by recompiling, my guess (and I may be completely wrong here) is that, if I manage to successfully build something, then it will most likely work fine. Also the revdep tool, to check what needs to be rebuild, is really neat.
I am curious how things will be when CRUX 3.7 is released and how (if?) I will manage with the upgrade. Also, I may try another distro when I have the time (Arch?). I may also come back to Slackware, when 15.0 is out, although there is no information about what release cycle to expect from now on.
Probably, upgraded to 3.7 will be like to 3.6: “We strongly advise against manually updating to CRUX 3.6 via ports” (https://crux.nu/Main/ReleaseNotes3-6).
So, one can say that CRUX is rolling release with complete reinstall every 1-2 years.
As for systemd, it looks like the period then if can be more or less ignored is finishing and transforming to the situation than we must accept it or actively fighting. The example of lvm2 that introduced an udev rule that calls systemd-run shows how this happens.
And if Slackware decides to accept systemd, how many years 16.0 will take? :-)
Yep, I will do a clean install when 3.7 comes and maybe I will first test how my own ports build in a VM before installing 3.7 on my host.
>And if Slackware decides to accept systemd, how many years 16.0 will take? :-)
Let’s not speculate… But it will be an interesting transition. :P