“ เส้นทางการนำเข้าที่ไม่รู้จัก” ด้วย go get


93

ฉันพยายามติดตั้ง a web.goแต่กำลังเรียกใช้go get github.com/hoisie/webผลตอบแทน

package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"

และสิ่งนี้ยังคงดำเนินต่อไปพร้อมกับแพ็คเกจต่างๆก่อนที่จะไม่กลับมา go envให้ฉัน:

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

ฉันจะติดตั้งได้web.goอย่างไร? การใช้go get(แทนgo install) คือสิ่งที่อยู่ใน README บนหน้า github เวอร์ชัน My Go คือgo version go1.2 linux/amd64.


3
ส่งออก GOROOT แต่ไม่มี GOPATH? GOROOT แตกต่างจาก GOBIN หรือไม่? คุณติดตั้ง Go ได้อย่างไร? คุณตั้งค่าสภาพแวดล้อมของคุณอย่างไร?
Volker

ฉันติดตั้งไปแล้วโดยไปที่หน้าgolang.org/doc/install ฉันไม่แน่ใจว่าจะใส่อะไรสำหรับ GOPATH
q3d

คำตอบ:


102

GOROOTที่เป็นปัญหาที่เกี่ยวข้องกับการที่ไม่ถูกต้อง

/usr/local/goฉันคิดว่าคุณติดตั้งไปใน
ดังนั้นเปลี่ยนเส้นทางไปยังค่าของGOROOT/usr/local/go/bin

ดูเหมือนว่าคุณหมายถึงการมีพื้นที่ทำงานของคุณ (GOPATH) /home/me/goตั้งอยู่ที่

วิธีนี้อาจแก้ปัญหาของคุณได้
เพิ่มสิ่งนี้ที่ด้านล่างของโปรไฟล์ทุบตีของคุณซึ่งอยู่ที่นี่ =>$HOME/.profile

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

GOROOTตรวจสอบให้แน่ใจที่จะลบการอ้างอิงเก่า

จากนั้นลองติดตั้ง web.go อีกครั้ง

หากไม่ได้ผลให้ติดตั้ง Ubuntu Go ให้คุณ

sudo apt-get install golang

วิดีโอสอน: http://www.youtube.com/watch?v=2PATwIfO5ag


16
คุณแทบไม่ควรตั้งค่า GOROOT การประกาศ PATH ของคุณไม่โดน / usr / local / go / bin นอกจากนี้ควรทราบว่าแพ็คเกจ ubuntu นั้นอยู่เบื้องหลังการเปิดตัวอย่างเป็นทางการเล็กน้อยซึ่งก็คือ 1.2
JimB

2
เมื่อฉันทำตามคำแนะนำการติดตั้ง go จากเว็บไซต์อย่างเป็นทางการ (ติดตั้งจากไฟล์ tar ลงใน / usr / local) ฉันได้รับข้อผิดพลาดข้างต้นจนกว่าฉันจะเปลี่ยน GOROOT ตามด้านบน
ดึง

1
เพิ่งติดตั้ง golang 1.3 ใหม่บน fedora 20 และgo getให้ข้อผิดพลาดเดียวกัน GOROOTถูกตั้งค่าเป็น/usrติดตั้งเองใน / usr ไม่ใช่ / usr / local ตั้งค่าGOPATHเป็น$HOME/go. มีความคิดอะไรให้ตรวจสอบอีกไหม?
Dfr

15
ตอบตัวเอง: การไม่GOROOTตั้งค่าดูเหมือนจะช่วยแก้ปัญหาได้
Dfr

5
+1 สำหรับการไม่ตั้งค่า GOROOT ฉันยกเลิกการตั้งค่าตรวจสอบให้แน่ใจว่ายังไม่ได้ตั้งค่าecho $GOROOTจากนั้นตรวจสอบว่า GO ยังคงมีอยู่ใน env go envที่ทำอยู่และอยู่ที่/usr/local/goที่ฉันติดตั้งไว้ (จึงไม่จำเป็นต้องตั้งค่าไม่ว่าในกรณีใด ๆ )
StartupGuy

37

ฉันติดตั้ง Go with brewบน OSX 10.11 และพบว่าฉันต้องตั้งค่าGOROOTเป็น:

/usr/local/Cellar/go/1.5.1/libexec

(แน่นอนแทนที่เวอร์ชันในเส้นทางนี้ด้วย go เวอร์ชันที่คุณมี)

Brew ใช้ symlink ซึ่งหลอก gotool ดังนั้นตามลิงค์ที่บ้าน


ในที่สุดฉันก็พบสิ่งที่ได้ผล ขอบคุณ Eric!
Mir Adnan

มีประโยชน์ขอบคุณ ~
Kao-Yuan Lin

23

ฉันมีปัญหาเดียวกันทุกประการหลังจากย้ายจาก go เวอร์ชันเก่า (ติดตั้งจาก PPA เก่า) ไปเป็นแพ็คเกจเริ่มต้น (1.2.1) ที่ใหม่กว่าใน ubuntu 14.04

