Hacker Newsnew | comments | show | ask | jobs | submit login

Every time Slackware is metioned in a news site, fans of it will always write comments saying how they love it, and many other users like to point out how Slackware's package management is "nonexistant" or outdated, in the sense that it doesn't resolve dependencies automatically and we're in 2009. There are even some Slackware fans who counter-attack saying that manually resolving dependencies is better and that you should not trust a program to do the job.

Now, as a long time Slackware user, I'm going to give you my opinion: it's all a matter of taste. Different people like different types of systems, and Slackware is a perfectly valid distribution for many people.

The reason it doesn't resolve dependencies automatically has to do with its "KISS" principle. Normally, to resolve dependencies effectively you need to add more stuff to the package management tools. For example, it makes much more sense to automatically resolve dependencies when the package management tools know the concept of remote repository, know the list of available packages, and what each package provides, and they can talk to the servers over the network to download packages automatically. Like apt-get does.

In Slackware, the package management tools you get are really really simple internally, and are in fact shell scripts (installpkg, removepkg, upgradepkg, etc). All they understand is package files, which are tarballs, and they don't really perform complex tasks. The package management tools in Slackware follow the KISS principle, and the line was drawn at that point. If you want to resolve dependencies automatically, then you probably need remote repositories, talking over the network, keeping a package database, etc. Slackware drew the line before all of that to keep the system simple. As easy as that.

As a Slackware user, I will never say that having to resolve dependencies by hand is a good thing. However, it's a very minor flaw that needs to be present if you want the package management to be simple, like the rest of the system. Slackware, internally, is very simple and stable. It's one of the few distributions you can very easily learn almost by heart. There are so few pieces and they fit together so easily...

For people like me, Slackware is the best choice because we want that type of system and we enjoy being working at the computer and knowing perfectly the system you're working on. Solving dependencies automatically is not a priority for me and having to do it manually is a non-issue. I don't install new software everyday. I just keep my system with the applications I need and use it. Contrary to one of the comments above, I don't use Slackware to hack and learn. I use it to get the job done. That's what computers are for, and Slackware is still a very valid system for that.

How do I track dependencies? If a program doesn't run because it lacks a library, running it from the command line will tell you which library is lacking. The ldd command can tell you that too. From that point, it's very easy to know what you are missing that the program needs. Library names usually match the package name. For other cases you can use the package browser and ask for the library (packages.slackware.it), you can ask in the IRC channel at freenode for a quick answer, you can ask at LinuxQuestions and you can also manually look in the MANIFEST.bz2 file present in every mirror, as it mentions the files each package provides.

If the problem lies in a piece of software you are trying to compile, usually the program documentation contains the appropriate information including a list of requirements. Some of those requirements may have an official package and some others may have to be installed by hand too.

But, really, it's not that hard and for most people this problem doesn't turn up all the time, at all. If you like the system, you won't find offensive to lose a bit of time tracking a few dependencies in a software package you're installing. Specially if you're going to use the software for months. That initial effort is not that important, at least in my humble opinion. Like I said at the beginning, it's a matter of taste and what fits you better.

According to your philosophy, isnt ArchLinux the perfect middle ground ?

rolling releases, BSD style init, a really good package repo (AUR) and manager (pacman) - no "-src" packages ...

if you want to insist on Slackware like package management - use PKGBUILD .


I've heard many positive things about Archlinux and a friend of mine who used to run Slackware now runs Archlinux and he's very happy, as far as I know. I don't use Archlinux for two reasons: I already know Slackware, and I have also heard, first hand from him, that Archlinux tends to break a bit more than slackware-current, that is, it's a bit more unstable.

But, yes, Archlinux is definitely another distribution that could fit me too, as it's quite simple and doesn't get in the middle. I'll probably try it one day if I become tired of Slackware.


Actually even the more complicated systems don't resolve all the problems, and the problems that are left are harder to solve because of all the extra cruft you have to wade through on their systems.


Applications are open for YC Winter 2016

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact