Slackware is a Linux distribution created by Patrick Volderding and maintained by Slackware Linux Inc. It was one of the earliest distributions available, and is the oldest currently being maintained. Slackware is an acronym for stability, extendibility and simplicity. It is highly adaptable and appreciated within the community for its capability for being customizable. Slackware aims to be the most UNIX-like Linux distribution.
Slackware is originally based on the Softlanding Linux System (SLS), which was very popular amongst the original Linux distributions, ancient times ago. SLS was on top, until the developers decided to change the executable format from a.out to ELF. Many users not happy with this decision, Patrick Volkerding modified a current SLS version and released it under the name “Slackware”. The first release, 1.0, appeared on 16 July 1993. This release was fitting on several 3 ½” floppy disks but was also available by anonymous FTP. Things change fast, Slackware quickly replaced SLS as the dominant Linux distribution at the time.
Based on Slackware’s release numbering approach, the distribution seemed to be out of date compared to other distributions such as Red Hat. To show that Slackware was up-to-date as other Linux distributions, Patrick decided 1999 to increment the release number from 4 to 7, which was equal to release numbers of other Linux distributions at the time.
Slackware follows a pretty conservative approach in different aspects, so to say with software to include in the software tree, inclusion of new libraries and sometimes major software updates, design or architecture changes. As a fact, one will not find software included with many other Linux distribution, such as OpenOffice, Acrobat Reader and some examples more. My assumption is that Patrick does not want to include any software not fully under the GPL license. Nevertheless, it is everybody’s free will to install any software one is desiring on a Slackware box. Patience was also required with Kernel 2.6 or Apache 2.x, which were officially introduced in Slackware 12, although stable since quite a while. Patrick also seems to have a special relation to the LILO boot loader, which in my humble opinion should be replaced with the grub loader. At least grub is available as package (amongst many others) in the Slackware “extra” tree. While these examples probably sound like a disadvantage, they may in fact be the reasons why Slackware is probably the most stable and reliable distribution available.
Since 2005 KDE can be seen as the main desktop environment in Slackware, as GNOME was removed from the current tree. There are still many other window managers available in Slackware such as Xfce, Blackbox and Fvwm. Nevertheless, GNOME is still available for Slackware offered by several community-based projects.
The “Keep It Simple, Stupid” philosophy could be a suitable designation for Slackware. In this context, “simple” refers much more to the viewpoint of the system design, rather than ease of use. To be honest, Slackware is probably not a Linux beginners choice. There are other Linux distributions available a beginner should start with. Slackware provides pretty little GUI tools to install and configure the system. Most software in Slackware has to be configured using the mechanisms provided by the specific software. Nevertheless some important tasks can be done by a Slackware specific configuration GUI. If there was a little more help with partitioning (one must do it using fdisk or cfdisk) even a beginner could install Slackware. As a fact, critics consider Slackware not to be user friendly and difficult to learn. From a Slackware believers viewpoint, the other side of the coin is Slackware’s flexibility, extendibility, stability and transparency. Once one is no longer a Linux beginner and want to do things more than “out of the box”, the decision to move over to Slackware may be a hard, but wise one.
Slackware is primarily developed for the x86 hardware architecture. However, Slackware has previously been ported to SPARC and Alpha architectures. As of 2005, there is an official port to the S/390 architecture. This means that this port is undergoing the same heavy development and testing experiences as x86. Official ports (will attempt) to include the same software, configuration scripts, and so forth. There are also unofficial ports to the ARM , Alpha, SPARC PowerPC and x86-64 architectures.
To be informed on the latest stable release for x86 go to www.slackware.com. Slackware uses two main trees for its release management. There is always as “slackware” directory, which is actually a shortcut pointing to the directory holding the latest stable release. This is the version that should be used in a productive environment. The second is the development / testing tree, also called “current”, which holds the version next to be released.
If you want to download the latest version, either use a tool capable of doing reverse downloads such as “ncftp” or download the ISO image. You can also use Bit torrent go get your copy of Slackware. It is always a good idea to use a mirror, a maintained list is published at the above site.
As mentioned before, the “slackware” directory points to the directory holding the latest stable release. If you change inside that directory, you will, again, see a directory named “slackware”, amongst others. This directory contains the categorized Slackware packages (see info below on Slackware’s package management). This directory also holds (not pictured here) various Readme's.
Other important directories are:
- extra - this one contains various additional software package, e.g. "grub" or "slackpkg". If you are looking for something, you should first have a look into it
- isolinux - contains all the files necessary to make a bootable Slackware install DVD - see README.TXT
- pasture - things that have been retired from Slackware, but might still be useful to some people
- patches - security fixes for the latest stable release. To be informed on security issues subscribe to the mailing list and/or RSS feed
- source - source code for all the software contained in Slackware, categorized in the "slackware" directory style
- testing - software under examination eventually to be included in the next release
Slackware package management
Slackware's package management differs from mechanism provided by other main distributions. Slackware packages are gzipped tarballs with filenames ending with .tgz. Package management can install, remove and upgrade packages. Management of dependencies is by default users obligation, which has to ensure all system libraries and programs required by a new package are in place. If any of these are missing, there may be no indication until one attempts to use the newly installed software.
Package tools in place by default are:
- pkgtool - provides a basic GUI for related package management tasks
- installpkg - install packages
- removepkg - remove packages
- upgradepkg - upgrade a already installed package with a new version.
Beside upgradepkg is also capable of installing new packages (--install-new), reinstall a package of the same version (--reinstall) or to generate a report about which packages would be installed or upgraded but don't actually perform the upgrades (--dry-run)
A package contains the files that form part of the software being installed, as well as additional files for the benefit of the Slackware package manager. The files that form part of the software being installed are organized such that, when extracted into the root directory, their files are placed in their installed locations. The other files are those placed under the install/ directory inside the package.
The files "slack-desc" and "doinst.sh" are the two files commonly to be found in the install/ directory of a package. These files will not be copied into the filesystem, but supporting the installation process. The slack-desc file is a simple text file which contains a description of the package being installed. This is used when installing a package or viewing it using package management tools. The doinst.sh file is a shell script which is usually intended to run commands or make changes which could not be best made by changing the contents of the package. This script is run at the end of the installation of a package.
As mentioned above, the slackware subdirectory contains the categorized packages as follows:
- a - the base system. Contains enough software to get up and running and have a text editor and basic communications programs
- ap - various applications that do not require the X Window System
- d - program development tools. Compilers, debuggers, interpreters, and man pages. It's all here
- e - GNU Emacs
- f - FAQs, HOWTOs, and other miscellaneous documentation
- k - the source code for the Linux kernel
- kde - the K Desktop Environment. An X environment which shares a lot of look-and-feel features with the MacOS and Windows
- kdei - language support for the K Desktop Environment
- l - system libraries
- n - networking programs. Daemons, mail programs, telnet, news readers, and so on
- t - teTeX document formatting system
- tcl - the Tool Command Language, Tk, TclX, and TkDesk
- x - the base X Window System
- xap - X applications that are not part of a major desktop environment
- y - Games
Package series or even single packages can easely be chosen during installation. Packages can be installed, removed or upgraded at any time using the tools depicted above.
Extended package management with "slackpkg"
Slackware 9.1 introduced the slackpkg tool as extra package but it is not installed by default. While Slackware itself does not incorporate tools to automatically resolve dependencies for the user by automatically downloading and installing them, the slackpkg tool provides extended and very useful functions.
Simply install it with the installpkg command from the extra directory if you want to use it. Slackpkig provides a variety of functions as pictured below.
Prior of using it, the slackpkg configuration file "slackpkg.conf", located in /etc/slackpkg, has to be reviewed and adapted as needed. In the same directory you will find a file called "mirrors" - edit this file and uncomment the Slackware mirror (just one) closest to you. Be aware that this file contains sections for prior releases too. Find the mirror in the proper section which equals to the release you are using. Once done, you are ready using slackpkg.
Slackpkg provides all the functions supplied by the tools mentioned earlier. In addition, especially pay attention to the following options:
- info packag
Alternatively, NetBSD's pkgsrc provides support for Slackware, among other UNIX-like operating systems. pkgsrc provides dependency resolution for both binary and source packages.
Third-party Slackware packages are provided by linuxpackages.net and slacky.eu. GNOME SlackBuild, Dropline GNOME and GWARE are projects intended to offer Slackware packages for GNOME. These projects exist because Slackware does no longer officially include GNOME, but a large number of users would prefer to have GNOME as a choice. Another project for building GNOME is the SlackBot automated build script system.
In addition to the unofficial package repositories listed above, there is a project called SlackBuilds.org whose goal is to provide build scripts for compiling add-on software and creating Slackware packages of it.
Keep on slackin!