ขั้นตอนแรกคือการกำจัดการไปที่มีอยู่:

sudo apt-get purge golang*

ซึ่งแสดงคำเตือนต่อไปนี้:

dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed

ดูเหมือนว่าการลบไปจะทิ้งไฟล์บางไฟล์ไว้เบื้องหลังซึ่งอาจทำให้การติดตั้งรุ่นใหม่สับสนได้ อย่างแม่นยำยิ่งขึ้นการติดตั้งเองจะเสร็จสมบูรณ์ แต่หลังจากนั้นคำสั่ง go เช่น "go get something" จะให้ข้อผิดพลาด "เส้นทางการนำเข้าที่ไม่รู้จัก" เหล่านั้น

สิ่งที่ฉันต้องทำคือลบ dirs เหล่านั้นออกก่อนติดตั้ง golang ใหม่และทุกอย่างทำงานได้อย่างมีเสน่ห์ (สมมติว่าคุณตั้ง GOPATH ด้วย)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools

ฉันต้องลบด้วย/usr/local/go/
Natim

ยังต้องลบ / usr / bin / go
eatonphil

6

เนื่องจาก GFW ห้ามไม่ให้คุณเข้าถึง golang.org! และเมื่อฉันใช้พร็อกซีก็สามารถทำงานได้ดี

คุณสามารถดูข้อมูลโดยใช้คำสั่ง go get -v -u golang.org/x/oauth2


1
นี่คือปัญหาที่ฉันพบเมื่ออยู่ในประเทศจีน หลังจากตั้งค่า $ http_proxy ฉันสามารถติดตั้งแพ็คเกจได้โดยไม่มีข้อผิดพลาด
ashen

1
ไม่เพียง แต่ถูกบล็อกเท่านั้น แต่ยังทำให้ DNS เป็นมลพิษอีกด้วย ขั้นแรกไปที่http://ping.eu/nslookup/เพื่อค้นหา IP ที่ถูกต้องของโดเมนตั้งค่าเป็นไฟล์โฮสต์จากนั้นใช้พร็อกซีเพื่อดาวน์โหลด export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 บางครั้งคุณแค่อยากพูดคำว่า F กับ Gov
Mr. Wang จาก Next Door

4

$ unset GOROOTทำงานให้ฉัน เนื่องจากคำตอบส่วนใหญ่แนะนำว่า GOROOT ของคุณไม่ถูกต้อง


2

ฉันมีปัญหาเดียวกันกับ MacOS 10.10 และฉันพบว่าปัญหาที่เกิดจากเปลือก OhMyZsh จากนั้นฉันก็เปลี่ยนกลับไปทุบตีทุกอย่างก็โอเค

นี่คือ go env ของฉัน

bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1

เป็นgo envตั้งแต่ตอนที่ไม่ได้ผลหรือเมื่อไหร่ อาจไม่ใช่ "เกิดจาก [เปลือกอื่น]" แต่เป็นไปได้ว่าการตั้งค่าGOPATHในเชลล์อื่นนั้นล้มเหลว เชลล์ตระกูล csh และ zsh ไม่ได้ใช้ไฟล์เริ่มต้นระบบเดียวกัน (เช่นไม่ใช่~/.profile) โดยเฉพาะการzshใช้งาน$ZDOTDIR/.zshenvและ$ZDOTDIR/.zprofile(ซึ่งเป็น$ZDOTDIRค่าเริ่มต้น$HOME)
Dave C


0

ฉันมีปัญหาเดียวกันหลังจากอัปเกรด go1.2 เป็น go1.4

ฉันเปลี่ยนชื่อ src เป็น _src ใน GOPATH ของฉันแล้วทำไฟล์ go get -v

ใช้งานได้แล้วฉันลบ _src

หวังว่าจะช่วยได้


0

ฉันพบปัญหานี้เมื่อติดตั้งแพ็คเกจอื่นและอาจเกิดจากการกำหนดค่า GOROOT และ GOPATH บน PATH ของคุณ ฉันมักจะไม่ตั้งค่า GOROOT เนื่องจากการติดตั้ง OS X ของฉันจัดการ (ฉันเชื่อว่า) ให้ฉัน

  1. ตรวจสอบสิ่งต่อไปนี้ใน. profile ของคุณ (หรือที่ใดก็ตามที่คุณเก็บการกำหนดค่าโปรไฟล์: .bash_profile, .zshrc, .bashrc ฯลฯ ):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  2. นอกจากนี้คุณอาจต้องการunset GOROOTเช่นกันในกรณีที่เส้นทางนั้นไม่ถูกต้อง

  3. นอกจากนี้อย่าลืมทำความสะอาด PATH ของคุณเช่นเดียวกับสิ่งที่ฉันได้ทำด้านล่างก่อนการมอบหมาย GOPATH กล่าวคือ:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  4. จากนั้นsource <.profile>เพื่อเปิดใช้งาน

  5. ลองอีกครั้ง go get
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.