Bagaimana cara menginstal paket dengan go get?

133

Saya ingin menginstal paket dari github ke gopath saya, saya telah mencoba ini:

go get github.com:capotej/groupcache-db-experiment.git

repositori ada di sini .

baiklah
sumber
4
Jika Anda memiliki kesalahan dengan perintah ini, hapus .gitdi akhir baris:go get github.com:capotej/groupcache-db-experiment
Benyamin Jafari
Lihat juga Di mana mendapatkan paket instal?
pengguna202729

Jawaban:

120

Perintah pergi

Unduh dan instal paket dan dependensi

Pemakaian:

go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

Dapatkan unduhan paket yang diberi nama oleh jalur impor, bersama dengan dependensinya. Kemudian menginstal paket bernama, seperti 'go install'.

Bendera -d menginstruksikan untuk berhenti setelah mengunduh paket; artinya, ia menginstruksikan untuk tidak menginstal paket.

Bendera -f, hanya valid jika -u disetel, memaksa get -u untuk tidak memverifikasi bahwa setiap paket telah diperiksa dari repositori kontrol sumber yang tersirat oleh jalur impornya. Ini dapat berguna jika sumbernya adalah garpu lokal dari aslinya.

Bendera -fix menginstruksikan untuk menjalankan alat perbaikan pada paket yang diunduh sebelum menyelesaikan dependensi atau membuat kode.

Bendera -insecure mengizinkan pengambilan dari repositori dan menyelesaikan domain kustom menggunakan skema tidak aman seperti HTTP. Gunakan dengan hati-hati.

Bendera -t menginstruksikan untuk juga mengunduh paket yang diperlukan untuk membuat pengujian untuk paket yang ditentukan.

Bendera -u menginstruksikan untuk menggunakan jaringan untuk memperbarui paket bernama dan dependensinya. Secara default, get menggunakan jaringan untuk memeriksa paket yang hilang tetapi tidak menggunakannya untuk mencari pembaruan untuk paket yang ada.

Bendera -v memungkinkan kemajuan verbose dan keluaran debug.

Get juga menerima bendera build untuk mengontrol instalasi. Lihat 'go help build'.

Saat memeriksa paket baru, get membuat direktori target GOPATH / src /. Jika GOPATH berisi beberapa entri, get menggunakan yang pertama. Untuk lebih jelasnya lihat: 'go help gopath'.

Saat memeriksa atau memperbarui paket, carilah cabang atau tag yang cocok dengan versi Go yang diinstal secara lokal. Aturan yang paling penting adalah jika penginstalan lokal menjalankan versi "go1", dapatkan penelusuran untuk cabang atau tag bernama "go1". Jika tidak ada versi seperti itu, ia mengambil cabang default dari paket tersebut.

Saat pergi mendapatkan pemeriksaan atau memperbarui repositori Git, itu juga memperbarui semua submodul git yang dirujuk oleh repositori.

Jangan pernah memeriksa atau memperbarui kode yang disimpan di direktori vendor.

Untuk informasi lebih lanjut tentang menentukan paket, lihat 'go help packages'.

Untuk informasi lebih lanjut tentang bagaimana 'go get' menemukan kode sumber untuk diunduh, lihat 'go help importpath'.

Teks ini menjelaskan perilaku get saat menggunakan GOPATH untuk mengelola kode sumber dan dependensi. Sebaliknya, jika perintah go berjalan dalam mode sadar-modul, detail dari flag dan efek get berubah, seperti halnya 'go help get'. Lihat 'go help modules' dan 'go help module-get'.

Lihat juga: mulai membangun, menginstal, bersih.


Misalnya, menampilkan keluaran verbose,

$ go get -v github.com/capotej/groupcache-db-experiment/...
github.com/capotej/groupcache-db-experiment (download)
github.com/golang/groupcache (download)
github.com/golang/protobuf (download)
github.com/capotej/groupcache-db-experiment/api
github.com/capotej/groupcache-db-experiment/client
github.com/capotej/groupcache-db-experiment/slowdb
github.com/golang/groupcache/consistenthash
github.com/golang/protobuf/proto
github.com/golang/groupcache/lru
github.com/capotej/groupcache-db-experiment/dbserver
github.com/capotej/groupcache-db-experiment/cli
github.com/golang/groupcache/singleflight
github.com/golang/groupcache/groupcachepb
github.com/golang/groupcache
github.com/capotej/groupcache-db-experiment/frontend
$ 
peterSO
sumber
17
Jika ini membantu siapa pun, solusi untuk masalah saya ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) adalah menghapus .gitsufiks dari URL Github.
Excalibur
6
apa yang -vdilakukan?
yu yang Jian
3
@yuyangJian itu berarti output verbose.
omrsin
3
suka bagaimana -vperintah tidak direferensikan dalam daftar itu lol fml ... pasti itu berarti verbose tho
Alexander Mills
2
Bagaimana Anda menjalankannya setelah Anda menggunakannya go get?
acjay
75

Pertama, kita membutuhkan GOPATH

Ini $GOPATHadalah folder (atau sekumpulan folder) yang ditentukan oleh variabel lingkungannya. Kita harus memperhatikan bahwa ini bukanlah $GOROOTdirektori tempat Go diinstal.

export GOPATH=$HOME/gocode
export PATH=$PATH:$GOPATH/bin

Kami menggunakan ~/gocodejalur di komputer kami untuk menyimpan sumber aplikasi kami dan dependensinya. The GOPATHdirektori juga akan menyimpan binari paket mereka.

Kemudian centang Go env

Sistem Anda harus memiliki $GOPATHdan $GOROOT, di bawah ini adalah Env saya:

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/elpsstu/gocode"
GORACE=""
GOROOT="/home/pravin/go"
GOTOOLDIR="/home/pravin/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

Sekarang, Anda menjalankan paket unduh go:

go get [-d] [-f] [-fix] [-t] [-u] [build flags] [packages]

Dapatkan unduhan dan instal paket yang diberi nama oleh jalur impor, bersama dengan dependensinya. Untuk lebih jelasnya anda bisa lihat disini .

Pravin Mishra
sumber
1
lingkungan go saya sudah oke, tapi saya kurang paham dengan aturan go get, jadi github.com:capotej/groupcache-db-experiment.gittidak ilegal, apa legal pathnya?
roger
2
Coba dapatkan -v github.com/capotej/groupcache-db-experiment / ... seperti yang dikatakan @peterSO
Pravin Mishra
1
Dimulai dengan Go v1.8, GOPATHdefaultnya $HOME/gojika tidak disetel. Sumber 1 , 2 .
Manavalan Gajapathy