Slackware-Minimal Install

From LQWiki
Jump to: navigation, search

Slackware-Minimal Install

This page will attempt to outline the packages needed for a minimal install for a usable system. This is in no way meant to be the absolute minimum as this would vary greatly upon what you needed it to do. This page should be used as an example only. No warranty is given to its functionality in your situation and, as always, the official recommendation for Slackware is a FULL INSTALL.


Basic Slackware

Originally suggested on slackware-14/minimal-install-753128


Packages marked with an asterisk are packages that some users may still choose to omit even though the Slackware installer describes them as "Required." For example many users may never use crond or elvis but Slackware has deemed them important enough to be "Required". Also note, that many people would believe that 'gawk' is important enough to be marked as "Required", but it is not marked as such by the Slackware installer. It is strongly recommended you included acl, attr, and cxxlibs. While they may not be needed to boot the system, they are required by even the most basic of tools to do anything productive on your system at all.

For additional information on suggested packages, the package tree contains a "maketag" script that the installer uses to provide a short descriptive list of packages for the user to toggle on and off. There is also a "tagfile" in each directory that has all the packages marked as either ADD, REC(omended), OPT(ional), or SKP. Which is not accounted for in the lists below.


Required

These packages are flagged as "Required" by the Slackware installer as of Slackware 13.0.

  • a/aaa_base
  • a/aaa_elflibs
  • a/acl
  • a/attr
  • a/bash
  • a/bin
  • a/coreutils
  • a/cxxlibs
  • a/dcron *
  • a/devs
  • a/e2fsprogs
  • a/elvis *
  • a/etc
  • a/grep
  • a/gzip
  • a/kernel-firmware *
  • a/kernel-modules[-smp]
  • a/less *
  • a/module-init-tools
  • a/openssl-solibs
  • a/pkgtools
  • a/procps
  • a/sed
  • a/shadow
  • a/sharutils *
  • a/sysvinit
  • a/sysvinit-scripts
  • a/tar
  • a/util-linux-ng
  • a/xz

Recommended

These packages are flagged as "recommended" by the Slackware installer

  • a/udev

Optional

These packages are flagged as "optional" by the Slackware installer

  • a/getty-ps *! (alternate utility included in util-linux-ng)

User Recommended

These packages are additionally recommended by users to provide a more usable system.

Note! Packages marked with an exclamation point contain libs and or binaries required by other packages. The following substitutions can be made if what you are using has the needed support compiled into the program: n/openssl with a/openssl-solibs, l/glibc with a/glibc-solibs, all others with a/aaa_elfslibs.

  • a/aaa_terminfo
  • a/bzip2 !
  • a/dialog
  • a/findutils
  • a/gawk
  • a/kernel-huge
  • a/logrotate
  • a/sysklogd
  • a/sysvinit-functions
  • a/which
  • ap/diffutils
  • ap/slackpkg
  • l/glibc !
  • n/dhcpcd
  • n/gnupg
  • n/iputils
  • n/net-tools
  • n/network-scripts
  • n/openssh !
  • n/wget

X Windows

Originally suggested on LQ - slackware-14/minimal-x-install-762485

The following list is entirely subjective and may not be a complete list of what is required for your situation.

WARNING: This list is based upon Slackware 13.0 and my not reflect accuracy with previous (or future) x versions.

Note! Packages marked with an exclamation point contain the required lib for the main package and the ability to compile new programs with those libs. If you do not need to compile on your base system the following substitutions can be made:

  • n/openssl - a/openssl-solibs - save 10MB
  • l/glibc - a/glibc-solibs - save 100MB
  • all others - a/aaa_elfslibs - contains about 50 different libs in 10MB with no headers or documentation.

Packages marked with an asterisk may not be needed under certain configurations.

Please note, that while you could go through the x/ directory and remove some of the 'worthless' apps and more useful but rarely needed tools, you are only going to save about 100MB. Your time would be better spent just going through the xap/ directory deciding what you don't need.


Required xorg-server

The following packages contain libs that are directly linked to xorg-server.

  • l/freetype !
  • l/glibc !
  • l/zlib !
  • n/openssl !
  • x/libXau
  • x/libXdmcp
  • x/libXfont
  • x/libdrm
  • x/libfontenc
  • x/libpciaccess
  • x/pixman
  • x/xorg-server

sdl

