From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pjotr Prins Subject: Copying whole /gnu/store from USB does not work Date: Fri, 10 Apr 2015 10:46:52 +0200 Message-ID: <20150410084651.GA23353@thebird.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:35880) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YgUbF-0001Sn-LA for guix-devel@gnu.org; Fri, 10 Apr 2015 04:47:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YgUbC-0001lH-E5 for guix-devel@gnu.org; Fri, 10 Apr 2015 04:47:41 -0400 Received: from mail.thebird.nl ([95.154.246.10]:50408) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YgUbC-0001gK-65 for guix-devel@gnu.org; Fri, 10 Apr 2015 04:47:38 -0400 Content-Disposition: inline List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org Hi all, A binary install should be easy because all properly installed Guix packages are independent from the underlying distribution - a package can be created which contains a package with all its dependencies. The only real dependency is the (Linux) kernel - which should have a compatible API. Fortunately the fundamental API does not change that often, so a binary distribution can be copied from machine to machine. Of course, also the build target archicture has to match. With a binary distribution it is possible to simply unpack the package, create the build group and permissions. I thought I would be able to bootstrap using a USB image and copy /gnu/store to a local hard disk. To bootstrap I have successfully downloaded a GNU Guix tarball wget http://alpha.gnu.org/gnu/guix/gnu-usb-install-0.8.x86_64-linux.xz xz -d gnu-usb-install-0.8.x86_64-linux.xz mount it with kpartx kpartx -v -a gnu-usb-install-0.8.x86_64-linux mkdir mnt mkdir tmp mount /dev/mapper/loop0p1 mnt cp -vau mnt/gnu tmp mv tmp/gnu/ / and should be able to run Guix with /gnu/store/(...)-guix-0.8(...)/bin/guix --help Actually this now works the first time. There is a problem currently: right after copying the files to /gnu they work find, e.g. /gnu/store/nx4zd42igyb7ghmv4mxv6ncg8wr7ypa1-bash-4.3.33/bin/bash --version GNU bash, version 4.3.33(1)-release (x86_64-unknown-linux-gnu) Nice! when I run, however, /gnu/store/wnsbzddp3izv3xr3gqf2rar4fyd4shl7-guix-0.8.1.f1082ec/bin/guix package -i bash it runs and I get The following package will be installed: bash 4.3.33 /gnu/store/7cc229218glj3kzp6zafzs5mc4241wqk-bash-4.3.33 substitute-binary: updating list of substitutes from 'http://hydra.gnu.org'... The following derivations will be built: /gnu/store/gkfzdr01ga0m1c2vl8dh6p3cspjik7pp-profile.drv /gnu/store/kw632ijb16nracg8kbd2z3qqarv72b9c-info-dir.drv The following files will be downloaded: /gnu/store/7cc229218glj3kzp6zafzs5mc4241wqk-bash-4.3.33 /gnu/store/1j6njwwhcqr04c2m0868400p74pv36k2-module-import-compiled /gnu/store/z2mbq8915vvh0fj6sz3iqiifrdm9k7np-guile-2.0.11 (...) substitute error: executing `/gnu/store/wnsbzddp3izv3xr3gqf2rar4fyd4shl7-guix-0.8.1.f1082ec/libexec/guix/substitute-binary': No such file or directory guix package: error: build failed: unexpected EOF reading a line Looking at head -1 /gnu/store/wnsbzddp3izv3xr3gqf2rar4fyd4shl7-guix-0.8.1.f1082ec/libexec/guix/substitute-binary #!/gnu/store/nx4zd42igyb7ghmv4mxv6ncg8wr7ypa1-bash-4.3.33/bin/bash it calls bash and now check /gnu/store/nx4zd42igyb7ghmv4mxv6ncg8wr7ypa1-bash-4.3.33/bin/bash bash: /gnu/store/nx4zd42igyb7ghmv4mxv6ncg8wr7ypa1-bash-4.3.33/bin/bash: No such file or directory while ldd /gnu/store/nx4zd42igyb7ghmv4mxv6ncg8wr7ypa1-bash-4.3.33/bin/bash linux-vdso.so.1 => (0x00007fff739ec000) libreadline.so.6 => /gnu/store/fznw2a1ig05jkc2yrw8knzcb99akcjx7-readline-6.3/lib/libreadline.so.6 (0x00007f0084bd5000) libhistory.so.6 => /gnu/store/fznw2a1ig05jkc2yrw8knzcb99akcjx7-readline-6.3/lib/libhistory.so.6 (0x00007f00849cc000) libncursesw.so.5 => /gnu/store/ksnhghfy6hkk8mmxd4nacyd8c1smdp6p-ncurses-5.9/lib/libncursesw.so.5 (0x00007f008476a000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f008455b000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f008419b000) /gnu/store/q2mm1wv4a3g0b29yv0rjybfjh8kr07qi-glibc-2.20/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f0084e1d000) Oooops. Where does libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 come from? Also the other bash stopped working too /gnu/store/nx4zd42igyb7ghmv4mxv6ncg8wr7ypa1-bash-4.3.33/bin/bash --version and ldd shows links outside /gnu (when it worked they are all linked inside /gnu). Also the guix binary stopped working. Same issue. Can anyone explain this? I tried multiple USB images and it is all the same. Note I am not building, only installing binaries. Pj.