Computing Division UNIX Environment Standards

Fermi UNIX Environment Working Group
Fermilab Computing Division

Why a Standard?

This document defines a set of UNIX user environments which are effective for the customers but at the same time allow the Computing Division to efficiently support its products on a variety of different kinds of systems. The standards are based on FUE (Fermi UNIX Environment), and have been developed over time in order to provide the users with a consistent environment across platforms and to provide a base for product development.

Consistency across different operating systems (vendor or version) was the original goal of FUE. It is unreasonable to assume that everyone is able to install identical systems and configurations; therefore, we define several levels of FUE-compliance which imply different levels of support offerings from the Computing Division.

There are several reasons to have a well-defined standard for the environment on user systems:

Our intention is not to dictate system configurations in an ad-hoc fashion, but rather to define minimal conventions to meet these goals. If a system doesn't fall within the standard, the local managers and users are responsible for any necessary software porting, and for any problems incurred.

We should also note that supersets of these standards may well be required by certain groups or projects to allow support for their applications - for example in the deployment and support of DART or Linux. These requirements shall be defined by the relevant support groups.


It is necessary for the standard to cover several areas: hardware, operating system software, and application software. All of these areas are relevant to running an application on an integrated system.

CD Standard Environments

The following standard compliance levels are defined to allow for variations in the level of support that the Computing Division is expected to provide to the user. In addition, it allows the user to trade support for the local installation and infrastructure for the load the standards impose on their system.

In general the Computing Division will impose some level of FUE compliance in return for providing support for its products. Fully supported systems on site at Fermilab must comply with the Full FUE Environment. For some systems with single purpose or special applications the full FUE environment may not be necessary, and core FUE compliance may be acceptable.

Systems at Fermilab Collaborating institutions are encouraged to comply with at least the core FUE environment to allow efficient deployment and support of the Fermilab products used by the local users.
None No support. The System in some way doesn't meet the minimum requirements to allow any support by the Computing Division - for example the hardware is not a CD supported platform, or the operating system release is one we don't currently support. For such systems the Computing Division may agree on an individual basis to provide products at the source code level, with no provision for consulting or product support.
Core FUE

The environment includes the basic FUE infrastructure -- namely, ups (product management), upd (product distribution/installation) and perl (the language in which upd is written).

It should be noted that conformance to this level is possible without requiring system administrator (root) permissions. This environment is defined mainly for off-site nodes who want/need the basic FUE infrastructure, but who do not rely upon the Computing Division for their OS support. Sites which are compliant to the Core FUE level will be responsible for educating their community on how to "bootstrap" into the FUE environment on their systems.

Full FUE

This level is regarded as "Fully FUE Compliant". It provides a system which is supportable by the Computing Division, and is recommended for all systems on site (unless other arrangements have been made).

The Full FUE environment includes:

  • Core FUE (ups, upd, perl)
  • systools (Fermilab-specific system administration tools, including "adduser")
  • sectools (Fermilab-specific system security tools, including "ssh" and "tcp_wrapper")
  • futil (common Fermilab utilities, including gtools (gzip, gunzip), telephone, stock, Info, etc.).
  • login_shells (tcsh, bash)
  • "Courtesy links" /usr/local/etc/setups.[c]sh pointing to the system's specific $SETUPS_DIR/setups.[c]sh files (so that Computing Division personnel can rely upon one common method of initializing the FUE environment for all on-site machines)
  • csh and ksh must be installed if provided by the vendor's OS
Additionally, as the tools and documentation are developed, we will require adherence to minimum security and system configuration standards (e.g., system logging, network service configurations, patch level, etc.).

This environment provides access to product distribution (upd), Fermi system administration utilities (systools), widely-used general-purpose utilities (futil), and the supported login shells.

CD Language Support Environments (Full FUE)

The Full FUE environment only addresses interpreted languages (perl, login_shells). Compiled language environments may also be required for Computing Division products to function. These environments are meant to be used in conjunction with the Full FUE environment. All FUE conformance levels assume a C runtime environment since this is a basic requirement of the operating system.
FORTRAN Products may specify requirements for a FORTRAN compiler, a FORTRAN run time environment, or both. Only compiler versions that have been certified as part of the OS certification process are supported.
C Products may specify requirements for a C compiler. Compiler versions that have been certified as part of the OS certification process are supported. In addition, product may specify a GNU C environment instead.
C++ Products may specify requirements for C++ compiler, a C++ run time environment, or both. The C++ requirements may include the KAI compiler, the vendor's compiler, or the egcs compiler.

Products may specify requirements for the gcc product (GNU C compiler and debugger), egcs product (separate branch of development of the GNU c compiler), gnu make, or other gtools (GNU software development tools).

Initial: September 1995
Updated: March 1999