The xorg-server is linked against sdl and is in turn linked to the following extra packages.

  • l/alsa-lib !
  • l/libjpeg !
  • l/libpng !
  • l/libtiff !
  • l/sdl
  • l/svgalib !
  • x/libX11
  • x/libXext
  • x/libXrandr
  • x/libXrender

hal

More than likely, you will want hal enabled. The following is a list of packages containing libs directly linked to hal. Hal and dbus are also directly linked to the xorg-server.

  • a/dbus
    • x/libX11
    • x/libICE
    • x/libSM
    • x/libxcb
  • a/e2fsprogs - FULL package for libuuid.so
  • a/udev
  • l/glibc !
  • l/dbus-glib
  • l/expat !
  • l/glib2 !
  • l/hal
  • l/hal-info - not linked in but probably very helpful
  • l/parted
    • a/device-mapper !
    • l/readline !
    • l/ncurses !
  • l/libusb !
    • a/cxxlibs (d/gcc-g++ libstdc++.so)
    • d/gcc !
  • l/zlib !

Highly Recommended

This list contains the extra packages required to start the xorg server with 'startx.' This section needs a lot of work and optimization.


Needed by startx and xauth

  • a/e2fsprogs - FULL package for libuuid.so
  • x/libICE
  • x/libSM
  • x/libX11
  • x/libXext
  • x/libXmu
  • x/libXt
  • x/libxcb
  • x/twm * - the most basic window manager.
  • x/xauth
  • x/xinit




Original List

  • bdftopcf
  • bitmap
  • encodings
  • font-adobe-100dpi
  • font-adobe-75dpi
  • font-alias
  • font-bitstream-100dpi
  • font-bitstream-75dpi
  • font-bitstream-speedo
  • font-bitstream-type1
  • font-cursor-misc
  • font-micro-misc
  • font-misc-misc
  • font-util
  • fonttosfnt
  • fslsfonts
  • fstobdf
  • iceauth
  • libXaw
  • libXcomposite
  • libXcursor
  • libXevie
  • libXfixes
  • libXfontcache
  • libXft
  • libXi
  • libXmu
  • libXp
  • libXpm
  • libXres
  • libXt
  • libXv
  • libXxf86misc
  • liblbxutil
  • liboldX
  • libxkbfile
  • libxkbui
  • xbitmaps
  • xcursor
  • xcursorgen
  • xf86-video-vesa
  • xinit
  • xkbcomp
  • xkbdata
  • xorg-cf-files


Commonly Needed for Window Managers

Fluxbox

  • a/cxxlibs (d/gcc-g++ libstdc++.so)
  • x/libXft
  • x/libXinerama
  • x/libXpm
  • x/libXrandr
  • x/libXrender
  • x/fontconfig

Hardware Dependent

Obviously, the bare minimum for video would be the vesa driver, but this may not suit your needs.

  • xf86-video-fbdev - Not in 13.0!
  • xf86-video-nv - Nvidia 2D accelerated driver.
  • xf86-video-vga - Not in 13.0!
  • xf86-input-keyboard
  • xf86-input-mouse

Recommended

Just extra packages recommended by other users.

  • xdpyinfo
  • xrandr
  • xrdb
  • xterm
  • xprop
  • xset
  • xsetroot
  • xgamma
  • xconsole
  • mkfontdir
  • mkfontscale
  • sessreg
  • setxkbmap
  • xauth
  • xkill
  • xmessage
  • xmodmap

LAMP and server extras

These lists may be incomplete and may be missing required libs or packages. These lists were determined through using 'objdump -x' on all binary files included in the core LAMP packages.


Note! Packages marked with an exclamation point contain the required lib for the main package and the ability to compile new programs with those libs. If you do not need to compile on your base system the following substitutions can be made:

  • n/openssl - a/openssl-solibs - save 10MB
  • l/glibc - a/glibc-solibs - save 100MB
  • all others - a/aaa_elfslibs - contains about 50 different libs in 10MB with no headers or documentation.


apache

  • a/e2fsprogs
  • l/apr - apache runtime
  • l/apr-util - utilities
  • l/db44 !
  • l/expat !
  • l/glibc !
  • l/pcre !
  • l/zlib !
  • n/cyrus-sasl
    • l/gdbm !
  • n/openldap-client !
  • n/openssl !
  • n/httpd - daemon

mysql

  • ap/mysql
  • l/glibc !
  • l/ncurses !
  • l/zlib !
  • n/openssl !


php

