@nyanide sbotool's is the best way, but making your own \ doing manually is good to. Unless you need 1200 packages not in slackware,its not really a issue.
@dcc@annihilation.social@nyanide@lab.nyanide.com The point of Slackware, in my mind, is that it is so simple and unchanging that you can actually own your system over time. My primary reason for using Slackware is that I can fork the whole distro if I really had to, because it is a one-person-sized system. People complain that "Slackware is bloat, it installs hundreds of packages by default", but that is actually the simple approach, because it means Slackware doesn't have repos with 60,000 packages, with unlimited potential combinations. Slackware is rock solid for that. There's only one authoritative configuration, and it is developed and tested for half a decade before each release.
CRUX is very good too, but, I strongly disagree with their "only English" and "delete all docs from packages" mindset. I think CRUX is more invasive philosophically than Slackware in trivial things, yet somehow more disorganized and haphazard at the same time.
How do I do SBo package updates? I wrote ~15 lines of shell and awk script in a shell function, starts with something like "for file in /var/log/packages/SBo" (packages install logs are plain text files, and require a "tag" part in them, SBo is a tag for example). It uses git pull to sync a local copy of the SBo tree. The end result is that it shows me "package x has update entries in the ChangeLog, currently installed version is vx.y.z, here are the 5 git log entries that modified this package in the package tree". I then go over my packages, and decide whether I want to update them or not. I don't update most things, unless I know them to be security sensitive, or I care about new features.
I've made this "update system" in a few hours, fixed a few bugs a couple of times here and there, and used it for years afterwards. It never breaks, it never changes, it gives me all the agency. Well, not really, because it still relies on package maintainers to update their packages, which I don't like. So, I wrote my own RSS/Atom/OtherFormats reader in some 100 lines of shell script, curl, and xslt style sheets, throw it on a cron, to check package releases for critical packages for me, print any updates whenever I start a new shell. I don't rely much on SBo maintainers for packages critical to business production machines (yes, Slackware in prod, serving millions of customers for my clients). Plus, I maintain half a dozen packages on SBo officially, so I have to know about them first :)
All of this is possible because Slackware doesn't have a system. It doesn't enforce things. It trusts you to know what you're doing, and commits to not breaking your work. I rewrote the networking init scripts because I wanted a weird setup with my private networks, and that was easy, and never broke ever on its own. With Slackware I can compound my work building things, I don't have to continuously "churn" trying to keep up. It's what Common Lisp / C / Lua are to the JS+NPM / Rust+Cargo (et al.) never ending slop generators. Even official package updates ask you, with a diff, to judge the new updates, instead of just overwriting your files, unlike some other unmentionable distros.
I worked deeply (build packages, maintain them, etc. for years) with Arch, Gentoo, Debian, and Fedora, worked with FreeBSD, OpenBSD, NetBSD to port software to them, and I've used CRUX for a while. Slackware is definitely the most UNIX of Linux systems. Heck, it might be more UNIX than FreeBSD. I think CRUX, OpenBSD, NetBSD, and Slackware are closely clustered, philosophically, in the idea space.
I maintain some 20+ Slackware machines, for home use, software development, playing video games, including wine / Steam / VR gaming, self-hosted LLMs, business production (web servers, databases, automation workers, etc.), and a few personal machines and laptops for less-techie family members.
If you have any questions on Slackware, I'm happy to answer.
@nyanide 1. the underlying system is so stupid simple you can very well use a second party tool (write your own:)) 2. slackware already has plenty of packages, if you need more it's not their business
@nyanide@lab.nyanide.com I mirror SBo using git. My package management functions are basically some ease-of-life around the core of:
# As normal user: cat *.info slack-desc README # read about the package . *.info # source its metadata wget -c $DOWNLOAD # download the source md5sum filename.tar.gz # check-sum the downloaded file echo $MD5SUM # compare to the expected value. fakeroot sh *.SlackBuild # build the package.
# As root: updatepkg --install-new /tmp/*_SBo.t?z # install the built package. chown root:root /tmp/*_SBo.tgz # make it owned by root mv /tmp/*_SBo.tgz /var/cache/packages/slackbuilds/ # store it in my package store. I also share the pre-built packages between my machines in general, by mirroring them to one of my servers, and downloading them to other machines from there.
@rozenglass Sounds pretty cool actually. In theory I guess I could have a totally offline little mirror of all the packages I need without needing to go through any hassle. Maybe I'll give Slackware a genuine shot if I can get it working with grub
@nyanide the other guy did an excellent job with their explaination. slackware is the miracle machine you never call maintenance on, just toss more oil grease and jury rig it every time you need it to do something, and that'll keep working forever because it's built to take it
@nyanide@lab.nyanide.com I have a handful of Slackware 15.0 machines running grub, it works for me, including in complex setups where I boot a custom initrd from a software RAID disk, then SSH into the initrd to unlock a LUKS partitions and set up the rest of the RAID arrays, and then boot the actual system. The upcoming Slackware 15.1 will encourage grub as the default configuration instead of elilo / lilo, but 15.0 definitely works well with it in my experience.
@nyanide@lab.nyanide.com With respect to the offline mirror, I see that as very possible. If you want faster setup of machines too, pkgtools (installpkg et al.) support a --tagfile option, in which you can tell them to basically just install a specific set of packages. I have tagfiles for tiny light weight chroots, for minimal secure web servers, and other arrangements. All of this is a bit advanced of course, considering you have to know your way around manual dependency management. Some variation of ldd * | grep 'not found' can be your best friend :)
@rozenglass I kind of thought of like, a thumbdrive package management sort of deal. You sync up the thing on a raspi and being it around different machines and install updates. I think thats possible with debian and stuff too though
upgradepkg --terse --install-new /mnt/usb/*.t?z This applies equally to official Slackware packages, and any custom packages, from SBo or otherwise.
Of course on Debian you can do the same, with apt install /mnt/usb/*.deb. I think if you do it this way, the dependency resolver of apt won't go crazy, because it can order the .deb installation to keep dependencies satisfied. Do not try to install the packages one by one though, because you will have to do it in the correct order then.
Unrelated recommendation, if you're thinking about Debian, check out Devuan, for a more sane community, and a more sane init system. Devuan is still down-stream of Debian, so Debian shenanigans might impact them, but at least you have a layer of sanity-checks between you and the Debian project.