go install în Go

Comanda go, module și teste Go 1.0 (pachet@versiune: Go 1.16)

Compilează un program și pune executabilul în directorul bin (GOBIN sau GOPATH/bin), ca să-l poți rula de oriunde.

Sintaxă
go install                    # pachetul main curent
go install ./cmd/unealta
go install modul/cmd/unealta@latest
go install modul/cmd/unealta@v1.2.3

Ce face go install

go install compilează un pachet main și copiază executabilul în $GOBIN sau, dacă nu este setat, în $GOPATH/bin (de obicei ~/go/bin). Dacă acel director este în PATH, programul se poate rula din orice loc, după nume.

Cu @versiune (sau @latest) instalezi unelte din alte module fără să atingi go.mod-ul proiectului tău: go install golang.org/x/tools/cmd/stringer@latest. Fără versiune, instalează pachetul din modulul curent.

Parametri

Parametru Descriere
pachet[@versiune] Pachetul de instalat; cu versiune este descărcat din modulul lui.

Exemple

Exemplul 1: Instalarea unei unelte din proiect

go install ./tools/gencurs
go env GOBIN GOPATH
ls ~/go/bin
gencurs -h

Rezultat în terminal


/home/ana/go
gencurs
Usage of gencurs:
  -o string
    	fișierul generat (default "curs.go")

Exemplul 2: O unealtă dintr-un alt modul

stringer generează metode String() pentru constante; după instalare se poate folosi cu go generate.

go install golang.org/x/tools/cmd/stringer@latest
which stringer

Rezultat în terminal

go: downloading golang.org/x/tools v0.38.0
go: downloading golang.org/x/mod v0.29.0
go: downloading golang.org/x/sync v0.17.0
/home/ana/go/bin/stringer

Greșeli frecvente

  • Directorul ~/go/bin nu este în PATH: programul se instalează, dar command not found. Adaugă export PATH=$PATH:$(go env GOPATH)/bin.
  • go install pe un pachet care nu este main: nu creează niciun executabil.
  • go install modul@latest pentru un modul cu directive replace în go.mod: nu este permis; clonează proiectul și rulează go install în el.

Comenzi înrudite

  • go build: Compilează pachetele și, pentru pachetul main, creează un executabil de sine stătător.
  • go get: Adaugă, actualizează sau elimină dependențe în go.mod; descarcă modulele necesare.
  • go env: Afișează (și opțional salvează) variabilele de mediu și setările folosite de unealta go.
  • go generate: Rulează comenzile scrise în comentarii //go:generate, de obicei pentru a genera cod Go automat.