mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 13:58:15 -05:00
guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable.
The need for this use case appeared when attempting to install Guix on a truly minimal image made with Buildroot, which lacked enough GNU components that I had to extract a guix pack to /gnu before attempting installation, which would then refuse to proceed because of the existing /gnu. * etc/guix-install.sh: Document environment variables. (sys_create_store) [GUIX_ALLOW_OVERWRITE]: Skip pre-existing installation checks and output a warning. Extract the tarball directly to /.
This commit is contained in:
parent
28bd26b6b8
commit
23d56ba150
1 changed files with 20 additions and 5 deletions
|
@ -29,6 +29,22 @@
|
||||||
|
|
||||||
# We require Bash but for portability we'd rather not use /bin/bash or
|
# We require Bash but for portability we'd rather not use /bin/bash or
|
||||||
# /usr/bin/env in the shebang, hence this hack.
|
# /usr/bin/env in the shebang, hence this hack.
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
#
|
||||||
|
# GUIX_BINARY_FILE_NAME
|
||||||
|
#
|
||||||
|
# Can be used to override the automatic download mechanism and point
|
||||||
|
# to a local Guix binary archive filename like
|
||||||
|
# "/tmp/guix-binary-1.4.0rc2.armhf-linux.tar.xz"
|
||||||
|
#
|
||||||
|
# GUIX_ALLOW_OVERWRITE
|
||||||
|
#
|
||||||
|
# Instead of aborting to avoid overwriting a previous installations,
|
||||||
|
# allow copying over /var/guix or /gnu. This can be useful when the
|
||||||
|
# installation required the user to extract Guix packs under /gnu to
|
||||||
|
# satisfy its dependencies.
|
||||||
|
|
||||||
if [ "x$BASH_VERSION" = "x" ]
|
if [ "x$BASH_VERSION" = "x" ]
|
||||||
then
|
then
|
||||||
exec bash "$0" "$@"
|
exec bash "$0" "$@"
|
||||||
|
@ -336,16 +352,15 @@ sys_create_store()
|
||||||
|
|
||||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
|
||||||
if [[ -e "/var/guix" || -e "/gnu" ]]; then
|
if [[ -z $GUIX_ALLOW_OVERWRITE && (-e /var/guix || -e /gnu) ]]; then
|
||||||
die "A previous Guix installation was found. Refusing to overwrite."
|
die "A previous Guix installation was found. Refusing to overwrite."
|
||||||
|
else
|
||||||
|
_msg "${WAR}Overwriting existing installation!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$tmp_path"
|
cd "$tmp_path"
|
||||||
tar --extract --file "$pkg" && _msg "${PAS}unpacked archive"
|
|
||||||
|
|
||||||
_msg "${INF}Installing /var/guix and /gnu..."
|
_msg "${INF}Installing /var/guix and /gnu..."
|
||||||
mv "${tmp_path}/var/guix" /var/
|
tar --extract --file "$pkg" -C /
|
||||||
mv "${tmp_path}/gnu" /
|
|
||||||
|
|
||||||
_msg "${INF}Linking the root user's profile"
|
_msg "${INF}Linking the root user's profile"
|
||||||
mkdir -p ~root/.config/guix
|
mkdir -p ~root/.config/guix
|
||||||
|
|
Loading…
Reference in a new issue