A GOPATH megértése
Bevezetés
Ez a cikk végigvezet azon, hogy mi az a GOPATH
, hogyan működik, és hogyan kell beállítani. Ez kulcsfontosságú lépés a Go fejlesztőkörnyezet beállításához, valamint annak megértéséhez, hogy a Go hogyan találja meg, telepíti és építi be a forrásfájlokat. Ebben a cikkben a GOPATH
-t fogjuk használni, amikor az általunk tárgyalt mappastruktúra fogalmára utalunk. A $GOPATH
-t fogjuk használni, ha arra a környezeti változóra utalunk, amelyet a Go a mappastruktúra megtalálásához használ.
A Go munkaterület az, ahogyan a Go kezeli a forrásfájljainkat, a lefordított binárisokat és a gyorsabb későbbi fordításhoz használt gyorsítótárazott objektumokat. Jellemző, és ajánlott is, hogy csak egy Go Workspace legyen, bár lehetséges, hogy több tér is legyen. A GOPATH
a munkaterület gyökérmappájaként működik.
A $GOPATH környezeti változó beállítása
A $GOPATH
környezeti változó felsorolja azokat a helyeket, ahol a Go a Go munkaterületeket keresi.
Alapértelmezés szerint a Go feltételezi, hogy a GOPATH
helyünk a $HOME/go
, ahol a $HOME
a számítógépünkön lévő felhasználói fiókunk gyökérkönyvtárát jelenti. Ezt a $GOPATH
környezeti változó beállításával tudjuk megváltoztatni. További tanulmányozáshoz kövesse ezt a bemutatót a környezeti változók olvasásáról és beállításáról Linuxban.
Az $GOPATH
változó beállításáról további információkat a Go dokumentációban talál.
Ez a sorozat továbbá végigveszi a Go telepítését és a Go fejlesztőkörnyezet beállítását.
$GOPATH Is Not $GOROOT
A $GOROOT
ben a Go kódja, fordítója és eszközei laknak – ez nem a mi forráskódunk. A $GOROOT
általában valami olyasmi, mint a /usr/local/go
. A mi $GOPATH
-ünk általában valami olyasmi, mint $HOME/go
.
Noha a $GOROOT
változót már nem kell külön beállítanunk, a régebbi anyagokban még mindig hivatkoznak rá.
Most beszéljük meg a Go munkaterület felépítését.
A Go munkaterület anatómiája
A Go munkaterületen belül, vagy GOPATH
, három könyvtár van: bin
, pkg
és src
. Mindegyik könyvtárnak különleges jelentősége van a Go eszközlánc számára.
.├── bin├── pkg└── src └── github.com/foo/bar └── bar.go
Vessünk egy pillantást az egyes könyvtárakra.
A $GOPATH/bin
könyvtárban helyezi el a Go a binárisokat, amelyeket go install
fordít. Az operációs rendszerünk a $PATH
környezeti változót használja a bináris alkalmazások keresésére, amelyek teljes elérési útvonal nélkül is futtathatók. Ajánlatos ezt a könyvtárat hozzáadni a globális $PATH
változónkhoz.
Ha például nem adjuk hozzá a $GOPATH/bin
könyvtárat a $PATH
-hoz, hogy onnan futtassunk egy programot, akkor a következőt kellene futtatnunk:
- $GOPATH/bin/myapp
Ha a $GOPATH/bin
könyvtárat hozzáadjuk a $PATH
-hoz, akkor ugyanezt a hívást így tudjuk végrehajtani:
- myapp
A $GOPATH/pkg
könyvtárban a Go előre lefordított objektumfájlokat tárol, hogy a programok későbbi fordítását meggyorsítsa. Általában a legtöbb fejlesztőnek nem lesz szüksége arra, hogy hozzáférjen ehhez a könyvtárhoz. Ha problémákat tapasztalunk a fordítással kapcsolatban, nyugodtan törölhetjük ezt a könyvtárat, és a Go ezt követően újraépíti.
A src
könyvtárban kell elhelyezni az összes .go
fájlunkat, vagyis a forráskódot. Ez nem tévesztendő össze a Go eszközrendszer által használt forráskóddal, ami a $GOROOT
könyvtárban található. Ahogy Go alkalmazásokat, csomagokat és könyvtárakat írunk, ezeket a fájlokat a $GOPATH/src/path/to/code
alatt fogjuk elhelyezni.
Mi a csomagok?
A Go kód csomagokba van szervezve. Egy csomag a lemezen lévő egyetlen könyvtárban lévő összes fájlt képviseli. Egy könyvtár csak bizonyos fájlokat tartalmazhat ugyanabból a csomagból. A csomagokat az összes felhasználó által írt Go forrásfájllal együtt a $GOPATH/src
könyvtár alatt tároljuk. A csomagfelbontást a különböző csomagok importálásával érthetjük meg.
Ha a kódunk a $GOPATH/src/blue/red
cím alatt található, akkor a csomag neve red
kell legyen.
A red
csomag import utasítása a következő lenne:
import "blue/red"
A forráskód-tárhelyeken, például a GitHubon és a BitBucketen található csomagok importálási útvonalának részeként szerepel a tár teljes helye.
Például a https://github.com/gobuffalo/buffalo forráskódot a következő importálási útvonallal importálnánk:
import "github.com/gobuffalo/buffalo"
Ezért ez a forráskód a következő helyen lenne a lemezen:
$GOPATH/src/github.com/gobuffalo/buffalo
Következtetés
Ebben a cikkben a GOPATH
mint a Go által elvárt, a forráskódunkat tartalmazó mappák halmazát tárgyaltuk, valamint azt, hogy mik ezek a mappák, és mit tartalmaznak. Megbeszéltük, hogyan változtathatjuk meg ezt a helyet az alapértelmezett $HOME/go
helyett a felhasználó által választottra a $GOPATH
környezeti változó beállításával. Végül megbeszéltük, hogyan keresi a Go a csomagokat ebben a mappastruktúrában.
A Go 1.11-ben bevezetett Go modulok célja a Go munkaterületek és a GOPATH
felváltása. Bár ajánlott elkezdeni a modulok használatát, egyes környezetek, például a vállalati környezetek nem biztos, hogy készen állnak a modulok használatára.
A GOPATH
a Go beállításának egyik trükkösebb aspektusa, de ha egyszer beállítjuk, általában elfelejthetjük.
Leave a Reply