Mark H Weaver <m...@netris.org> skribis: > 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.
Oh you mean the *parent* directories, right? Sorry I hadn’t understood that. > 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: > > 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)) > > 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? Yes, that’s even better, please commit and revert 8c3a5d7059. Thanks! Ludo’.