Singularity Registry HPC (shpc)

Singularity HPC is optimized for managing containers in an HPC environment. it’s created to be modular, meaning that it supports a distinct set of container technologies and module systems. The name of the library Singularity Registry HPC doesn’t refer specifically to the container technology Singularity, but more generally implies the same spirit a single entity that’s "one library to rule them all!"

For more details see shpc documentation

How to Install shpc?

SStack tool allows you to install shpc, and use it to install software in your desired location. For example, to install shpc named shpc-el7 in your home directory, run command:

sstack install -t shpc -n shpc-el7

This creates a module file that you can load in your environment to be able to use the shpc to install software, as shown in the following:

module use "/home/tahat/sstack/modules"
module load shpc/shpc-el7

To check if shpc is now available and you can use it, run the following command:

shpc --version

Output

0.0.55

How to Use shpc to Manage Software?

The most basic thing you might want to do is install an already existing recipe in the registry. You might first want to show the known registry entries first. To show all entries, you can run:

shpc show

Output

ruby
gradle
node
adminer
mysql
quay.io/vgteam/vg
quay.io/biocontainers/bowtie2
quay.io/biocontainers/bamtools
quay.io/biocontainers/mrbayes
...

To install Node.js, run:

shpc install node

You will see the container pulled, and then a message to indicate that the module was created, as shown below:

singularity pull --name /home/tahat/sstack/stacks/shpc/shpc-el7/containers/node/18-alpine3.15/node-18-alpine3.15-sha256:0677e437543d10f6cb050d92c792a14e5eb84340e3d5b4c25a88baa723d8a4ae.sif docker://node@sha256:0677e437543d10f6cb050d92c792a14e5eb84340e3d5b4c25a88baa723d8a4ae
INFO:    Using cached SIF image
Module node:18-alpine3.15 was created.

Once the software is installed successfully, a module is created which you can load in your environmnet, then you’ll be able to use the software.

To check if the module is available, run:

module avail

The following output shows that the module named node/18-alpine3.15 is available.

---------------------------------------------- /home/tahat/sstack/stacks/shpc/shpc-el7/modules ----------------------------------------------
   ghcr.io/autamus/clingo/5.5.1/module    node/18-alpine3.15/module    python/3.9.2-alpine/module
...

To load the module, run:

module load node/18-alpine3.15

The default version of Node.js installed in the above example. To show all versions of Node.js, run:

shpc show node

Output

docker: node
url: https://hub.docker.com/r/_/node
maintainer: '@vsoch'
description: Node.js is a software platform for scalable server-side and networking
  applications.
latest:
  18-alpine3.15: sha256:0677e437543d10f6cb050d92c792a14e5eb84340e3d5b4c25a88baa723d8a4ae
tags:
  15.14.0-alpine: sha256:6edd37368174c15d4cc59395ca2643be8e2a1c9846714bc92c5f5c5a92fb8929
  16.0.0-alpine: sha256:fabc6adac6dba5e150130e10acfc11a81447be93f4bf384076abdb63dbd34033
  16.1.0-alpine: sha256:8704247878fe10eddfcb5c26540112b15e50d21ce8e5c7a7f6caf5cf857de219
  16.2.0-alpine: sha256:e5615005591e2450e782fa82b10bf31e4c3a90b00f4f47f3691bcb4c03c5b1a2
  16.3.0-alpine: sha256:2eee2f439d3b3509bbe40faff6584bd31b5745b4c137e93e2d795899a2927762
  16.5.0-alpine: sha256:50b33102c307e04f73817dad87cdae145b14782875495ddd950b5a48e4937c70
  16.8.0: sha256:ba82c1fd24e2b735ca0e980f1d227e48b2debb641315c3e9ad72d220a5a534e4
  17.0.1: sha256:a562ce5da0b5e43107b4acbc5d8845129370f11bcb81c795601dc3d6004d6158
  ...

To install the version 16.8.0, run:

shpc install node:16.8.0

Once a module is installed, you can use list to show installed modules (and versions).

shpc list

Output

 node:18-alpine3.15
                          node:16.0.0-alpine
                          node:16.8.0
                        python:3.9.2-alpine
        ghcr.io/autamus/clingo:5.5.1

To uninstall a module, instead of providing a container unique resource identifier like python:3.9.2-alpine, provide the module path relative to your module directory. For example, to uninstall node:16.8.0, run:

shpc unisitall node:16.8.0

Output

Are you sure you want to uninstall node/16.8.0? (yes/no)? yes
$container_base/node/16.8.0 and all subdirectories have been removed.
$module_base/node/16.8.0 and all subdirectories have been removed.

For more t see → shpc documentation