Start here. The foundation.
A locked-down machine, no root, and nothing installed. One command and a few hours later it has its own self-contained toolbox that neither touches nor depends on anything already on the box. Everything the next two stations build lands inside it.
The software. Builds compilers, R, Python and the libraries into the foundation, as versioned modules you load on demand.
The extraction
Files in the repo. Pull it and run - nothing to unpack.Generic prefix install (with EasyBuild)
prefix-install
12 files
46 KB
extracted from
prefix.ndexr.io + eb.ndexr.io
Turns a bare Linux machine into one that can build scientific software - without needing administrator rights. One command and a few hours later the machine has its own self-contained toolbox, kept in a single folder, that neither touches nor depends on anything already installed on the machine.
One command builds a self-contained software foundation for the machine's architecture - ARM/aarch64 included - inside the extraction directory: a Gentoo Prefix, then EasyBuild + Lmod layered on top of it. Background build with the log tailed; every script refuses root. Lmod is emerged by the prefix's own portage and EasyBuild lives in a venv built from the prefix python, so nothing touches the host beyond reading its compiler.
activate.sh bin install.sh manifest prefix README.md run.R
- An unprivileged user - every script refuses UID 0
- gcc, g++, make, patch, tar, xz on the host image (preflight lists anything missing)
- Network for source fetches (portage tree, distfiles, PyPI)
- ~20 GB free and 2-6 h for the prefix stage; the EasyBuild layer is minutes
- A stable absolute path (e.g. /opt/prefix-install) - the tree is not relocatable
# from R, via the rxedn catalogue
rxedn::rxedn_install_module("prefix.extract.ndexr.io")
# the extraction lands at <domains_dir>/prefix.extract.ndexr.io/prefix-install/
No archive to unpack and no checksum to compare: rxedn publishes each
repo as an immutable
<host>-<sha7>.tar.gz
and records its sha256 in the catalogue index, so the commit is the
identity. Pull it, and the files are simply there.
# the extraction is a directory in this repo - copy it somewhere stable
cp -r prefix-install /opt/ && cd /opt/prefix-install # see README on why the path must be stable
# from R (Workbench session) - session-core-aware kickoff:
# source('run.R'); kickoff(); build_status(); tail_log()
./install.sh # shell lane: prefix, then EasyBuild
bin/status.sh # re-attach to the log any time
source activate.sh # when done: eb + module on PATH
eb --rpath --robot GCC-13.3.0.eb
Output stays put, in
prefix/<triple>/ and eb/ inside the extraction directory
- nothing is copied out.
Every file - 12
- activate.sh
- bin/bootstrap.sh
- bin/easybuild.sh
- bin/pack.sh
- bin/run.sh
- bin/status.sh
- bin/stop.sh
- bin/triple.sh
- install.sh
- manifest/pins.txt
- README.md
- run.R
Declared inputs
What each extraction will build.Generic prefix install (with EasyBuild)
Carried in
manifest/
, verbatim - the declared set
this extraction will build. It travels in the repo, so a copy taken
to a machine with no route back here still knows the full list.
| File | Records | Size |
|---|---|---|
pins.txt
|
7 entries | 1 KB |