web-dev-qa-db-fra.com

Comment installer des projets tiers golang à partir de sources de téléchargement?

J'essaie d'installer mgo qui est un pilote mongo écrit en golang. 

La commande standard: 

go get launchpad.net/mgo

Mais cela a échoué à cause de problèmes de cert.

Je télécharge donc manuellement les sources de mgo au E:\mgo local, mais je ne sais pas comment l’installer.

L'arbre de fichier:

├─.bzr
│  ├─branch
│  │  └─lock
│  ├─branch-lock
│  ├─checkout
│  │  └─lock
│  └─repository
│      ├─indices
│      ├─lock
│      ├─obsolete_packs
│      ├─packs
│      └─upload
├─bson
└─testdb

J'ai essayé:

cd mgo
go install

Il rapporte:

auth.go:34:2: import "launchpad.net/mgo/bson": cannot find package

Mais si je tente d’installer d’abord bson:

cd bson
go install

Il signale une autre erreur:

go install: no install location for _/E_/mgo/bson

Alors, quelle est la commande correcte pour l'installer?

39
Freewind

Enfin, j'ai réussi à installer le projet mgo. Je pense que cela sera utile pour les débutants, alors je réponds ici.

Tout d'abord, nous avons besoin de GOPATH

Définissez une variable env GOPATH, qui correspond au répertoire racine de votre projet. Elle doit avoir un sous-répertoire src.

Pour moi, je le définit à E:\WORKSPACE_GO\mgo, puis je crée un sous-répertoire src

Copier le projet dans le src

Copiez ensuite le projet mgo dans %GOPATH%/mgo, mais vous devez faire attention à la structure des répertoires. Il devrait être exactement le même que le paquet défini dans les sources.

Pour mgo, son package est launchpad.net/mgo; la structure doit donc être:

E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo

va installer

Enfin, go install les:

cd E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo\bson
go install

cd ..
go install

S'il n'y a pas d'erreur entrée, il devrait être installé avec succès.

41
Freewind

SetGOPATH . Déplacez le code sous $GOPATH. ensuite

cd $GOPATH/src/github.com/user/package
go get .

Explication:

go build .    # produces binary in current dir 
go install .  # produces binary in $GOPATH/bin 
go get .      # same as 'install' but resolves import deps 

Plus à ce sujet

27
rofrol

Tout cela dit, GOPATH est un path - similaire au classpath de Java, ou à PATH. Ce n'est pas un emplacement de répertoire unique: c'est une séquence d'emplacements de répertoire. Par exemple, j'utilise régulièrement des déclarations de la forme,

GOPATH=dira:dirb:dirc go install mypackage
0
cliffberg