This update for apptainer fixes the following issues:
Changes in apptainer:
/scratch2 also exists and contains
container images, previously the latter would match but now
only images under the exactly matching /scratch are included.
Other changes:mksquashfs
under proot is creating a SIF file.mksquashfs died with a signal. The proot command was not
passing back an error exit code.squashfuse_ll to version 0.6.2 in order to
fix a crash sometimes seen with apptainer in unprivileged
docker./etc/resolv.conf was a
symlink while building from a definition file using the
localimage bootstrap.../run in addition to /run./etc/passwd
with the host user's name, a regression introduced in v1.5.0.APPTAINER_BIND.
Example: --mount type=bind,source=/data,destination=/mnt,nonested.--device and
--cdi-dirs run/shell/exec options. Honors environment
variable settings, bind mounts, and device files listed in
CDI specification files.--contain flag or by configuring mount dev with the minimal
option; otherwise all the devices are available anyway. This
feature is enabled via the --intel-hpu option and by
specifying the HABANA_VISIBLE_DEVICES environment variable,
which should contain a comma-separated list of device IDs
(e.g., "1,2,3") or "all" to import all of them.
The default if HABANA_VISIBLE_DEVICES is not set is "all".IPFS_GATEWAY environment
variable or read from ~/.ipfs/gateway or /etc/ipfs/gateway.--no-env action and instance option and corresponding
APPTAINER_NOENV environment variable that can provide a
comma-separated list of environment variables to skip
importing from the host environment into the container.--data build option which creates a SIF file with
a squashfs data partition instead of a code partition,
given an existing squashfs file as the source.PREPEND_LD_LIBRARY_PATH is set in the container
environment (through an --env option, an APPTAINERENV_
prefix from the host, or in the container definition)
then prepend that string to :$LD_LIBRARY_PATH. Likewise
if APPEND_LD_LIBRARY_PATH is set in the container
environment then append that string to $LD_LIBRARY_PATH:.
This is only done when LD_LIBRARY_PATH is set, although
if the container is based on glibc, when LD_LIBRARY_PATH
is not set it will first be filled with the default
library search path as found through ldconfig.SOURCE_DATE_EPOCH has been set (as a Unix timestamp given
as seconds since the beginning of 1970, in the UTC timezone).
Also add --reproducible flag to build and pull from
oras:// sources. This sets SOURCE_DATE_EPOCH
automatically from the image "created" time./etc/resolv.conf pointing to a
symlink under /run, such as those hosts that are running
systemd-resolved. In this case, the symlink is copied into
the container and the parent directory of the target of the
symlink is bind-mounted from the host. The result is that
even if the target of the symlink is replaced with a new file,
the container sees the update in /etc/resolv.conf./etc/resolv.conf to the list of host paths that can be
prevented from automatic import into the container with the
--no-mount option.stat() information. That tool is now
used when invoking mksquashfs to create the filesystem
partition in a SIF file. It can be disabled with the hidden
build option --ignore-proot.loong64 architecture.
Changed defaults / behaviours/.singularity.d/libs (such as
with GPU options like --nv) and the container is based on
glibc and LD_LIBRARY_PATH is not already set, it is now set
to the default library search path. Since /.singularity.d/libs
is appended to LD_LIBRARY_PATH, this makes libraries
installed in the container take precedence over libraries
bound in from the host. This reduces the chances of mismatched
glibc versions. However, if there are indeed libraries on the
host that need to take precedence over libraries in the
container, that can be forced with
PREPEND_LD_LIBRARY_PATH=/.singularity.d/libs.ENV in their definition file) with
shell characters in them. It now escapes them with single
backslashes instead of double backslashes so they behave
like they do in podman and docker./etc/passwd inside a container now always
corresponds to the username of the user on the host even if
an entry with the same UID is found in the container.LD_LIBRARY_PATH. This makes it
work correctly when it was installed with
install-unprivileged.sh on a host operating system that's
different than the one the installed binaries were built on.