2016-03-18 12 views
7

Próbuję uruchomić golang w trybie interaktywnym.Błąd "command not found" with Golang

chcę użyć go-eval na to, że postępujesz zgodnie z instrukcjami README:

  • Pobiegłem go get github.com/sbinet/go-eval/ powodzeniem
  • wpadłem go-eval co spowodowało -bash: go-eval: command not found

trochę więcej informacji:

  • echo $PATH powraca: /usr/local/go/bin:...

  • echo $GOPATH powraca: $HOME/golang

  • uruchomione whereis go-eval nie zwraca wyjście

  • działa go install go-eval Powroty:

    can't load package: package go-eval: cannot find package "go-eval" in any of: /usr/local/go/src/go-eval (from $GOROOT) $HOME/golang/src/go-eval (from $GOPATH)

+0

Jaki jest twój GOPATH? jest GOPATH/bin w twojej PATH? – user1431317

+0

jest $ HOME/go/bin w Twojej PATH? – user1431317

+0

Dlaczego w dół? Proszę wytłumacz. – Forge

Odpowiedz

7

Musisz dodać GOPATH/bin do PATH.

PATH="$GOPATH/bin:$PATH" 

Aktualizacja: Starting with Go 1.8, domyślnie GOPATH do $HOME/go jeśli nie jest ustawiona. Powyższe nie zadziała, jeśli GOPATH nie jest jawnie ustawiony.

Aby ustawić oba, dodać do swojej .profile:

export GOPATH="$HOME/go" 
PATH="$GOPATH/bin:$PATH" 
+0

Działa. ** musisz dosłownie ** użyć polecenia "$ GOPATH" w komendzie, aby uzyskać działającą konfigurację. Jeśli po prostu ręcznie zapiszesz pełną ścieżkę, nawet jeśli jest ona poprawna i dokładna, nie wydaje się działać. Ostatecznie, kiedy testujesz z "echo $ PATH", wszystko, co zobaczysz, jest po prostu ścieżką. GOPATH jest używany jako wskaźnik do zmiennej środowiskowej, ale nie jest to wskazane w żaden sposób podczas testowania z "echo $ PATH". – MarsAndBack

+0

Powinno działać, jeśli ręcznie wprowadzasz ścieżkę, $ GOPATH jest po prostu ładniejsza, ponieważ nie musisz zakodować ścieżki (jeśli GOPATH jest ustawiony, co nie jest już wymagane od wersji 1.8). – user1431317

4

Czy binarny go-eval w $GOPATH/bin? Czy używasz polecenia z $GOPATH/bin/ jako swojego katalogu roboczego? Jeśli nie, to jest to prawdopodobny problem.

go get & go install instaluje iść binarne (jeśli w ogóle) w $GOPATH/bin

Odjazd $GOPATH/bin dla GO-eval binarny. Jeśli jest tam, spróbuj uruchomić go od $GOPATH/bin z ./go-eval. Jeśli to działa, jesteś dobry.

W przyszłości, jeśli chcesz uruchomić pliki binarne znalezione w $GOPATH/bin z dowolnego miejsca w powłoce, dodaj następujące elementy do swojego.bashrc lub profil:

export PATH=$PATH:$GOPATH/bin

Następnie uruchom terminal lub uruchomić . ~/.bashrc lub . /etc/profile

Uruchamiając przejdź zainstalować go-eval uzyskać:

nie może załadować pakiet: Pakiet iść -eval: nie można znaleźć pakietu "go-eval" w jednym z: /usr/local/go/src/go-eval (z $ GOROOT) $ HOME/golang/src/go-eval (od $ GOPATH)

Otrzymujesz powyższy błąd, ponieważ go-eval nie znajduje się w $HOME/golang/src/go-eval. Uruchomienie go get github.com/sbinet/go-eval/ spowoduje pobranie źródła do $GOPATH/src/github/sbinet/go-eval/. Jeśli chcesz uruchomić go install go-eval, musisz określić nazwę pakietu odpowiednią dla jego pozycji w hierarchii katalogów w $GOPATH/src.

np. go install github/sbinet/go-eval

2

Chciałbym dodać to oprócz odpowiedzi.

Jako pomocną wskazówka, zawsze możesz przetestować swoje polecenia za pomocą komendy , którą.

Takich jak: które wykraczają

Jeśli polecenie nie zostanie znaleziony, wiesz, że masz problem PATH trzeba zająć w pierwszej kolejności.

Następnie można skoncentrować się na znalezieniu polecenia za pomocą polecenia znajdź.

Takich jak: find/-name "go" -print 2>/dev/null

Pierwszy ukośnik jest katalog, aby rozpocząć wyszukiwanie, argument do -name jest komenda” ponowne szukanie i -print ma dobry wygląd. 2>/dev/null wysyła wyniki katalogów, które nie są dostępne dla neverland (null), więc nie musisz widzieć mnóstwa błędów.

Za pomocą tego procesu można szybko znaleźć odpowiednie polecenie, a następnie dodać je do zmiennej środowiskowej PATH i staje się dostępne, jak podano w innych odpowiedziach.