Go kann beim Erstellen des Geth-Client-Knotenprojekts kein allgemeines und Typenpaket finden?

Ich versuche, den Ethereum Geth-Client-Knoten auf einer Ubuntu 14.04 LTS-Box zu erstellen. Ich verwende den Goland-Client 2017.3. Wenn ich versuche, das Projekt zu kompilieren, erhalte ich die folgenden Fehler:

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)

Ich habe meinen GOPATH überprüft , dessen Wurzel Go-Ethereum ist. Darunter sehe ich zwar ein gemeinsames Verzeichnis, aber kein Typenverzeichnis . Ich habe das Geth-Repo auf GitHub überprüft:

https://github.com/ethereum

Und ich sehe kein gemeinsames Geschwister- oder Typenprojekt . Weiß jemand, wie man dieses Problem beheben kann?

Ihr GOPATH-Verzeichnis ist falsch. Dies kann nur passieren, wenn Sie Ihre Finger in die Quellen stecken. Normalerweise, wenn Sie entpacken und make gethSie dieses Problem nicht haben werden, da alle Abhängigkeiten in das ./vendorVerzeichnis entpackt werden und Sie keine GOPATH-Einstellung von Hand benötigen. Wenn Sie einen benutzerdefinierten Ethereum-Build erstellen, sollten Sie sich mit der Verzeichnisstruktur von s vertraut machen Go, dies sind grundlegende Dinge in Golang
Laden Sie den Release-Tarball im Abschnitt Releases herunter und make geth, das ist alles, was Sie tun müssen
@Nulik Ich habe die Quellen nie berührt. Ich habe das Repo einfach geklont und versucht, es mit der Goland-IDE zu erstellen.
Verwenden Sie dann den Tarball, das Master-Repo ist der Dev-Zweig

Antworten (1)

Das Problem ist, dass die Einstellung von GOPATH falsch ist.

Sie müssen den GOPATH in der IDE auf: setzen /home/robert/gound dann das Projekt über Open Directory auf öffnen /home/robert/go/src/github.com/ethereum/go-ethereum.

Sehen Sie sich den Go-Arbeitsbereich an, um zu erfahren, wie Sie einen Go-Arbeitsbereich einrichten.

@disniper Das Dokument, das Sie mir "Go Workspace" verlinkt haben, ist entscheidend. Go ist wählerisch in Bezug auf die erforderliche Verzeichnisstruktur. Nachdem ich mein Setup so geändert hatte, dass es mit dem im Dokument angegebenen übereinstimmt, konnte ich erfolgreich bauen. Danke.
Als Go-Neuling frage ich mich, was der Grund dafür ist, den Paketnamen in der Quelle als "github.com/.../..." festzulegen. Was ist, wenn die Hosting-Website zum Zeitpunkt der Codierung nicht festgelegt wurde? Wäre es nicht besser, wenn die Quelle nur die relative Ordnerstruktur kennen müsste?