Andreas Enge <andr...@enge.fr> writes: > - The tarball also contains /, /root and /var. When unpacking it, the owner > and permissions are changed on the system. As a consequence, we could not > ssh into the machine any more (!). Could these directories be left out of > the tarball and only their contents be kept in?
The directories could indeed be left out. I experimentally verified that GNU tar will still create those directories if they don't already exist, but will leave their ownership and permissions unmodified if they do exist. Here's a suggested patch: --8<---------------cut here---------------start------------->8--- diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 799851c..10fbfdd 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -71,7 +71,14 @@ under /root/.guix-profile where GUIX is installed." (with-directory-excursion %root (zero? (system* "tar" "--xz" "--format=gnu" "--owner=root:0" "--group=root:0" - "-cvf" #$output "."))))) + "-cvf" #$output + ;; Avoid adding /, /var, or /root to the tarball, + ;; so that the ownership and permissions of those + ;; directories will not be overwritten when + ;; extracting the archive. + "./root/.guix-profile" + "./var/guix" + "./gnu"))))) (gexp->derivation "guix-tarball.tar.xz" build #:references-graphs `(("profile" ,profile)) --8<---------------cut here---------------end--------------->8--- If we did this, then we could revert 8c3a5d7059 and avoid any use of --skip-old-files. I would be in favor of this. What do you think? Mark