# Chapter 40. Software Installation

#### Contents:

/usr/bin and Other Software Directories
The Challenges of Software Installation on Unix
Which make?
Simplifying the make Process
Using Debian's dselect
Installing Software with Debian's Apt-Get
Interruptable gets with wget
The curl Application and One-Step GNU-Darwin Auto-Installer for OS X
Installation with FreeBSD Ports
Installing with FreeBSD Packages
Finding and Installing RPM Packaged Software

## 40.1. /usr/bin and Other Software Directories

The location for certain types of installed files is very important. For instance, on many Unix systems, binary files accessible by users are located in the subdirectory /usr/bin or /usr/local/bin. If the applications aren't in these places, they may not be in the PATH environment variable and not easily accessible from the command line.

On my FreeBSD system, I've installed a utility called `dos2unix`, a file-formatting application that converts DOS newline character combinations to the Unix newline character. I used the FreeBSD Ports system to install the application, which automatically placed the program in my application directory, in my case /usr/local/bin. When I want to execute the application, I can run it from the command line without having to provide the location of the file:

>     dos2unix some.txt > new.txt

This command reformats the newline character of the contents of some.txt, converting DOS linebreaks to Unix ones.

The /usr/bin subdirectory differs from the /bin directory located directly off of the main root directory. The /bin directory has basic installed binaries built into the Unix operating system, with commands such as cd to change directory and so on. When you install an optional software application, it should not install software in the top-level binary subdirectory, but in /usr/bin, instead.

According to the Filesystem Hierarchy Standard (FHS), subdirectories (Linux- and BSD-specific) shown in Table 40-1 are located directly off the root directory within a standardized directory hierarchy.

#### Table 40-1. FHS root subdirectories

Subdirectory | Contents
--- | ---
bin | Application binaries
boot | Boot loader static files
dev | Device files
etc | System configuration files
lib | Shared libraries and kernel modules
mnt | Temporary mounting point for filesystems such as CD-ROMs
opt | Larger static software packages
sbin | System binaries
tmp | Temporary files
usr | User hierarchy, which has its own subdirectory with the following entries: bin doc etc games include kerberos lib libexec local man sbin share src X11R6
var | Variable data

If you install an application and the binaries aren't placed into the bin directory, you'll need to add the binary location to your PATH environment variable to access the application from the command line.

> NOTE: For more information about FHS, see the home page at http://www.pathname.com/fhs/. Many Unix systems support this hierarchy, including the BSD systems such as FreeBSD and NetBSD, as well as Red Hat Linux and others. However, your own Unix admin may adjust this hierarchy to fit the needs of your enterprise, so you'll want to check subdirectory locations before proceeding with manual software installation.

-- SP

Copyright © 2003 O'Reilly & Associates. All rights reserved.