2016-03-15 17 views
14

mogę ustawić GOPATH doCzy mogę mieć wiele katalogów GOPATH?

/Users/me/dev/go 

i mam

/Users/me/dev/go/src/client1 
/Users/me/dev/go/src/client2 
/Users/me/dev/go/src/client3 

a także

/Users/me/dev/client1/rails_project 
/Users/me/dev/client2/php_project 
etc. 

Nie lubię, jak w moim folderze głównym dev jestem zmuszona do ten ogólny katalog "go", który zawiera wiele różnych projektów dla klienta.

+0

Tak. Oddzielne wpisy: lub; w zależności od systemu operacyjnego. – Volker

Odpowiedz

21

Tak, GOPATH znajduje się lista katalogów (jak PATH). Szczegółowe informacje można uzyskać, uruchamiając go help gopath. Na przykład w systemie Linux:

$ go env 
GOROOT="/home/peter/go" 
GOPATH="/home/peter/gopath:/home/peter/public/gopath" 
$ 

Mam coś podobnego w systemie Windows.

Uwaga: Linux używa : jako separatora listy GOPATH; Windows używa separatora jako ;.

Jeśli użyjesz go get, zostanie domyślnie ustawiony pierwszy katalog na liście.

Uruchom go env, aby sprawdzić, czy wszystko jest w porządku.

+7

Niestety, to nadal powoduje różnego rodzaju smutek, ponieważ oprzyrządowanie nie radzi sobie z wieloma studniami GOPATH. Na przykład katalogi dostawców są pobierane tylko w pierwszym elemencie ścieżki; 'go get' działa tylko w stosunku do pierwszego elementu na ścieżce; większość (wszystkie?) narzędzia do zarządzania dostawcami nie oczekują więcej niż jednego elementu na ścieżce; różne ścieżki robocze są uważane za znajdujące się w różnych "drzewach". Pakiety w więcej niż jednej lokalizacji (sprzedawane) stają się trochę nieprzyjemne. Wciąż próbuję to wszystko rozgryźć, ale jeszcze nie znalazłem dobrego rozwiązania. – payneio

6

Tak.

Przytoczyć udać się:

$ go help gopath 

Ścieżka Go służy do rozwiązywania instrukcje importu. Jest zaimplementowany i udokumentowany w pakiecie go/build.

Zmienna środowiskowa GOPATH wyświetla miejsca do wyszukania kodu Go.
W systemie Unix wartość jest łańcuchem rozdzielonym dwukropkami.
W systemie Windows wartość jest łańcuchem rozdzielonym średnikami.
Na planie 9 wartość jest listą.

GOPATH musi być ustawiony na pobieranie, kompilowanie i instalowanie pakietów poza standardowym drzewem GO w wersji .

Każdy katalog wymieniony w GOPATH musi mieć ustaloną strukturę:

Katalog src posiada kod źródłowy. Ścieżka poniżej src określa ścieżkę importu lub nazwę pliku wykonywalnego.

...

1

This blog post daje bardzo ładne wyjaśnienie w jaki sposób i dlaczego jeden zestaw wielu wartości w GOPATH, zwłaszcza gdy mówi:

Moja GOPATH składa się z 3 folderów lub obszarów roboczych GOPATH.

Pierwszy to mój obszar roboczy do lądowania .Ponieważ jest on wymieniony jako pierwszy, zawsze, gdy otrzymam nowy pakiet, zawsze kończy się w tym obszarze roboczym.

Idź do każdego katalogu wymienionego w GOPATH, aby znaleźć kod źródłowy, ale nowe pakiety są zawsze pobierane do pierwszego katalogu na liście. Ustanawiam zasadę, że nigdy nie robię żadnego rozwoju, więc zawsze jest całkowicie bezpieczne czyszczenie tego folderu, gdy robi się zbyt duże (z pakietami Go, których nie używam). W końcu ma tylko pakiety Go, które mogę pobrać ponownie z go get.

Moja druga przestrzeń robocza jest dla wszystkich moich osobistych pakietów Go i innych pakietów, które mogę chcieć "faworyzować" lub rozwijać. Przenoszę rzeczy, których używam regularnie z pierwszego obszaru roboczego na drugie.

Moja trzecia przestrzeń robocza poświęcona jest prywatnym pakietom Go z mojej pracy i ich zależnościom. To wygodne, że moje pakiety robocze są oddzielone od wszystkich moich osobistych rzeczy, więc nie wchodzą sobie wzajemnie w drogę.

Powiązane problemy