Go get ile bir paketi nasıl kurabilirim?


Yanıtlar:


120

Command go

Paketleri ve bağımlılıkları indirin ve yükleyin

Kullanımı:

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

Bağımlılıkları ile birlikte içe aktarma yollarına göre adlandırılan paketleri indirin. Ardından, 'go install' gibi adlandırılmış paketleri yükler.

-D bayrağı, paketleri indirdikten sonra durma talimatı verir; yani paketleri yüklememe talimatı verir.

Yalnızca -u ayarlandığında geçerli olan -f bayrağı, get -u'yu her paketin kendi içe aktarma yolu tarafından ima edilen kaynak denetim havuzundan teslim alındığını doğrulamaya zorlar. Kaynak, orijinalin yerel bir çatalıysa bu yararlı olabilir.

-Fix bayrağı, bağımlılıkları çözmeden veya kodu oluşturmadan önce indirilen paketlerde düzeltme aracını çalıştırma talimatı verir.

-İnsecure bayrağı, havuzlardan getirmeye ve HTTP gibi güvenli olmayan düzenler kullanarak özel etki alanlarını çözmeye izin verir. Dikkatle kullanın.

-T bayrağı, belirtilen paketler için testleri oluşturmak için gereken paketleri de indirmeyi bildirir.

-U bayrağı, adlandırılmış paketleri ve bağımlılıklarını güncellemek için ağı kullanma talimatı verir. Varsayılan olarak get, eksik paketleri kontrol etmek için ağı kullanır, ancak mevcut paketlerin güncellemelerini aramak için kullanmaz.

-V bayrağı ayrıntılı ilerlemeyi ve hata ayıklama çıktısını etkinleştirir.

Get ayrıca kurulumu kontrol etmek için yapı bayraklarını da kabul eder. "İnşa etmeye yardım et" konusuna bakın.

Yeni bir paketi teslim alırken, get GOPATH / src / hedef dizinini oluşturur. GOPATH birden fazla girdi içeriyorsa, get ilkini kullanır. Daha fazla ayrıntı için bkz: 'go help gopath'.

Bir paketi teslim alırken veya güncellerken, yerel olarak yüklenmiş Go sürümüyle eşleşen bir dal veya etiket arayın. En önemli kural, yerel kurulum "go1" sürümünü çalıştırıyorsa, "go1" adlı bir dalı veya etiketi aramasıdır. Böyle bir sürüm yoksa, paketin varsayılan dalını alır.

Git bir Git deposunu kontrol ettiğinde veya güncellediğinde, depo tarafından referans verilen tüm git alt modüllerini de günceller.

Satıcı dizinlerinde saklanan kodu asla teslim almayın veya güncellemeyin.

Paketlerin belirlenmesi hakkında daha fazla bilgi için, 'yardım paketlerine git' bölümüne bakın.

"Go get" in indirilecek kaynak kodunu nasıl bulduğu hakkında daha fazla bilgi için "go help importpath" bölümüne bakın.

Bu metin, kaynak kodu ve bağımlılıkları yönetmek için GOPATH kullanıldığında alma davranışını açıklar. Bunun yerine go komutu modül tanıyan modda çalışıyorsa, get bayraklarının ve efektlerinin ayrıntıları, "go help get" gibi değişir. 'Yardım modüllerine git' ve 'yardım modülüne git' bölümüne bakın.

Ayrıca bakınız: inşa et, git kur, temizle.


Örneğin, ayrıntılı çıktı göstermek,

$ 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
$ 

17
Bu herhangi birine yardımcı oluyorsa, sorunumun çözümü ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) .gitsoneki Github URL'sinden kaldırmaktı .
Excalibur

6
ne gelmez -vmi?
yu yang Jian

3
@yuyangJian ayrıntılı çıktı anlamına gelir.
omrsin

3
-vkomuta bu listede nasıl başvurulmadığını seviyorum lol fml ... kesinlikle ayrıntılı tho anlamına geliyor
Alexander Mills

2
Kullandıktan sonra nasıl çalıştırırsın go get?
acjay

75

Önce GOPATH'a ihtiyacımız var

$GOPATHOnun ortam değişkeni tarafından belirtilen bir klasörü (veya klasörlerin set) 'dir. Bunun $GOROOTGo'nun kurulu olduğu dizin olmadığını fark etmeliyiz .

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

~/gocodeUygulamamızın kaynağını ve bağımlılıklarını saklamak için bilgisayarımızdaki yolu kullandık . GOPATHDizin de onların paketlerin ikilileri saklayacaktır.

Ardından, Env'ye git seçeneğini işaretleyin

Sisteminiz olmalıdır $GOPATHve $GOROOTaşağıda Env'im:

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"

Şimdi, indirme paketini çalıştırın:

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

Bağımlılıkları ile birlikte içe aktarma yollarına göre adlandırılan paketleri indirir ve yükler. Daha fazla ayrıntı için bakabilirsin burada .


1
gitme ortamım zaten iyiydi, ancak kurallarına aşina değilim go get, bu yüzden github.com:capotej/groupcache-db-experiment.gityasadışı değil, yasal yol nedir?
Roger

2
Gitmeyi deneyin -v github.com/capotej/groupcache-db-experiment / ... @peterSO'nun dediği gibi
Pravin Mishra

1
Go v1.8 ile başlayarak, ayarlanmadıysa GOPATHvarsayılan olarak $HOME/goayarlanır. Kaynak 1 , 2 .
Manavalan Gajapathy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.