guix-install.sh: Explicitly set root's home directory.

* etc/guix-install.sh (ROOT_HOME): New variable.
  (sys_create_store, sys_enable_guix_daemon, sys_authorize_build_farms):
  Use ROOT_HOME instead of ~root or the HOME environment variable.
* doc/guix.texi (Binary Installation): Instead of assuming that ~ and
  $HOME refer to root's directory simply because commands are being run
  as root, explicilty refer to it via ~root.

Fixes: <https://bugs.gnu.org/30728>
This commit is contained in:
Chris Marusich 2018-03-25 06:47:42 +02:00
parent ce353a548f
commit 3cd4447f56
No known key found for this signature in database
GPG Key ID: DD409A15D822469D
2 changed files with 14 additions and 9 deletions

View File

@ -471,7 +471,7 @@ archive content is independent of its creation time, thus making it
reproducible. reproducible.
@item @item
Make @code{root}'s profile available under @file{~/.guix-profile}: Make @code{root}'s profile available under @file{~root/.guix-profile}:
@example @example
# ln -sf /var/guix/profiles/per-user/root/guix-profile \ # ln -sf /var/guix/profiles/per-user/root/guix-profile \
@ -482,7 +482,7 @@ Source @file{etc/profile} to augment @code{PATH} and other relevant
environment variables: environment variables:
@example @example
# GUIX_PROFILE=$HOME/.guix-profile ; \ # GUIX_PROFILE="`echo ~root`/.guix-profile" ; \
source $GUIX_PROFILE/etc/profile source $GUIX_PROFILE/etc/profile
@end example @end example

View File

@ -50,6 +50,11 @@ DEBUG=0
GNU_URL="https://alpha.gnu.org/gnu/guix/" GNU_URL="https://alpha.gnu.org/gnu/guix/"
OPENPGP_SIGNING_KEY_ID="3CE464558A84FDC69DB40CFB090B11993D9AEBB5" OPENPGP_SIGNING_KEY_ID="3CE464558A84FDC69DB40CFB090B11993D9AEBB5"
# This script needs to know where root's home directory is. However, we
# cannot simply use the HOME environment variable, since there is no guarantee
# that it points to root's home directory.
ROOT_HOME="$(echo ~root)"
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
#+UTILITIES #+UTILITIES
@ -264,9 +269,9 @@ sys_create_store()
_msg "${INF}Linking the root user's profile" _msg "${INF}Linking the root user's profile"
ln -sf /var/guix/profiles/per-user/root/guix-profile \ ln -sf /var/guix/profiles/per-user/root/guix-profile \
~root/.guix-profile "${ROOT_HOME}/.guix-profile"
GUIX_PROFILE="${HOME}/.guix-profile" GUIX_PROFILE="${ROOT_HOME}/.guix-profile"
source "${GUIX_PROFILE}/etc/profile" source "${GUIX_PROFILE}/etc/profile"
_msg "${PAS}activated root profile at /root/.guix-profile" _msg "${PAS}activated root profile at /root/.guix-profile"
} }
@ -316,13 +321,13 @@ sys_enable_guix_daemon()
case "$INIT_SYS" in case "$INIT_SYS" in
upstart) upstart)
{ initctl reload-configuration; { initctl reload-configuration;
cp ~root/.guix-profile/lib/upstart/system/guix-daemon.conf \ cp "${ROOT_HOME}/.guix-profile/lib/upstart/system/guix-daemon.conf" \
/etc/init/ && /etc/init/ &&
start guix-daemon; } && start guix-daemon; } &&
_msg "${PAS}enabled Guix daemon via upstart" _msg "${PAS}enabled Guix daemon via upstart"
;; ;;
systemd) systemd)
{ cp ~root/.guix-profile/lib/systemd/system/guix-daemon.service \ { cp "${ROOT_HOME}/.guix-profile/lib/systemd/system/guix-daemon.service" \
/etc/systemd/system/; /etc/systemd/system/;
chmod 664 /etc/systemd/system/guix-daemon.service; chmod 664 /etc/systemd/system/guix-daemon.service;
systemctl daemon-reload && systemctl daemon-reload &&
@ -332,7 +337,7 @@ sys_enable_guix_daemon()
;; ;;
NA|*) NA|*)
_msg "${ERR}unsupported init system; run the daemon manually:" _msg "${ERR}unsupported init system; run the daemon manually:"
echo " ~root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild" echo " ${ROOT_HOME}/.guix-profile/bin/guix-daemon --build-users-group=guixbuild"
;; ;;
esac esac
@ -352,9 +357,9 @@ sys_authorize_build_farms()
while true; do while true; do
read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn
case $yn in case $yn in
[Yy]*) guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub && [Yy]*) guix archive --authorize < "${ROOT_HOME}/.guix-profile/share/guix/hydra.gnu.org.pub" &&
_msg "${PAS}Authorized public key for hydra.gnu.org"; _msg "${PAS}Authorized public key for hydra.gnu.org";
guix archive --authorize < ~root/.guix-profile/share/guix/berlin.guixsd.org.pub && guix archive --authorize < "${ROOT_HOME}/.guix-profile/share/guix/berlin.guixsd.org.pub" &&
_msg "${PAS}Authorized public key for berlin.guixsd.org"; _msg "${PAS}Authorized public key for berlin.guixsd.org";
break;; break;;
[Nn]*) _msg "${INF}Skipped authorizing build farm public keys" [Nn]*) _msg "${INF}Skipped authorizing build farm public keys"