[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

guix copy fails due to "Protocol error"

From: Chris Marusich
Subject: guix copy fails due to "Protocol error"
Date: Mon, 11 Feb 2019 00:11:31 -0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)


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= /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

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 
--8<---------------cut here---------------end--------------->8---

I've verified that I can connect to the remote host over SSH using a
command like this:


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 "" #: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)"
--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

name: hello
version: 2.10
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
location: gnu/packages/base.scm:72:2
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.


Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]