Como posso instalar um pacote com go get?

132

Eu quero instalar pacotes do github para o meu gopath, tentei o seguinte:

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

o repositório está aqui .

Roger
fonte
4
Se você tiver um erro com este comando, remova .gitno final da linha:go get github.com:capotej/groupcache-db-experiment
Benyamin Jafari

Respostas:

120

Comando ir

Baixe e instale pacotes e dependências

Uso:

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

Get baixa os pacotes nomeados pelos caminhos de importação, juntamente com suas dependências. Em seguida, instala os pacotes nomeados, como 'go install'.

O sinalizador -d instrui para parar após o download dos pacotes; isto é, instrui o get a não instalar os pacotes.

O sinalizador -f, válido apenas quando -u estiver definido, força o comando -u a não verificar se cada pacote foi retirado do repositório de controle de origem implícito em seu caminho de importação. Isso pode ser útil se a fonte for uma bifurcação local do original.

O sinalizador -fix instrui a executar a ferramenta de correção nos pacotes baixados antes de resolver dependências ou criar o código.

O sinalizador -insecure permite buscar repositórios e resolver domínios personalizados usando esquemas não seguros, como HTTP. Use com cuidado.

O sinalizador -t instrui a baixar também os pacotes necessários para construir os testes para os pacotes especificados.

O sinalizador -u instrui a usar a rede para atualizar os pacotes nomeados e suas dependências. Por padrão, get usa a rede para verificar pacotes ausentes, mas não a utiliza para procurar atualizações nos pacotes existentes.

O sinalizador -v permite progresso detalhado e saída de depuração.

O Get também aceita sinalizadores de construção para controlar a instalação. Veja 'vá ajudar a construir'.

Ao fazer check-out de um novo pacote, get cria o diretório de destino GOPATH / src /. Se o GOPATH contiver várias entradas, get utilizará a primeira. Para mais detalhes, consulte: 'go help gopath'.

Ao fazer o check-out ou atualizar um pacote, obtenha uma ramificação ou marca que corresponda à versão instalada localmente do Go. A regra mais importante é que, se a instalação local estiver executando a versão "go1", obtenha uma ramificação ou marca chamada "go1". Se essa versão não existir, ela recuperará a ramificação padrão do pacote.

Quando você obtém check-out ou atualiza um repositório Git, ele também atualiza todos os sub-módulos git mencionados pelo repositório.

O Get nunca faz check-out ou atualiza o código armazenado nos diretórios dos fornecedores.

Para mais informações sobre a especificação de pacotes, consulte 'ir pacotes de ajuda'.

Para obter mais informações sobre como 'go get' encontra o código-fonte para download, consulte 'go help importpath'.

Este texto descreve o comportamento de get ao usar o GOPATH para gerenciar o código-fonte e as dependências. Se, em vez disso, o comando go estiver sendo executado no modo de reconhecimento de módulo, os detalhes dos sinalizadores e efeitos de get mudam, assim como 'go help get'. Veja 'go help modules' e 'go help module-get'.

Veja também: construa, instale, limpe.


Por exemplo, mostrando a saída detalhada,

$ 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
fonte
17
Se isso ajudar alguém, a solução para o meu problema ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) foi remover o .gitsufixo da URL do Github.
Excalibur
6
o que -vfaz?
yu yang Jian
3
@yuyangJian significa saída detalhada.
Omrsin 12/0318
3
amor como o -vcomando não é referenciado nessa lista lol FML ... certamente isso significa detalhado tho
Alexander Mills
2
Como você executa uma vez que você usou go get?
acjay
75

Primeiro, precisamos do GOPATH

A $GOPATHé uma pasta (ou conjunto de pastas) especificado pelo seu ambiente variável. Devemos notar que este não é o $GOROOTdiretório em que o Go está instalado.

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

Usamos o ~/gocodecaminho em nosso computador para armazenar a fonte de nosso aplicativo e suas dependências. O GOPATHdiretório também armazenará os binários de seus pacotes.

Em seguida, marque Go env

Seu sistema deve ter $GOPATHe $GOROOT, abaixo, está o meu Env:

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"

Agora, você executa o pacote download go:

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

Obtenha downloads e instala os pacotes nomeados pelos caminhos de importação, juntamente com suas dependências. Para mais detalhes, você pode procurar aqui .

Pravin Mishra
fonte
1
meu ambiente go já está bom, mas não estou familiarizado com as regras go get, então github.com:capotej/groupcache-db-experiment.gitnão é ilegal, qual é o caminho legal?
roger
2
Tente ir buscar -v github.com/capotej/groupcache-db-experiment / ... como @peterSO disse
Pravin Mishra
1
A partir do Go v1.8, o GOPATHpadrão é $HOME/gose não estiver definido. Fonte 1 , 2 .
Manavalan Gajapathy 2/03