Here's where we'll document the installation of miscellaneous small software packages.
Note that some of these packages may get installed during the installation of the OS, depending on the revision and the options selected. Packages that we've seen get installed include mailx
, lsof
, less
, w3m
, telnet
, bc
, file
, nano
, and at
.
The chkconfig
command is used to set up the soft links in /etc/rc*.d directories, based on special comments in the startup scripts. The Debian update-rc.d
command does the same thing as chkconfig
, but chkconfig
is more standard across various distributions.
sudo apt-get install chkconfig
We prefer to use the service
command, which provides a simple way to stop and start services. It's the same as running the startup scripts in /etc/init.d
manually, but with a nicer interface (and better command-line completion). Using service
is now the preferred way to start and stop services in most Linux distros, including RHEL. Debian Squeeze (6.0) includes the service
command in the sysvinit-utils
package. In previous versions, the service
command was in the insserv
package.
sudo apt-get install sysvinit-utils
The lsb-release
package (including the lsb_release
command) lets scripts determine which version of which distro they're running on.
sudo apt-get install lsb-release
The locate
program is great for finding files on the system, without find
having to search through a bunch of directories. Debian 5.0 and newer prefers use of the mlocate variant.
sudo apt-get install mlocate sudo /etc/cron.daily/mlocate &
This resolves some issues with Perl complaining about LC_ALL
/LANG
/LANGUAGE
when using en_US.UTF-8
encoding.
sudo apt-get install locales locales-all
This program provides a TUI-based utility to configure init files for various runlevels.
sudo apt-get install sysv-rc-conf
This package is used by several web and email packages (Apache and PINE).
sudo apt-get install mime-support
We'll need OpenSSL and certificate management packages for web and email later (Apache and Postfix).
sudo apt-get install openssl ssl-cert ca-certificates
The psmisc
package includes some useful tools, including pstree
, killall
, and fuser
.
sudo apt-get install psmisc
The lsof
program list files (and sockets) that are open, and which processes are using them.
sudo apt-get install lsof
The htop
program is an enhanced version of top
.
sudo apt-get install htop
The strace
program allows you to trace all the system calls that a program calls. The ltrace
program is similar, but traces library calls.
sudo apt-get install strace ltrace
The iotop
program allows you to monitor I/O with an interface similar to top
.
sudo apt-get install iotop
The sysstat
package includes sar
, iostat
, and mpstat
, programs used to more closely monitor system performance. Note that I've not yet enabled sa1
to run from cron; I'll need to edit /etc/default/sysstat
to enable that.
sudo apt-get install sysstat
The checkinstall
command lets you easily install packages from sources, and keeps the installation info in the packaging system, so that it can be easily uninstalled. To use it, you generally just build the software then run sudo checkinstall make install
.
#sudo apt-get install checkinstall # Not installed in Squeeze, due to too many dependencies.
The mail
command line utility is not installed by default, causing several scripts that rely on it to fail. Previously, we used the mailx
variant, which is in the bsd-mailx
package in Debian Squeeze (6.0). For Debian Squeeze, we chose to go with the GNU mailutils
package instead. It works with a wider range of mail sources, including Maildir folders, and even IMAP. The package also includes the movemail
command and a sieve
client for configuring mail filters over the SIEVE protocol.
NOTE: Wait until after installing Postfix to install this; otherwise, it will force exim4 to be installed.
sudo apt-get install mailutils
Everyone has their preferred text editor. For servers, we ensure that nano and vim are available.
sudo apt-get install nano sudo apt-get install vim vim-doc sudo apt-get install less sudo apt-get install pinfo
Midnight Commander is a TUI-based file manager. It comes in handy on occasion.
sudo apt-get install mc
sudo apt-get install bzip2 sudo apt-get install unzip zip
sudo apt-get install curl sudo apt-get install links sudo apt-get install lynx-cur # Newer release of lynx sudo apt-get install ncftp sudo apt-get install lftp sudo apt-get install rsync sudo apt-get install tidy tidy-doc sudo apt-get install elinks elinks-doc sudo apt-get install w3m
Tcpdump is a good tool for monitoring packets going across the wire. It's helpful when troubleshooting network protocol issues.
sudo apt-get install tcpdump
Telnet is no longer good for connecting to remote systems to get shell access. (Always use SSH for remote shell access.) However, it's good for connecting to other ports to test network connectivity. (For example, it's the easiest way to test low-level SMTP functionality.)
sudo apt-get install telnet
The mtr
program is an enhanced version of traceroute
, with some additional features. We want the "tiny" variant, which does not require X11.
sudo apt-get install mtr-tiny
ZModem isn't used much any more, but it can be used to send files across an existing SSH (or any other pty) connection. The lrzsz
package supports ZModem – use the rz
command to receive a file. KDE's Konsole provides good ZModem upload support.
sudo apt-get install lrzsz
NOTE: There are a ton of -dev
packages that we could install. Unless we find a development "super-package", we'll have to install them as-needed.
sudo apt-get install build-essential sudo apt-get install make autoconf automake autoconf-doc libtool libtool-doc # NOTE: make-doc was suggested by make, but does not exist. sudo apt-get install flex bison m4 # NOTE: bison-doc was suggested by bison, but does not exist. sudo apt-get install diff diff-doc patch sudo apt-get install gnu-standards sudo apt-get install manpages-dev sudo apt-get install linux-kernel-headers sudo apt-get install binutils-doc glibc-doc # NOTE: gcc-doc and cpp-doc were suggested by build-essential, but do not exist. sudo apt-get install libc6-dev sudo apt-get install gdb # NOTE: gdb-doc was suggested by gdb, but does not exist.
These are various source code management (SCM) packages.
sudo apt-get install cvs sudo apt-get install subversion subversion-tools sudo sed -e 's/^# global-ignores.*$/global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store/' \ -i /etc/subversion/config sudo apt-get install git-core git-doc git-svn
sudo apt-get install perl perl-modules perl-doc
We want to install "headless" JRE, so that we don't need X11 libraries. It'd be nice to have Java 7 in addition to Java 6, but Debian 6 does not have Java 7 packages available. We'd like to install the JDK, but it requires X11 for some reason, so we'll do all our development and compiling on our desktops.
sudo apt-get install openjdk-6-jre-headless openjdk-6-doc sudo sh -c 'cat > /etc/profile.d/java.sh' <<EOF JAVA_HOME='/usr/lib/jvm/java-6-openjdk' export JAVA_HOME EOF
Install nearly every shell known to UNIX-kind.
sudo apt-get install ksh sudo apt-get install tcsh sudo apt-get install csh sudo apt-get install zsh zsh-doc
We're going to install a couple email clients, for those who like to read email via a TUI.
sudo apt-get install mutt sudo apt-get install nmh
The following is used to force automatic logouts for shells that are not within an X session, for security purposes. This can also be done from the SSH daemon.
sudo sh -c 'cat > /etc/profile.d/autologout.sh' << EOF # Automatically logout after 30 minutes idle at command prompt (unless in X). if [ -z "$DISPLAY" ]; then TMOUT=1800 readonly TMOUT export TMOUT fi EOF sudo sh -c 'cat > /etc/profile.d/autologout.csh' << EOF # Automatically logout after 30 minutes idle at command prompt (unless in X). if ( ! $?DISPLAY ) then set -r autologout=30 endif EOF
sudo apt-get install python
GNU Privacy Guard is a clone of PGP. The command-line utility is called gpg
and the package is called gnupg
.
sudo apt-get install gnupg
sudo apt-get install doc-base
sudo apt-get install tree
The bc
calculator is for doing simple math. (It's recommended to always start it with the -l
option.)
sudo apt-get install bc
Deferred execution scheduler to supplement cron.
NOTE: Wait until after installing Postfix to install this; otherwise, it will require exim4 to be installed.
sudo apt-get install at
The ack
command is a nice replacement for grep
. It does the "right thing" in many ways better than grep – ignores non-text files, backup files, SVN/GIT repositories, etc. For Debian 5.0+ systems, we can simply install the package, but we make a link to make it available as ack
.
sudo apt-get install ack-grep sudo ln -s /usr/bin/ack-grep /usr/local/bin/ack sudo mkdir -p /usr/local/share/man/man1 sudo ln -s /usr/share/man/man1/ack-grep.1p.gz /usr/local/share/man/man1/ack.1p.gz
We've created some custom system administration scripts to make things easier for ourselves. We keep them on GitHub, but we'll download them as a ZIP file for simplicity's sake.
wget https://github.com/boochtek/sysadmin/archive/master.zip -O sysadmin.zip unzip sysadmin.zip sudo install -m 755 sysadmin-master/sbin/* /usr/local/sbin/
sa1
to run from cron; edit /etc/default/sysstat
to enable that.