Minimal System

From SlackWiki
Revision as of 08:47, 28 May 2009 by Ibm5 25 (talk | contribs) (Created page with 'Category:Tutorials ''by Niki Kovacs, September 2007'' === Introduction === Once in a while, the question arises on AOLS or in some forum: what packages should I install t...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

by Niki Kovacs, September 2007


Once in a while, the question arises on AOLS or in some forum: what packages should I install to have a base system? Well, one could argue about what is meant. While some folks run no more than a kernel, a libc and a handful of packages on their servers stripped down to the bare bones, others might find such a configuration useful in the sense that chickens fly and horses swim.

Some facts and figures:

  • A "base" install of Linux From Scratch consists of a little more than 50 packages.
  • Arch Linux' [base] system has exactly 92 packages.
  • A "minimal" install of CentOS 5.0 (all software categories unselected) counts as much as 393 packages.

Conclusion: "Il y a fagots et fagots" (Molière, Le Médecin Malgré Lui)

The package choice suggested on this page is of course highly subjective. It's also the result of a simple pragmatic approach. So far, I'm using Slackware in the following situations:

  • Database server
  • Web server (Apache/PHP/MySQL)
  • File server
  • CUPS print server
  • SANED scanner server
  • Streaming media server (MPD/Icecast)

Here, the "base system" would simply boil down to the common denominator of packages installed in all these different scenarios. Something like:

  • A bootable, coherent system (no missing libs or scripts)
  • A Bash shell
  • A SMP kernel and what's necessary to rebuild it.
  • Development tools to build the odd package from source
  • Networking
  • A selection of tools for system administration
  • No graphical environment
  • No sound

Once the base system is installed, it's easy to manually add the few needed packages depending on the needs: CUPS, Apache, MySQL, ALSA, whatever.

Now here's my working base configuration:


Package group [A]

Package Short Description Long Description
aaa_base Basic Linux filesystem package Sets up the empty directory tree for Slackware and adds an email to root's mailbox welcoming them to Linux. :) This package should be installed first, and never uninstalled.
aaa_elflibs Shared libraries needed by many programs This is a collection of shared libraries needed to run Linux programs. ELF (Executable and Linking Format) is the standard Linux binary format. These libraries are gathered from other Slackware packages and are intended to give a fairly complete initial set of libraries. This package should be not upgraded or reinstalled (it could copy over newer library versions).
aaa_terminfo A basic collection of terminfo entries This is a starter set of files from the terminfo database, which should be enough in most cases. The complete set (from which this is derived) can be found in the ncurses package. The terminfo database describes the characteristics of terminals, so don't try to log in without this package.  :-)
acl Tools for using POSIX Access Control Lists This package contains a set of tools and libraries for manipulating POSIX Access Control Lists. POSIX Access Control Lists (defined in POSIX 1003.1e draft standard 17) are used to define more fine-grained discretionary access rights for files and directories.
acpid ACPI daemon Most modern computers support the Advanced Configuration and Power Interface (ACPI) standard to allow intelligent power management. This package contains acpid, which is the user-space daemon needed in order to make the Linux ACPI support completely functional. ACPI must be compiled into the kernel to run acpid.
apmd Advanced Power Management daemon apmd is an APM monitoring daemon, and works in conjunction with the APM BIOS driver in the kernel. Apmd (and the included tools) handle tasks such as automatically putting a laptop into suspend when the power level drop below a certain point. This package also includes the graphical power management tools xapm and xbattery.
attr Tools for using extended attributes on filesystems This package contains a set of tools for manipulating extended attributes (name:value pairs associated permanently with files and directories) on filesystem objects, and the library and header files needed to develop programs which make use of extended attributes. Extended attributes are used to provide additional functionality to a filesystem. For example, Access Control Lists (ACLs) are implemented using extended attributes.
bash sh-compatible shell The GNU Bourne-Again SHell. Bash is a sh-compatible command interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh). Bash is ultimately intended to be a conformant implementation of the IEEE Posix Shell and Tools specification (IEEE Working Group 1003.2). Bash must be present for the system to boot properly.
bin Some command-line utilities The bin package is a collection of miscellaneous command-line utilities. Some of these (such as 'tempfile') are used in system scripts.
bzip2 A block-sorting file compressor Bzip2 compresses files using the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding. Compression is generally considerably better than that achieved by more conventional LZ77/LZ78-based compressors, and approaches the performance of the PPM family of statistical compressors.
coreutils Core GNU utilities These are the GNU core utilities, the basic command line programs such as 'mkdir', 'ls', and 'rm' that are needed for the system to run. This package is the union of the GNU fileutils, sh-utils, and textutils packages. Most of these programs have significant advantages over their Unix counterparts, such as greater speed, additional options, and fewer arbitrary limits.
cpio Backup and archiving utility This is GNU cpio, a program to manage archives of files. This package also includes mt, a tape drive control program. cpio copies files into or out of a cpio or tar archive, which is a file that contains other files plus information about them, such as their pathname, owner, timestamps, and access permissions. The archive can be another file on the disk, a magnetic tape, or a pipe.
cryptsetup Utility for setting up encrypted filesystems LUKS is a standard for cross-platform hard disk encryption. It provides secure management of multiple userpasswords and stores setup information in the partition header. LUKS for dm-crypt is now implemented in cryptsetup replacing the original cryptsetup. It provides all the functionally of the original version plus all LUKS features.
cxxlibs C++ shared library compatibility package This package contains the shared libraries needed to run dynamically linked C++ binaries linked with older versions of libstdc++.
dcron Dillon's Cron daemon The cron daemon runs in the background and executes tasks on behalf of users at the appropriate time. Many timed system tasks are started with cron, such as the nightly indexing with updatedb.
device-mapper Device mapper for logical volume management The goal of device-mapper is to support volume management. The driver enables the definition of new block devices composed of ranges of sectors of existing devices. This can be used to define disk partitions or logical volumes. device-mapper is required by LVM2, the Logical Volume Manager.
devs System device files This package creates special files in the /dev directory that represent your system's hardware, and a tool (/dev/MAKEDEV) for creating new device files. These files are required to access hardware on a Linux system.
dialog Display dialog boxes from shell scripts Dialog is a program to present a variety of questions or display messages using dialog boxes from a shell script. The Slackware package management script "pkgtool" uses this, as do various other menu-driven console scripts.
dosfstools Tools for working with FAT filesystems Utilities for creating FAT filesystems (mkdosfs), and for checking and repairing them (dosfsck).
e2fsprogs --- Utilities needed to create and maintain ext2 and ext3 filesystems.
eject A tool to eject removable media Eject allows removable media (typically a DVD, CD, floppy disk, tape, etc.) to be ejected under software control. The command can also control some multi-disc changers, the auto-eject feature supported by some devices, and can close the disc tray of some drives.
elvis --- Elvis is a text editor. It is intended to be a modern replacement for the classic ex/vi editor of UNIX fame. Elvis supports many new features, including multiple edit buffers, multiple windows, and a variety of display modes.
etc System configuration files System configuration files. The /etc directory is traditionally the location where configuration files are found.
file A utility to determine file type This is Ian F. Darwin's 'file' utility, used to identify files.
findutils Utilities to locate files This package contains the GNU find and xargs programs. The find and xargs implementations comply with POSIX 1003.2. They also support some additional options, some borrowed from Unix and some unique to GNU.
floppy Floppy disk utilities Contains fdutils-5.4, tools to test and format floppy disks; and mtools-3.9.8, a collection of utilities for using DOS/Windows floppy disks with Linux.
gawk Pattern scanning and processing language Gawk is the GNU Project's implementation of the AWK programming language. It conforms to the definition of the language in the POSIX 1003.2 Command Language And Utilities Standard. This version in turn is based on the description in The AWK Programming Language, by Aho, Kernighan, and Weinberger, with the additional features found in the System V Release 4 version of UNIX awk. Gawk also provides more recent Bell Labs awk extensions, and some GNU-specific extensions.
gettext --- The GNU gettext package contains "gettext" and "ngettext", programs that are used to internationalize the messages given by shell scripts.
glibc-solibs Shared GNU C libraries This package contains the shared libraries, binaries, and support files required to run most Linux applications linked with glibc.
glibc-zoneinfo Timezone database This package allows you to configure your time zone. Use the timeconfig utility to set your local time zone.
grep Print lines matching a pattern This is GNU grep, the "fastest grep in the west" (we hope). Grep searches through textual input for lines which contain a match to a specified pattern and then prints the matching lines.
gzip File compression utility Gzip reduces the size of the named files using Lempel-Ziv coding (LZ77). Whenever possible, each file is replaced by one with the extension .gz, while keeping the same ownership modes, access and modification times.
hdparm Read/set hard drive parameters hdparm provides a command line interface to various hard disk ioctls supported by the Linux ATA/IDE device driver subsystem. This may be required to enable higher-performing disk modes.
infozip Info-ZIP's zip and unzip utilities zip is a compression and file packaging utility for Unix, VMS, MSDOS, OS/2, Windows NT, Minix, Atari and Macintosh, Amiga and Acorn RISC OS. It is analogous to a combination of the UNIX commands tar(1) and compress(1) and is compatible with PKZIP (Phil Katz's ZIP). A companion program unzip(1L)), unpacks zip archives.
isapnptools ISA Plug-And-Play tools These programs allow ISA Plug-And-Play devices to be configured on a Linux machine.
kbd Keyboard maps and console fonts Load and save keyboard mappings. Needed if you are not using the US keyboard map. This package also contains utilities to change your console fonts - if you install it you'll get a menu later on that lets you select from many different fonts. If you like one, you can make it your default font. A new default font can be chosen at any time by typing 'setconsolefont'.
kernel-huge-smp A fully-loaded SMP Linux kernel This is a Linux kernel with built-in support for most disk controllers. If you're looking for a more stripped down kernel (this one contains everything but the kitchen sink ;-), then install the kernel-generic-smp in the /boot directory along with an initrd to load support for your boot device and filesystem. For instructions on the initrd, see README.initrd in the /boot directory. SMP is "Symmetric multiprocessing", or multiple CPU/core support.
kernel-modules-smp SMP Linux kernel modules A kernel module is a piece of object code that can be dynamically loaded into the Linux kernel to provide new kernel functions. Most of these modules provide support for devices such as CD-ROM drives, tape drives, and ethernet cards. You can choose which modules to load by editing /etc/rc.d/rc.modules.
less File pager Less is a paginator similar to more (1), but which allows backward movement in the file as well as forward movement. Also, less does not have to read the entire input file before starting, so with large input files it starts up faster than text editors like vi (1).
lilo Linux Loader Generic Boot Loader for Linux ('LInux LOader') by Werner Almesberger. LILO boots Linux from your hard drive. It can also boot other operating systems such as MS-DOS and OS/2, and can even boot DOS from the second hard drive. LILO comes with utilities and documentation that make it easier to install, such as 'liloconfig' and 'QuickStart'. NOTE: Installing boot loaders is inherently dangerous. Be sure to have some means to boot your system from a different media if you install LILO on your hard disk.
logrotate System log rotation tool The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file daily, weekly, monthly or when the log file gets to a certain size. Normally, logrotate runs as a daily cron job.
lvm2 Logical Volume Manager version 2 Heinz Mauelshagen's LVM (Logical Volume Manager) for Linux. LVM adds an additional layer between the physical peripherals and the low-level I/O interface to get a logical view of disks. This allows the concatenation of several disks (so-called physical volumes or PVs) to form a storage pool (so-called Volume Group or VG) with allocation units called physical extents (called PE). With LVM, you can extend, resize, or relocate storage dynamically.
mdadm Manage RAID arrays mdadm is a utility program for creating, managing, and monitoring Linux MD (Software RAID) devices. Unlike the older raidtools package, mdadm is a single program (which should make it easier to use).
module-init-tools Kernel module utilities Utilities to load and unload kernel modules. These are used on Linux to load extra drivers or other features into the running kernel.
openssl-solibs OpenSSL shared libraries These shared libraries provide encryption routines required by programs such as openssh. They are also used by KDE's Konqueror web browser to provide secure web connections.
patch Apply a diff file to an original file or files Patch is a utility used to apply diffs (or patches) to files, which are usually source code.
pciutils PCI utilities lspci displays detailed information about all PCI buses and devices in the system, replacing the original /proc/pci interface. setpci allows reading from and writing to PCI device configuration registers. For example, you can adjust the latency timers with it.
pcmciautils Utilities for using PCMCIA cards with 2.6+ kernels This package provides PCMCIA tools that replace the pcmcia-cs tools used with the 2.4.x Linux kernel. PCMCIA cards are commonly used in laptops to provide expanded capabilities such as network connections, modems, increased memory, and more.
pkgtools The Slackware package maintenance system This package contains utilities for handling Slackware packages. Included are the command line utilities 'installpkg', 'removepkg', 'makepkg', 'explodepkg', and 'upgradepkg' that install, remove, build, examine, and upgrade software packages. Also included are 'pkgtool', a menu based program for installing packages, removing packages, or viewing the packages that are installed on the system, documentation (man pages), and a few other system admin scripts.
procps Utilities for displaying process information The procps package provides the classic set of utilities used to display information about the processes currently running on the machine.
quota Linux disk quota utilities An implementation of the diskquota system for the Linux operating system to keep those greedy users from gobbling up 100% of the hard drive space. Works with ext2, ext3, reiserfs, and xfs filesystems.
reiserfsprogs --- These utilities are used for Reiserfs. Reiserfs is a file system based on balanced tree algorithms.
rpm2tgz A tool for converting an RPM archive into a tar+gz one Converts RPM format to Slackware's GNU tar + GNU zip format. (view converted packages with "less", install and remove with "installpkg", "removepkg", "pkgtool", or manually with "tar"). Converted packages come with no warranty.  ;-)
sdparm Fetch and change SCSI attributes sdparm is a utility for listing and potentially changing SCSI disk parameters. More generally it can be used on any device that uses a SCSI command set. Apart from SCSI disks, examples of devices that use SCSI command sets are ATAPI CD/DVD drives, SCSI and ATAPI tape drives and SCSI enclosures.
sed Stream editor This is the GNU version of sed, a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). It is sed's ability to filter text in a pipeline which distinguishes it from other types of editors. sed is a required package (it is needed by many system scripts).
shadow Shadow password suite This set of login related programs utilizes an alternate, non-readable file to contain the actual encrypted passwords. This is presumed to increase system security by increasing the difficulty with which system crackers obtain encrypted passwords. This package provides 'login', which is needed to log into the system.
slocate Secure Locate Slocate is an enhanced version of locate, a command to help you locate files on the system. Like the original version of locate, Slocate maintains a database of files on the system, updating it nightly. Unlike the original, Slocate indexes every file on the machine rather than only the ones that can be seen by everyone. The "secure" part of slocate is that it will only return matches if the user is allowed to see the files.
smartmontools Hard drive monitoring utilities SMARTMONTOOLS contains utilities that control and monitor storage devices using the Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.) system build into ATA and SCSI Hard Drives. This is used to check the reliability of the hard drive and to predict drive failures. SMARTMONTOOLS Version 5.x is designed to comply to the ATA/ATAPI-5 specification (Revision 1). Future releases of SMARTMONTOOLS (Versions 6.x and 7.x) will comply with the ATA/ATAPI-6 and ATA/ATAPI-7 specifications.
sysfsutils Utilities for the sysfs filesystem The purpose of this package is to provide a set of utilities for interfacing with sysfs, a virtual filesystem in Linux kernel versions 2.6+ that provides a tree of system devices. While a filesystem is a very useful interface, a library (libsysfs) is also included that will hopefully make it easier for applications to query system devices and their attributes.
sysklogd Linux system logging utilities Dr. Greg Wettstein and Stephen Tweedie's syslogd/klogd. This package contains a modified version of syslogd for the Linux environment. An additional utility, klogd, is included which allows kernel logging to be directed through the syslogd facility. Syslogd and klogd are started when your system boots.
syslinux SYSLINUX/PXELINUX/ISOLINUX boot loaders SYSLINUX is a boot loader for the Linux operating system which operates off an MS-DOS/Windows FAT filesystem. This is used by the Slackware makebootdisk script to create system boot floppies. Also included are PXELINUX and ISOLINUX, boot loaders for booting from a network server or CD-ROM.
sysvinit init, the parent of all processes System V style init programs by Miquel van Smoorenburg that control the booting and shutdown of your system. These support a number of system runlevels, each with a specific set of utilities spawned. For example, the normal system runlevel is 3, which starts agetty on virtual consoles tty1 - tty6. Runlevel 4 starts xdm. Runlevel 0 shuts the system down.
sysvinit-functions /etc/init.d/functions This is the /etc/init.d/functions file, the typical sysvinit-style directories, and a few supporting binaries. Using this system, subdirectories of /etc/rc.d/ are searched for scripts (which are usually symlinks to the script in /etc/init.d/ or /etc/rc.d/init.d/). The links must start with S to start a script or K to stop (kill) it. For the most part, these are useful for running software developed for other versions of Linux.
sysvinit-scripts The basic scripts used to boot your machine These are the Slackware boot scripts, which are needed to start the machine. Sysvinit looks for these in /etc/rc.d/.
tar Archiving utility This is the GNU version of tar, an archiving program designed to store and extract files from an archive file known as a tarfile. A tarfile may be made on a tape drive, however, it is also common to write a tarfile to a normal file. Slackware's package system uses tarfiles compressed with GNU gzip.
time The GNU time command for measuring program resource use The `time' command runs another program, then displays information about the resources used by that program, collected by the system while the program was running.
tree A program to display a directory tree Tree is a recursive directory listing program that produces a depth indented listing of files, which is colorized ala dircolors if the LS_COLORS environment variable is set and output is to tty. With no arguments, tree lists the files in the current directory.
udev Dynamic device directory system udev provides a dynamic device directory containing only the files for the devices which are actually present. It creates or removes device node files usually located in the /dev directory.
usbutils USB utilities lsusb displays detailed information about all USB buses and devices in the system. usbmodules lists the kernel modules for a plugged in USB device.
utempter utmp updating library and utility The utempter package provides a utility and shared library that allows terminal applications such as xterm and screen to update /var/run/utmp and /var/log/wtmp without requiring root privileges.
util-linux A huge collection of essential utilities The util-linux package is a huge collection of random utilities that are essential to run a Linux system. This package includes the util-linux package from, plus some related programs from other sources such as adjtimex, bsdstrings, net-tools (only for 'hostname', a complete version is in the tcpip package), schedutils, setserial, and ziptool.
which Shows the full path to shell commands GNU 'which' takes one or more arguments. For each of its arguments it prints to stdout the full path of the executables that would have been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable PATH using the same algorithm as bash(1). 'Which' is a built-in function in many shells.
xfsprogs Tools to use the XFS filesystem XFS is a high performance journaling filesystem which originated on the SGI IRIX platform. It is completely multi-threaded, can support large files and large filesystems, extended attributes, variable block sizes, is extent based, and makes extensive use of Btrees (directories, extents, free space) to aid both performance and scalability.

Package group [AP]

Package Short Description Long Description
at Delayed command execution at and batch read shell commands from standard input (or a specified file) storing them as a job to be scheduled for execution at a later time.
cdrdao CD burning utility cdrdao burns proper disc-at-once (DAO) audio discs. In DAO mode the disc is written in one shot, so you don't have to have irritating 2 second gaps interrupting a live recording.
cdrtools Tools for mastering and writing compact discs. cdda2wav -- CD audio sampling utility. cdrecord -- burn discs in most ATAPI and SCSI CD-R drives. mkisofs -- create ISO9660/HFS/Joliet CD-ROM images. mkzftree -- compress a file tree to make a compressed CD-ROM.
diffutils Finds differences between files The GNU diff utilities finds differences between files. A major use for this package is to make source code patches.
dmapi Data Management API library A library required to use the Data Management API (DMAPI). This interface is defined in the X/Open document 'Systems Management: Data Storage Managment (XDSM) API' dated February 1997. The DMAPI library is used by the xfsdump utility.
dmidecode DMI table decoder dmidecode is a tool for dumping a computer's DMI table (some say SMBIOS) contents in a human-readable format. This table contains a description of the system's hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision.
dvd+rw-tools --- A collection of tools to master DVD+RW/+R/-R/-RW media.
groff Document formatting system The GNU groff package provides versions of troff, nroff, eqn, tbl, and other Unix text-formatting utilities. Groff is used to 'compile' man pages stored in groff/nroff format into a form which can be printed or displayed on the screen. These man pages are stored in compressed form in the /usr/man/man? directories.
lm_sensors Hardware monitoring package lm_sensors provides tools for monitoring the temperatures, voltages, and fans of Linux systems with hardware monitoring devices. Included are text-based tools for sensor reporting, and a library for sensors access called libsensors. It also contains tools for sensor hardware identification and I2C bus probing. IMPORTANT NOTE: If you have a Thinkpad, please read the warnings in the README.thinkpad file. lm_sensors has been known to cause damage to some Thinkpads.
lsof List open files Lsof is a Unix-specific tool. Its name stands for "LiSt Open Files", and it does just that. It lists information about files that are open by the processes running on the system.
lsscsi List SCSI devices or hosts, and their attributes Uses information in sysfs to list scsi devices (or hosts) currently attached to the system. Options can be used to control the amount and form of information provided for each device.
man Format and display the on-line manual pages The man package is a collection of tools used for searching and reading the online system documentation. In fact, on most UNIX-like operating systems it is the primary means of finding out how programs on the system work. For example, 'man man' will display the documentation for man itself. Man requires the groff text processing package.
man-pages System documentation Man pages are online documentation for Linux. This package includes many section 1, 2, 3, 4, 5, 7, and 8 man pages for Linux.
mc Midnight Commander file manager The Midnight Commander is a Norton Commander clone, a program that manipulates and manages files and directories. Useful, fast, and has color displays on the Linux console. Mouse support is provided through the gpm mouse server. This is a lightweight compilation of mc for use on the text console or in an xterm.
most Another pager, like 'more' and 'less' most is a paging program that displays, one windowful at a time, the contents of a file on a terminal. Unlike other well-known paging programs, most supports multiple windows and can scroll left and right. Why settle for less?
screen Screen manager with VT100/ANSI terminal emulation Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and several control functions from the ISO 6492 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows.
sudo Give limited root privileges to certain users 'sudo' is a command that allows users to execute some commands as root. The /etc/sudoers file (edited with 'visudo') specifies which users have access to sudo and which commands they can run. 'sudo' logs all its activities to /var/log/ so the system administrator can keep an eye on things.
sysstat System performance monitoring tools The sysstat utilities are a collection of performance monitoring tools for Linux. These include sar, sadf, mpstat, iostat and sa tools.
texinfo GNU software documentation system 'Texinfo' is a documentation system that uses a single source file to produce both on-line information and printed output. Using Texinfo, you can create a printed document with the normal features of a book, including chapters, sections, cross references, and indices. From the same Texinfo source file, you can create a menu-driven, on-line Info file with nodes, menus, cross references, and indices. This package is needed to read the documentation files in /usr/info.
vim Vi IMproved Vim is an almost compatible version of the UNIX editor vi. Many new features have been added: multi level undo, command line history, filename completion, block operations, and more. Vim's development is led by Bram Moolenaar. This package also contains the Exuberant Ctags program written by Darren Hiebert.
xfsdump Backup tools for the XFS filesystem The xfsdump package contains the xfsdump and xfsrestore utilities for backing up and restoring XFS partitions. xfsdump examines files in a filesystem, determines which need to be backed up, and copies those files to a specified disk, tape or other storage medium. xfsrestore performs the inverse function of xfsdump; it can restore a full or incremental backup of a filesystem.


Package group [D]

Package Short Description Long Description
autoconf Generate configuration scripts GNU autoconf is an extensible package of m4 macros that produce shell scripts to automatically configure software source code packages. These scripts can adapt the packages to many kinds of UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that lists the operating system features that the package can use, in the form of m4 macro calls. You must install the "m4" package to be able to use autoconf.
automake A Makefile generator This is Automake, a Makefile generator. It was inspired by the 4.4BSD make and include files, but aims to be portable and to conform to the GNU standards for Makefile variables and targets. Automake is a Perl script. The input files are called The output files are called; they are intended for use with Autoconf. Automake requires certain things to be done in your You must install the "m4" and "perl" packages to be able to use automake.
binutils GNU binary development tools Binutils is a collection of binary utilities. It includes "as" (the portable GNU assembler), "ld" (the GNU linker), and other utilities for creating and working with binary programs. These utilities are REQUIRED to compile C, C++, Objective-C, Fortran, and most other programming languages.
bison Parser generator similar to yacc GNU "Bison" is a general-purpose parser generator that converts a grammar description for an LALR(1) context-free grammar into a C program to parse that grammar. Bison is upward compatible with Yacc: all properly-written Yacc grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with little trouble.
doxygen Documentation generator Doxygen is a documentation system for C++, C, Java, IDL, and to some extent PHP and C#. Doxygen generates project documentation using special documentation blocks in the source code, easing the process of keeping docs and code in sync. Doxygen produces documentation in several output formats, including HTML, LaTeX, man pages, RTF, XML, compressed HTML, PostScript, and PDF.
flex fast lexical analyzer generator flex is a tool for generating programs that perform pattern matching on text. flex is a rewrite of the AT&T Unix lex tool (the two implementations do not share any code, though), with some extensions (and incompatibilities).
gcc Base GCC package with C support This package contains those parts of the compiler collection needed to compile C code. Other packages add C++, Fortran, Objective-C, and Java support to the compiler core.
gcc-g++ C++ for GCC C++ support for the GNU Compiler Collection. This package contains those parts of the compiler collection needed to compile C++ code. The base gcc package is also required.
gettext-tools --- The GNU gettext-tools package is useful for authors and maintainers of internationalized software, or for anyone compiling programs that use the gettext functions. This package provides the needed tools and library functions for the handling of messages in different languages. Some other GNU packages use the gettext program (included in this package) to internationalize the messages given by shell scripts.
kernel-headers Linux kernel include files These are the include files from the Linux kernel. You'll need these to compile most system software for Linux.
libtool A generic library support script This is GNU Libtool, a generic library support script. Libtool hides the complexity of using shared libraries behind a consistent, portable interface. To use libtool, add the new generic library building commands to your Makefile,, or See the documentation for details. You must install the "m4" package to be able to use libtool.
m4 An implementation of the UNIX macro processor This is GNU m4, a program which copies its input to the output, expanding macros as it goes. m4 has built-in functions for including named files, running commands, doing integer arithmetic, manipulating text in various ways, recursion, etc... Macros can also be user-defined, and can take any number of arguments.
make GNU make utility to maintain groups of programs This is the GNU implementation of make, which was written by Richard Stallman and Roland McGrath. The purpose of the make utility is to determine automatically which pieces of a large program need to be recompiled, and issue the commands to recompile them. This is needed to compile just about any major C program, including the Linux kernel.
perl Practical Extraction and Report Language Larry Wall's "Practical Extraction and Report Language". Perl is a language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal).
pkg-config --- pkg-config is a system for managing library compile/link flags that works with automake and autoconf. It replaces the ubiquitous *-config scripts you may have seen with a single tool. See the man page that comes with pkg-config for full documentation.


Package group [F]

Package Short Description Long Description
linux-faqs Linux FAQ collection from Frequently Asked Questions (and answers!) on many Linux topics. Some of the FAQs included in this package: ATAPI-FAQ, AfterStep-FAQ, BLFAQ (Brief Linux FAQ), Ftape-FAQ, GCC-SIG11-FAQ, Joe-Command-Reference, the Linux-FAQ, PPP-FAQ, SMP-FAQ, and the Threads-FAQ. These FAQs will be installed under /usr/doc/Linux-FAQs/.
linux-howtos HOWTOs from the Linux Documentation Project Documentation on many tasks relating to Linux setup and operation. These documents will be installed in /usr/doc/Linux-HOWTOs/.


Package group [K]

Package Short Description Long Description
kernel-source Linux kernel source Source code for Linus Torvalds' Linux kernel. This is the complete and unmodified source code for the Linux kernel.




Package group [L]

Package Short Description Long Description
db42 Berkeley database library version 4.2.x The Berkeley Database (Berkeley DB) library provides embedded database support for both traditional and client/server applications. This package should be installed if compatibility is needed with databases created with the Berkeley DB version 4.2.x.
db44 Berkeley database library version 4.4.x The Berkeley Database (Berkeley DB) library provides embedded database support for both traditional and client/server applications. This package should be installed if compatibility is needed with databases created with the Berkeley DB version 4.4.x.
gdbm GNU database routines GNU dbm is a set of database routines that work similar to the standard UNIX dbm routines.
glibc GNU C libraries This package contains the GNU C libraries and header files. The GNU C library was written originally by Roland McGrath, and is currently maintained by Ulrich Drepper. Some parts of the library were contributed or worked on by other people. You'll need this package to compile programs.
glibc-i18n locale files from glibc These files go in /usr/lib/locale and /usr/share/i18n/ to provide internationalization support. You'll need this package unless you will be using US English only.
libusb USB library This is libusb, a library which allows userspace application access to USB devices. It is used to connect to USB devices like scanners.
lzo LZO Compression Library LZO is a portable lossless data compression library written in ANSI C. It offers pretty fast compression and very fast decompression.
ncurses --- The ncurses (new curses) library is a free software emulation of curses in System V Release 4.0, and more. It uses terminfo format, supports pads and color and multiple highlights and forms characters and function-key mapping, and has all the other SYSV-curses enhancements over BSD curses.
pcre Perl-compatible regular expression library The pcre library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5, with just a few differences (documented in the man page).
popt Command line parsing library popt is a C library for parsing command line parameters. popt was heavily influenced by the getopt() and getopt_long() functions, but it improves on them by allowing more powerful argument expansion. popt can parse arbitrary argv[] style arrays and automatically set variables based on command line arguments. popt allows command line arguments to be aliased via configuration files and includes utility functions for parsing arbitrary strings into argv[] arrays using shell-like rules.
readline line input library with editing features The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions to maintain a list of previously entered command lines, to recall and perhaps edit those lines, and perform csh-like history expansion on previous commands.
zlib Compression library zlib is a general purpose thread safe data compression library.


Package group [N]

Package Short Description Long Description
bitchx Chat client BitchX is an advanced Internet Relay Chat (IRC) client.
dhcpcd DHCP client daemon The DHCP client program dhcpcd is used to connect to a network by contacting a DHCP server. dhcpcd gets an IP address and other information from a corresponding DHCP server, configures the network interface automatically, and tries to renew the lease time according to RFC2131 or RFC1541 depending on the command line option.
inetd Internet super-server This is a program to listen for connections on certain Internet sockets and invokes a program to service the request. Essentially, inetd allows running one daemon to invoke several others, reducing load on the system. Many of the network services are run through inetd, so you'll probably need it. This version of inetd was ported from OpenBSD.
iproute2 IP routing utilities These are tools used to administer many advanced IP routing features in the kernel. See in the kernel documentation (search for iproute2) for more information on which kernel options these tools are used with.
iptables IP packet filter administration Iptables can be used to build internet firewalls based on stateless and stateful packet filtering, use NAT and masquerading for sharing internet access if you don't have enough public IP addresses, use NAT to implement transparent proxies, aid the tc and iproute2 systems used to build sophisticated QoS and policy routers, do further packet manipulation (mangling) like altering the TOS/DSCP/ECN bits of the IP header, and much more.
iptraf --- IPTraf is a console-based network monitoring program for Linux that displays information about IP traffic such as: Current TCP connections, types of IP packets, packet and byte counts, TCP/UDP counts by ports, packet counts by packet sizes, packet and byte counts by IP address, interface activity, flag statuses on TCP packets, and other LAN station statistics.
iputils a collection of common network tools The iputils package contains network tools found on nearly all *NIX systems, along with an extra or two. Some of the utilities found here include arping, clockdiff, ping, ping6, rarpd, rdisc, tracepath, tracepath6, and traceroute6.
lftp Command line file transfer program lftp is a program that allows sophisticated ftp and http connections to other hosts. lftp can handle many file access methods including ftp, ftps, http, https, hftp, fish and file. Every operation in lftp is reliable, that is any non-fatal error is ignored and the operation is retried. lftp has shell-like command syntax. lftp has a built in mirror feature which can download or upload a whole directory tree. To learn about many more features of lftp, see 'man lftp'.
libgcrypt General purpose crypto library libgcrypt is a general purpose crypto library based on the code used in GnuPG.
libgpg-error GnuPG Error Definitions Library This is a library that defines common error values for all GnuPG components. Among these are GPG, GPGSM, GPGME, GPG-Agent, libgcrypt , Libksba, DirMngr, Pinentry, SmartCard Daemon, and more.
lynx Text mode browser Lynx is a distributed hypertext browser with full World Wide Web capabilities. Lynx can be used to access information on the World Wide Web, or to build information systems intended primarily for local access. For example, Lynx has been used to build several Campus Wide Information Systems (CWIS).
mtr A network diagnostic tool mtr combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool.
net-tools Base Linux networking utilities This is the core collection of tools such as "ifconfig" and "route" used to configure networking on Linux. You won't be able to do much networking without this package and the network-scripts.
netkit-ftp The old BSD FTP client Ftp is the user interface to the Internet standard File Transfer Protocol. The program allows a user to transfer files to and from a remote network site. This is a program of mostly historical value. For a more powerful command-line FTP client, look at something like lftp.
netket-rsh The BSD rsh/rcp/rlogin clients and daemon The old BSD rsh suite. Note that none of these programs provide encryption or strong authentication of network connections. As such, their use is discouraged. The "ssh" protocol and package is a cryptographically secure replacement.
netwatch --- Netwatch allows a user (superuser) to monitor activity on the network. The monitor includes statistics on transmitted and received packets, bytes, protocol, and more.
network-scripts Scripts to configure a network These are the basic scripts and files used to define a network and configure network interfaces on Linux. Most of the original /etc files were written by Fred N. van Kempen, or borrowed from BSD. The rc.inet1 and rc.inet2 scripts were mostly written by Patrick Volkerding, with suggestions and fixes from hundreds of contributors over the years.
nmap Network scanner Nmap ("Network Mapper") is an open source utility for network exploration or security auditing. It was designed to rapidly scan large networks, although it works fine against single hosts. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (ports) they are offering, what operating system (and OS version) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. Nmap runs on most types of computers, and both console and graphical versions are available.
ntp Network Time Protocol daemon The Network Time Protocol (NTP) is used to synchronize the time of a computer client or server to another server or reference time source, such as a radio or satellite receiver or modem. It provides client accuracies typically within a millisecond on LANs and up to a few tens of milliseconds on WANs relative to a primary server synchronized to Coordinated Universal Time (UTC) via a Global Positioning Service (GPS) receiver, for example.
openssh Secure Shell daemon and clients ssh (Secure Shell) is a program for logging into a remote machine and for executing commands on a remote machine. It is intended to replace rlogin and rsh, and provide secure encrypted communications between two untrusted hosts over an insecure network. sshd (SSH Daemon) is the daemon program for ssh.
openssl Secure Sockets Layer toolkit The OpenSSL certificate management tool and the shared libraries that provide various encryption and decryption algorithms and protocols.
tcp_wrappers TCP/IP daemon wrapper library and utilities With this package you can monitor and filter incoming requests for network services for access control, and detection things like host name spoofing and host address spoofing. Nearly all the network daemons on Slackware are "wrapped" using this library, and most daemons in /etc/inetd.conf use tcp_wrappers' tcpd wrapper daemon. If you plan to do much networking, you will need tcp_wrappers.
telnet The telnet client and daemon telnet supports the original DARPA telnet interactive communication protocol. As connecting to a telnetd server transmits your password over the network in cleartext, telnet's use as a login protocol has been mostly superceded by the use of ssh and sshd. However, the telnet client is still a very handy tool, and telnetd may still have some uses on networks that are known to be secure. telnet and telnetd were ported from BSD.
traceroute IP packet route tracing utility The traceroute utility displays the route used by IP packets on their way to a specified network host. Traceroute will display the IP number and host name (if possible) of all the machines along the route taken by the packets. If you're having network connectivity problems, traceroute can show you where the trouble is located.
wget A non-interactive network retriever GNU Wget is a free network utility to retrieve files from the World Wide Web using HTTP and FTP, the two most widely used Internet protocols. It works non-interactively, thus enabling work in the background after having logged off.
whois whois directory client This is an enhanced whois (RFC 954) client derived from the BSD and RIPE whois programs. It can automatically select the appropriate whois server for most queries.
wireless-tools Utilities for wireless networking This package contains tools and a library used for configuring wireless networking interfaces: iwconfig (the main wireless tool), iwlist (display more detailed information than iwconfig), iwspy (get stats per MAC address and more), iwpriv (set driver private ioctls), iwgetid (show the ESSID or NWID of a device), iwevent (display wireless events), ifrename (rename a network interface).
wpa_supplicant WPA/WPA2/IEEE 802.1X Supplicant wpa_supplicant is a WPA Supplicant for Linux with support for WPA and WPA2 (IEEE 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in the client stations. It implements key negotiation with a WPA Authenticator and it controls the roaming and IEEE 802.11 authentication/association of the wlan driver.


How to install this minimal system

You only need the first Slackware CD to do this.

  • Install Slackware as you would do normally.
  • In the PACKAGE SERIES SELECTION screen, select package sets A, AP, D, F, K, L and N.

Now you have two choices:

  • Manual selection: at the next screen (SELECT PROMPTING MODE), choose the expert option, and manually select (or unselect) every single package.
  • Using tagfiles: this method is described in detail here. I provide a set of tagfiles which spares you the chore of manual package selection. You can download it here.