Kahibaro
Discord Login Register

Software installation concepts

Key Ideas: Installing Software in HPC and Linux

On HPC systems, you almost never install software the same way you would on your laptop. You typically:

This chapter introduces the main concepts that underlie software installation in a Linux-based HPC environment, without going deep into any one tool or package manager.


System-wide vs. user-level installation

System-wide installation

System administrators typically install:

Characteristics:

You mostly “install” these by loading modules, not by running installers yourself.

User-level installation

Users often need:

Because you usually lack root access, you install into:

Concepts:

Static vs. dynamic linking (conceptual level)

How software uses libraries affects what and how you install.

Most HPC software on clusters is dynamically linked and relies on the cluster’s library stacks.


Package-based vs. source-based installation

Binary packages

On personal Linux systems, admins use distributions’ package managers:

Conceptually:

On clusters:

You still need to understand that “installing from a package”:

Source-based installation

HPC software is often installed from source code to:

Typical build pattern (conceptual):

  1. Configure: detect system features, compilers, libraries, and set build options.
  2. Compile: convert source code to object code, apply optimizations.
  3. Link: produce executables and libraries.
  4. Install: copy built files into the chosen prefix.

You usually select:

On HPC systems, admins often use specialized tools (e.g., Spack, EasyBuild) to automate and standardize source builds; for users, manual builds are common for specific tools.


The “install prefix” and adjusting your environment

When you “install” software, the main conceptual tasks are:

  1. Choose a prefix / installation path

Examples:

  1. Arrange subdirectories

Common conventions under a prefix:

  1. Expose the software to your environment

Most tools are found using environment variables:

Conceptually, “installing” for your personal use often means:

Environment modules wrap all of this into simple module load commands.


Versioning and coexistence of multiple installs

On clusters, many versions often coexist, for example:

Concepts:

As a user, your core conceptual task is to choose a consistent stack:

and ensure they are compatible.


Dependencies and dependency resolution

Most non-trivial software depends on other software, such as:

Conceptually:

On a cluster:

Installation in interpreted environments (Python, R, etc.)

While full details are covered elsewhere, some concepts are common:

On HPC clusters, you often:

Build configurations and reproducibility

Even without going into specific tools, some general concepts are important:

Reproducible installation is crucial in HPC for:

Permissions, quotas, and shared spaces

When deciding where and how to install software, consider:

Conceptually, installing software for shared use means:

High-level workflow for installing user software on an HPC cluster

Putting these concepts together, a typical logical workflow is:

  1. Identify what you need:
    • Application name and version.
    • Required libraries and runtimes.
  2. Check system-provided options:
    • Use environment modules or documentation to see if admins already provide it.
  3. Plan your installation:
    • Choose prefix: personal or project-level.
    • Decide whether to use binaries or build from source.
  4. Prepare the environment:
    • Load compatible modules (compiler, MPI, libraries).
    • Ensure dependencies are present.
  5. Install:
    • For source: configure, build, install into your prefix.
    • For Python/R, create an environment and install packages there.
  6. Expose the result:
    • Adjust PATH, LD_LIBRARY_PATH, and other variables.
    • Optionally create a simple modulefile or wrapper script.
  7. Document:
    • Record the steps, versions, and environment so you and others can reproduce it.

These are the fundamental concepts that underpin how software is installed and managed in Linux-based HPC environments, regardless of the specific tools used.

Views: 11

Comments

Please login to add a comment.

Don't have an account? Register now!