Dependencies of dependencies that are directly required from the main package have been omitted from the sub tree. These dependencies are for the stock Slackware packages.

To remove the X11 dependencies, you MAY have luck recompiling php and using "--without-t1lib". Also note that this package appears to have problems compiling under a multilib environment.

  • a/bzip2 !
  • ap/mysql - needs only libmysqlclient.so
  • d/libtool
  • l/aspell
    • l/ncurses !
  • l/db44 !
  • l/freetype !
  • l/gdbm !
  • l/glibc !
  • l/gmp !
  • l/libidn !
  • l/libjpeg !
  • l/libmcrypt
  • l/libpng !
  • l/mhash
  • l/mm !
  • l/pcre !
  • l/t1lib
    • x/libXmu
      • x/libXext
      • x/libXt
    • and the other X11 libs in this tree.
  • l/libxml2
  • l/libxslt
    • l/libgcrypt
    • n/libgpg-error
  • l/zlib !
  • n/curl !
  • n/openldap-client !
  • n/openssl !
  • n/net-snmp
  • n/php
  • x/libX11
    • x/libXau
    • x/libXdmcp
    • x/libxcb
  • x/libXpm
    • x/libICE
    • x/libSM

perl

  • ap/mysql - needs only libmysqlclient.so.
  • d/perl
  • l/glibc !
  • l/db44 !
  • l/expat !
  • l/gdbm !
  • l/zlib !
  • n/openssl !


Additional Packages

These packages are not included in the core distribution of Slackware but may be needed for a specific purpose.

  • mod_perl - needed by Apache to execute perl scripts as cgi script.


Checking Dependencies

The following are some tricks you can use to check the dependencies of binaries installed on your system.

ldd

Installed on every system, it will print shared library dependencies for a binary file.

ldd <path to binary> | gawk '{print $2

tracepkg

This is a bash script that will use ldd on all files listed in /var/log/packages http://www.slacky.eu/~absinthe/

objdump

Another method for finding similar information, would be to use objdump. It prints more information about the binary than ldd and we have to grep/sed/gawk a lot of it. It also appears that ldd will print more linked libraries than objdump.

Find the shared libraries 'NEEDED' by a particular binary file

objdump -x $BINARY_FILE | grep NEEDED

Find all the files in a directory that depend upon a particular shared library.

SHARED_LIB=example.so

for FILE in $(find -type f); do
    objdump -x $FILE 2> /dev/null | grep $SHARED_LIB > /dev/null 2>&1 && echo $FILE
done

Find the dependencies for all files listed in a file. e.g. The package log files in /var/log/packages.

#!/bin/bash
# finddepend

FILE_LIST=$1
# Environment variable signifying if this is a slackware package log file.
PKGLOG=${PKGLOG:-1}

# Define the root if you intend to search the currently running system.  Else
# it will check your home directory.
ROOT=${ROOT:-$PWD}

LOG=${LOG:-/dev/null}

if [ -f $FILE_LIST ]; then
    DEL_LINES=""
    if [ $PKGLOG -eq 1 ]; then
        DEL_LINES="1,$(grep -x -n FILE\ LIST\: $FILE_LIST | gawk -F: '{print $1}')d"
    fi

    # Sneeky substitution that may or may not occure based on PKGLOG.
    # -e "" will match all lines in the file.
    # -e "1,##d" will be decided if PKGLOG is 1.
    for FILE in $(sed -e "$DEL_LINES" $FILE_LIST); do
        # Output the name of the current file if we find our specified library
        # mentioned in the object dump of the current file.
        if [ -f $ROOT/$FILE ]; then
            objdump -x $ROOT/$FILE 2> /dev/null | grep NEEDED
        fi
    done
else
   echo "Error: no filename given." 1>&2
fi


Put the previous into a script or function called finddepend then do the following to get a list of packages containing the libs you need.

#!/bin/bash
# falldep

PKGFILE=$1

for FILE in $(ROOT="/" finddepend $PKGFILE | sort -u | gawk '{print $2}'); do
    # If all you see for a particular library file is the following line, then you will have to do a manual search.  There are a few
    # libs that will show up in the packages as libname-version.so.
    echo "$FILE is found in:"
     # This truncates the version numbers of of the lib name
    SEARCH_FILE=$(echo $FILE | gawk -F. '{print $1"\\.so"}')
    grep $SEARCH_FILE /var/log/packages/*;
    echo "";
done