идти всегда устанавливайте попытки использовать GOPATH и GOROOT не указан в списке идут ОКР
У меня есть довольно неприятная проблема с GOPATH, которая, несмотря на то, что она установлена в .profile, не появляется при вызове go env и, похоже, не влияет на целевое местоположение go install.
Я пытаюсь использовать go install для установки пакетов, и получаю эту ошибку, которая ясно показывает, что он пытается установить в /usr/lib/go, а не в предназначенном каталоге /home/me/dev/go.
$ go install github.com/songgao/colorgo
go install github.com/songgao/go.pipeline: mkdir /usr/lib/go/pkg/linux_386/github.com: permission denied
go env дает следующие результаты.
$ go env
GOROOT="/usr/lib/go"
GOBIN=""
GOARCH="386"
GOCHAR="8"
GOOS="linux"
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="linux"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_386"
GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread"
CGO_ENABLED="1"
Но это наверняка - это множество.
$ echo $GOPATH
/home/me/dev/go
Обновление: я экспортировал GOPATH в ~/.profile и нашел его, но у меня все еще есть та же проблема.
$ export GOPATH=/home/me/dev/go
$ go env
GOROOT="/usr/lib/go"
GOBIN=""
GOARCH="386"
GOCHAR="8"
GOOS="linux"
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="linux"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_386"
GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread"
CGO_ENABLED="1"
Обновление снова: эта проблема прекратилась с тех пор, как я обновился до go1.1beta2. Я не уверен, что было неправильно, потому что GOPATH, казалось, было установлено правильно, но теперь все это, по-видимому, работает.
4 ответов:
$ mkdir -p $HOME/dev/go/src $ mkdir -p $HOME/dev/go/binВ
$HOME/.profile:export GOPATH=$HOME/dev/go: export PATH=$PATH:$HOME/dev/go/binЗатем перезагрузитесь или выйдите из системы и войдите в систему.
Как только вы вошли в систему, прежде всего выполните:
$ env | grep -i '^GO' GOPATH=/home/me/dev/go $ cat $HOME/.profileКакой результат вы получаете?
Поскольку вы дали показания о том, что установили GOPATH, вторая часть вашего вопроса - GOPATH не указан в разделе go env - может быть вызвана "go env" вашей установленной версии. Ни go1 (linux), ни go1.0.2 (windows) версии "go env" не отображают GOPATH. Если вы посмотрите на источник (GOROOT / src / cmd / go / env.go), вы найдете справа вверху список элементов для отображения (mkEnv), который начинается с GOROOT и не содержит GOPATH.
Версия go1.0.3 (для Windows) отображается ГОПАТ; соответствующий список в источнике, однако, начинается с GOARCH.
Я признаю, что это не решает первую часть вашей проблемы - (попытка) установить в GOROOT - но, возможно, вышеизложенное поможет вам сосредоточиться на виновнике (процессе сборки).
Я думаю, что совершенно ясно, что go install everything in your GOTOOLDIR, GOTOOLDIR также связан с GOROOT:
Ваш: GOROOT=" / usr / lib / go "
Установите Go tools
Бинарные дистрибутивы Go предполагают, что они будут установлены в /usr / local / go (или c:\Go под Windows), но можно установить их в другом месте. Если вы сделаете это, вам нужно будет установить переменную среды GOROOT в этот каталог при использовании инструментов Go.
Например, если вы установили Go to your home directory, вы должны добавить следующие команды в $HOME/.профиль:
Экспорт GOROOT=$HOME / go
Путь экспорта=$PATH:$GOROOT/bin
Пользователи Windows должны прочитать раздел о настройке переменных среды под Windows.
Вы должны следовать этим шагам, чтобы изменить свой ГОРООТ, а не ГОПАТ, тогда все должно работать.
Если это не так работы, изменения GOTOOLDIR, а также.
Создайте мягкую ссылку, затем скопируйте двоичный файл go в
/usr/localследующим образом:# ln -sf /usr/local/go/bin/go /usr/bin/go
Comments