Hi, I'm trying to use "guix copy" to copy store items from host A to host B. Host A and B are both on the same LAN. Host A uses GuixSD, and host B uses Guix installed on Debian. No matter what I do, I get a message like the following:
--8<---------------cut here---------------start------------->8--- $ /gnu/store/xfrqrgazg0y7qn6k2d6psg5ssws4zs5w-guix-0.16.0-9.4bddd12/bin/guix copy --to=192.168.1.105 /gnu/store/dpiq9gj0d8jd8qs0q9sdsm9npyjm684n-profile guix copy: error: failed to connect to `#<input-output: channel (open) 26de6a0>': Protocol error --8<---------------cut here---------------end--------------->8--- This appears to be emitted by code in (guix ui), and it seems to indicate a problem related to the store connection, not the SSH connection. This happens even when I manually start the exact same version of guix-daemon on the remote host, like this: --8<---------------cut here---------------start------------->8--- $ sudo /gnu/store/xfrqrgazg0y7qn6k2d6psg5ssws4zs5w-guix-0.16.0-9.4bddd12/bin/guix-daemon --build-users-group=guixbuild --8<---------------cut here---------------end--------------->8--- I've verified that I can connect to the remote host over SSH using a command like this: ssh 192.168.1.105 I've verified that I can invoke Guix's "open-ssh-session" to get a usable session and run commands on the remote end: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,use (guix ssh) (ssh popen) (ice-9 rdelim) scheme@(guile-user)> (define session (open-ssh-session "192.168.1.105" #:user #f #:port 22)) scheme@(guile-user)> (define channel (open-remote-pipe* session OPEN_READ "/usr/bin/lsb_release" "-d")) scheme@(guile-user)> (read-line channel) $1 = "Description:\tDebian GNU/Linux 9.7 (stretch)" scheme@(guile-user)> --8<---------------cut here---------------end--------------->8--- When I run guix commands on the remote machine, it works just fine: --8<---------------cut here---------------start------------->8--- $ guix package --show=hello guile: warning: failed to install locale hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and defining `GUIX_LOCPATH', along these lines: guix package -i glibc-utf8-locales export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale" See the "Application Setup" section in the manual, for more info. name: hello version: 2.10 outputs: out systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux dependencies: location: gnu/packages/base.scm:72:2 homepage: https://www.gnu.org/software/hello/ license: GPL 3+ synopsis: Hello, GNU world: An example GNU package description: GNU Hello prints the message "Hello, world!" and then + exits. It serves as an example of standard GNU coding practices. + As such, it supports command-line arguments, multiple languages, + and so on. --8<---------------cut here---------------end--------------->8--- The guix-daemon's socket exists in the usual place on the remote machine, and it has appropriate permissions: --8<---------------cut here---------------start------------->8--- $ ls -l /var/guix/daemon-socket/socket srw-rw-rw- 1 root root 0 Feb 10 14:06 /var/guix/daemon-socket/socket --8<---------------cut here---------------end--------------->8--- So what is this "protocol error" that keeps preventing me from using "guix copy"? I've spent 2 hours trying to figure this out, so it's time to ask for help. -- Chris
signature.asc
Description: PGP signature