¿Go no puede encontrar el paquete común y de tipos al construir el proyecto de nodo cliente de Geth?

Estoy tratando de construir el nodo de cliente Ethereum Geth en una caja de Ubuntu 14.04 LTS. Estoy usando el cliente Goland 2017.3. Cuando intento compilar el proyecto obtengo los siguientes errores:

interfaces.go:25:2: cannot find package "github.com/ethereum/go-ethereum/common" in any of:
    /usr/local/go/src/github.com/ethereum/go-ethereum/common (from $GOROOT)
    /home/robert/go/src/github.com/ethereum/go-ethereum/common (from $GOPATH)
interfaces.go:26:2: cannot find package "github.com/ethereum/go-ethereum/core/types" in any of:
    /usr/local/go/src/github.com/ethereum/go-ethereum/core/types (from $GOROOT)
    /home/robert/go/src/github.com/ethereum/go-ethereum/core/types
(from $GOPATH)

He comprobado mi GOPATH que tiene go-ethereum como raíz. Veo un directorio común debajo de él, pero no un directorio de tipos . Revisé el repositorio de Geth en GitHub:

https://github.com/ethereum

Y no veo un proyecto hermano común o de tipos . ¿Alguien sabe cómo arreglar este problema?

Su directorio GOPATH es incorrecto. Esto puede suceder solo si está poniendo los dedos en las fuentes. Normalmente, si descomprime y make gethno va a tener este problema, ya que todas las dependencias se desempaquetan en el ./vendordirectorio y no necesita ninguna configuración de GOPATH a mano. Si está haciendo una compilación personalizada de ethereum, entonces debe familiarizarse con Gola estructura del directorio s, esto es algo básico en golang
descarga el tarball Release en la sección de lanzamientos y make getheso es todo lo que tienes que hacer
@Nulik Nunca toqué las fuentes. Simplemente cloné el repositorio e intenté compilarlo con el IDE de Goland.
luego usa el tarball, master repo es la rama dev

Respuestas (1)

El problema es que la configuración de GOPATH es incorrecta.

Debe configurar GOPATH en el IDE en: /home/robert/goy luego abrir el proyecto a través de Open Directory en /home/robert/go/src/github.com/ethereum/go-ethereum.

Consulte el espacio de trabajo de Go para saber cómo configurar un espacio de trabajo de Go.

@disniper Ese documento que me vinculó "Go Workspace" es crucial. Go es exigente con la estructura de directorios que requiere. Una vez que cambié mi configuración para que coincida con la indicada en el documento, pude construir con éxito. Gracias.
Siendo un novato en Go, me pregunto cuál es la razón detrás de establecer el nombre del paquete en la fuente como "github.com/.../...". ¿Qué sucede si el sitio web de alojamiento no se determina en el momento de la codificación? ¿No sería mejor si la fuente solo necesita conocer la estructura de carpetas relativa?