# Installation

Initial installation of a new utility provides the first, lasting impression of how well the software is likely to perform. From the start, &SCons; has made clean installation a priority.

## Version Control

Distributing an application like &SCons; that depends on a package normally found in a library poses a problem. If the &scons; script and the &SCons; Build Engine are installed separately, it could be easy to introduce a version mismatch between the Build Engine installed in `/usr/lib/python*/site-packages` and the &scons; script installed in `/usr/bin`. Such a mismatch could possible mean exceptions that prevent builds, or even worse, silently unreliable builds.

To reduce the possibility of a version mismatch, the &scons; script looks first for its imported modules in `/usr/lib/scons-{version}/`, then in `/usr/lib/scons/`, and then in the normal &PYTHONPATH; locations, including `/usr/lib/python*/site-packages`). Searching in a version-specific library directory first makes it convenient to install and use multiple side-by-side versions of &SCons;, which is sometimes important when verifying that a new version does not introduce any errors into the local build process. Searching next in an &SCons;-specific library directory makes it convenient for other software to find the &SCons; Build Engine without having to worry about installing separate copies for multiple versions of Python.

## Packages

&SCons; is currently distributed in the following packages:

###

`scons-`version`.tar.gz` | The traditional `.tar.gz` file, installable by running `setup.py`.
`scons-`version`.noarch.rpm` | An RPM file for typical installation.
`scons-`version`_all.deb` | A Debian package.
`scons-`version`.win32.exe` | A Windows installer.
`scons-`version`.src.rpm` | A source RPM file.
`scons-src-`version`.tar.gz` | A tarball of the &SCons; source tree, including the full set of regression tests.

Like other software written in Python, &SCons; benefits greatly from the tremendous effort put into the `distutils` by Greg Ward and others. These take care of 90% of the work by making it almost trivial to generate the appropriate RPM files, Debian packages, and Windows installer.

## Default Builder Objects

As part of the installation process, &SCons; runs a set of scripts that look for popular compilers and other tools and set up appropriate default &Builder; objects for the tools found. These &Builder; objects are then used to initialize the default &consenv; values.

## Default Scanner Objects

Additionally, &SCons; comes with a stock set of &Scanner; objects for the various file types that it supports out of the box. Any unusal &Scanner; objects required for a specific tool will be detected at installation time and associated with the appropriate &Builder; object for the tool.