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