"Jalur impor tidak dikenal" dengan go get

93

Saya mencoba untuk menginstal web.go, tapi menjalankan go get github.com/hoisie/webkembali

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"

dan ini berlanjut untuk sementara waktu dengan berbagai paket, sebelum tidak mengembalikan apa pun. go envberi saya:

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"

Bagaimana cara saya menginstal web.go? Menggunakan go get(daripada go install) adalah apa yang ada di README di halaman github. Versi Go saya adalah go version go1.2 linux/amd64.

q3d
sumber
3
Mengekspor GOROOT tetapi tidak ada GOPATH? GOROOT berbeda dengan GOBIN? Bagaimana Anda menginstal Go? Bagaimana Anda mengatur lingkungan Anda?
Volker
Saya menginstal go dengan mengikuti halaman golang.org/doc/install . Saya tidak yakin apa yang harus diberikan untuk GOPATH.
q3d

Jawaban:

102

Masalahnya berkaitan dengan ketidakabsahan GOROOT.

Saya pikir Anda menginstal Masuk /usr/local/go.
Jadi ubah GOROOTjalur Anda ke nilai /usr/local/go/bin.

Tampaknya Anda bermaksud untuk menempatkan ruang kerja (GOPATH) di /home/me/go.

Ini mungkin memperbaiki masalah Anda.
Tambahkan ini ke bagian bawah profil bash Anda, yang terletak di sini =>$HOME/.profile

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

Pastikan untuk menghapus referensi lama dari GOROOT.

Kemudian coba pasang web.go lagi.

Jika itu tidak berhasil, mintalah Ubuntu menginstal Go untuk Anda.

sudo apt-get install golang

Tutorial video: http://www.youtube.com/watch?v=2PATwIfO5ag

Larry Battle
sumber
16
Anda hampir tidak boleh menyetel GOROOT. Deklarasi PATH Anda tidak mengenai / usr / local / go / bin. Juga, perlu dicatat bahwa paket ubuntu sedikit di belakang rilis resmi, yaitu 1.2.
JimB
2
Ketika saya mengikuti instruksi go install dari situs resmi (instal dari file tar ke / usr / local) saya menerima kesalahan di atas sampai saya mengubah GOROOT seperti di atas.
Drew
1
Baru saja memasang golang 1.3 segar di fedora 20 dan go getmemberikan kesalahan yang sama. GOROOTdiatur ke /usr, instal sendiri ke / usr, bukan / usr / local. Setel GOPATHke $HOME/go. Tahu apa lagi yang harus diperiksa?
Dfr
15
Menjawab pada diri saya sendiri: membatalkan GOROOTpengaturan tampaknya memperbaiki masalah.
Dfr
5
1 untuk tidak menyetel GOROOT. Saya membatalkannya, memastikannya tidak disetel echo $GOROOTkemudian memeriksa bahwa GO masih memilikinya di env dengan go envyang dilakukannya dan itu di /usr/local/gotempat saya menginstal (jadi tidak perlu mengaturnya dalam hal apa pun)
StartupGuy
37

Saya menginstal Go with brewdi OSX 10.11, dan ternyata saya harus mengatur GOROOTke:

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

(Tentu saja ganti versi di jalur ini dengan versi go yang Anda miliki)

Brew menggunakan symlink, yang menipu gotool. Jadi ikuti tautan ke rumah.

Eric
sumber
Ah, akhirnya, saya menemukan sesuatu yang berhasil. Terima kasih Eric!
Mir Adnan
Berguna, terima kasih ~
Kao-Yuan Lin
23

Saya memiliki masalah yang persis sama, setelah pindah dari versi go lama (diinstal dari PPA lama) ke paket default yang lebih baru (1.2.1) di ubuntu 14.04.

Langkah pertama adalah membersihkan go yang ada:

sudo apt-get purge golang*

Yang mengeluarkan peringatan berikut:

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

