Porozumění GOPATH
Úvod
V tomto článku se dozvíte, co je to GOPATH
, jak funguje a jak jej nastavit. To je klíčový krok pro nastavení vývojového prostředí Go a také pro pochopení toho, jak Go vyhledává, instaluje a sestavuje zdrojové soubory. V tomto článku budeme používat GOPATH
, když budeme odkazovat na koncept adresářové struktury, kterou budeme probírat. Při odkazování na proměnnou prostředí, kterou Go používá k nalezení struktury složek, budeme používat $GOPATH
.
Pracovní prostor Go je způsob, jakým Go spravuje naše zdrojové soubory, zkompilované binární soubory a objekty v mezipaměti, které později slouží k rychlejší kompilaci. Typické a také doporučené je mít pouze jeden pracovní prostor Go, i když je možné mít více prostorů. GOPATH
funguje jako kořenová složka pracovního prostoru.
Nastavení proměnné prostředí $GOPATH
Proměnná prostředí $GOPATH
uvádí seznam míst, kde má Go hledat pracovní prostory Go.
Ve výchozím nastavení Go předpokládá, že naše umístění GOPATH
je na adrese $HOME/go
, kde $HOME
je kořenový adresář našeho uživatelského účtu v počítači. To můžeme změnit nastavením proměnné prostředí $GOPATH
. Další informace o čtení a nastavování proměnných prostředí v Linuxu naleznete v tomto návodu.
Další informace o nastavení proměnné $GOPATH
naleznete v dokumentaci ke Go.
Dále v tomto seriálu projdeme instalaci Go a nastavení vývojového prostředí Go.
$GOPATH není $GOROOT
V $GOROOT
je umístěn kód, kompilátor a nástroje Go – není to náš zdrojový kód. $GOROOT
je obvykle něco jako /usr/local/go
. Naše $GOPATH
je obvykle něco jako $HOME/go
.
Přestože proměnnou $GOROOT
již nemusíme speciálně nastavovat, ve starších materiálech se na ni stále odkazuje.
Prodiskutujme nyní strukturu pracovního prostoru Go.
Anatomie pracovního prostoru Go
Uvnitř pracovního prostoru Go neboli GOPATH
jsou tři adresáře: bin
, pkg
a src
. Každý z těchto adresářů má pro řetězec nástrojů Go zvláštní význam.
.├── bin├── pkg└── src └── github.com/foo/bar └── bar.go
Podívejme se na každý z těchto adresářů.
Deskriptor $GOPATH/bin
je místo, kam Go umisťuje binární soubory, které go install
kompiluje. Náš operační systém používá proměnnou prostředí $PATH
k vyhledání binárních aplikací, které lze spustit bez úplné cesty. Doporučujeme přidat tento adresář do naší globální proměnné $PATH
.
Pokud bychom například nepřidali $GOPATH/bin
do $PATH
, abychom odtud mohli spustit program, museli bychom spustit:
- $GOPATH/bin/myapp
Pokud je $GOPATH/bin
přidán do $PATH
, můžeme stejné volání provést takto:
- myapp
Deskriptor $GOPATH/pkg
je místo, kam Go ukládá předkompilované objektové soubory, aby urychlilo následnou kompilaci programů. Většina vývojářů obvykle nebude potřebovat k tomuto adresáři přistupovat. Pokud se vyskytnou problémy s kompilací, můžete tento adresář bezpečně smazat a Go jej poté znovu vytvoří.
Deskriptor src
je místem, kde musí být umístěny všechny naše soubory .go
neboli zdrojový kód. Tento adresář by se neměl zaměňovat se zdrojovým kódem, který používají nástroje Go a který se nachází v adresáři $GOROOT
. Při psaní aplikací, balíčků a knihoven Go budeme tyto soubory umisťovat do adresáře $GOPATH/src/path/to/code
.
Co jsou balíčky?
Kód Go je organizován v balíčcích. Balíček představuje všechny soubory v jednom adresáři na disku. Jeden adresář může obsahovat pouze určité soubory ze stejného balíčku. Balíčky jsou spolu se všemi uživatelem napsanými zdrojovými soubory Go uloženy v adresáři $GOPATH/src
. Rozlišení balíčků můžeme pochopit pomocí importů různých balíčků.
Pokud náš kód žije v adresáři $GOPATH/src/blue/red
, pak by jeho název měl být red
.
Příkaz import pro balíček red
by byl:
import "blue/red"
Balíčky, které žijí v repozitářích zdrojového kódu, jako jsou GitHub a BitBucket, mají jako součást cesty importu celé umístění repozitáře.
Například bychom importovali zdrojový kód na adrese https://github.com/gobuffalo/buffalo pomocí následující importní cesty:
import "github.com/gobuffalo/buffalo"
Tento zdrojový kód by se tedy nacházel v následujícím umístění na disku:
$GOPATH/src/github.com/gobuffalo/buffalo
Závěr
V tomto článku jsme probrali GOPATH
jako sadu složek, u kterých Go očekává, že v nich bude náš zdrojový kód žít, a také to, jaké tyto složky jsou a co obsahují. Probrali jsme, jak změnit toto umístění z výchozího $HOME/go
na volbu uživatele nastavením proměnné prostředí $GOPATH
. Nakonec jsme probrali, jak Go vyhledává balíčky v této struktuře složek.
Moduly Go, zavedené ve verzi Go 1.11, mají za cíl nahradit pracovní prostory Go a GOPATH
. Přestože se doporučuje začít moduly používat, některá prostředí, například firemní, nemusí být na používání modulů připravena.
Modul GOPATH
je jedním ze složitějších aspektů nastavení Go, ale jakmile jej nastavíme, můžeme na něj obvykle zapomenout.
Leave a Reply