идти всегда устанавливайте попытки использовать 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, казалось, было установлено правильно, но теперь все это, по-видимому, работает.

503   4  
go

4 ответов:

GOPATH и рабочие пространства

$ 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

    Ничего не найдено.