Sepertinya menghapus go meninggalkan beberapa file, yang pada gilirannya dapat membingungkan instalasi yang lebih baru. Lebih tepatnya, penginstalan itu sendiri akan selesai dengan baik, tetapi setelah itu perintah go apa pun, seperti "go get something" akan memberikan kesalahan "jalur impor yang tidak dikenal".

Yang harus saya lakukan adalah menghapus direktori itu terlebih dahulu, menginstal ulang golang, dan semua berfungsi seperti pesona (dengan asumsi Anda juga mengatur GOPATH)

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools
jareks
sumber
Saya juga harus menghapus/usr/local/go/
Natim
Juga harus menghapus / usr / bin / go.
eatonphil
6

Karena GFW melarang Anda mengakses golang.org! Dan ketika saya menggunakan proxy, itu bisa bekerja dengan baik.

Anda dapat melihat informasi menggunakan perintah go get -v -u golang.org/x/oauth2

jefby
sumber
1
Persis seperti inilah masalah yang saya hadapi saat berada di China. Setelah mengatur $ http_proxy, saya dapat menginstal paket tanpa kesalahan.
asus
1
Tidak hanya diblokir, DNS juga tercemar. Pertama, buka untuk http://ping.eu/nslookup/menemukan IP domain yang benar, atur ke file host, lalu gunakan proxy untuk mendownload. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 Terkadang Anda hanya ingin mengucapkan kata F kepada Gov
Mr. Wang dari Next Door
4

$ unset GOROOTbekerja untuk saya. Karena sebagian besar jawaban menunjukkan GOROOT Anda tidak valid.

noelmcloughlin.dll
sumber
2

Saya mengalami masalah yang sama di MacOS 10.10. Dan saya menemukan bahwa masalah tersebut disebabkan oleh shell OhMyZsh. Kemudian saya beralih kembali ke pesta semuanya berjalan baik.

Ini adalah go env saya

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
Igor Barinov
sumber
Apakah itu go envdari saat tidak berhasil atau saat berhasil? Ini mungkin bukan "disebabkan oleh [shell lain]", melainkan kemungkinan kegagalan untuk menyetel dengan benar GOPATHdi shell lain itu. Keluarga shell csh dan zsh tidak menggunakan file startup yang sama (tidak ada ~/.profile). Dalam zshpenggunaan tertentu $ZDOTDIR/.zshenvdan $ZDOTDIR/.zprofile(di mana $ZDOTDIRdefaultnya $HOME).
Dave C
1

Penyebab paling umum adalah:
1. GOROOT
ATAU
2. GOPATH tidak dikonfigurasi dengan benar

Clyde D'Cruz
sumber
0

Saya mengalami masalah yang sama setelah mengupgrade go1.2 ke go1.4.

Saya mengganti nama src menjadi _src di GOPATH saya kemudian melakukan go get -v

Ini berhasil, lalu saya menghapus _src.

Semoga membantu.

Amaury Brisou
sumber
0

Saya mengalami masalah ini saat menginstal paket yang berbeda, dan itu mungkin disebabkan oleh konfigurasi GOROOT dan GOPATH di PATH Anda. Saya cenderung tidak mengatur GOROOT karena instalasi OS X saya menanganinya (saya percaya) untuk saya.

  1. Pastikan yang berikut ini di .profile Anda (atau di mana pun Anda menyimpan konfigurasi profil: .bash_profile, .zshrc, .bashrc, dll):

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  2. Selain itu, Anda mungkin juga ingin unset GOROOT, jika jalur itu juga salah.

  3. Selanjutnya, pastikan untuk membersihkan PATH Anda, seperti yang telah saya lakukan di bawah ini, tepat sebelum penugasan GOPATH, yaitu:

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
    
  4. Kemudian, source <.profile>untuk mengaktifkan

  5. mencoba kembali go get
ThatsAMorais
sumber