Go: go get $GOPATH error, когда GOPATH установлен

При запуске команды go get:

sudo go get github.com/go-sql-driver/mysql

Я получаю следующую ошибку

пакет github.com/go-sql-driver/mysql: невозможно загрузить, $GOPATH не установлен. Для получения более подробной информации см. Go Help Gopath

Однако $ GOPATH уже установлен.

Бег echo $GOPATH дает /Users/userxyz/Desktop/Code

Бег go env дает

.....

GOPATH="/Users/userxyz/Desktop/Code"

...

GOROOT="/usr/local/go"

.....

Я уже пытался установить GOPATH в качестве переменной среды, добавив следующие строки

export GOPATH="$HOME/Desktop/Code"
export PATH=$PATH:$GOPATH/bin

в следующие файлы, в качестве альтернативы

~/.profile (/etc/profile)
~/.bashrc
~/.bash_profile

5 ответов

Решение
sudo go get github.com/go-sql-driver/mysql

Это работает go get под root пользователь, которого нет $GOPATH задавать.

Просто делать:

go get github.com/go-sql-driver/mysql

Как правило, сделать:

go get

в папке проекта, и он установит все зависимости. Следующее установит зависимости, упомянутые в тестах:

go get -t

Вам просто нужно бросить sudo, Ваши переменные среды определены на уровне пользователя. если вы делаете sudo go env вы увидите, что GOPATH там не установлен

В моем случае я импортировал неверный GOPATH что не существовало и неверно GOROOT в моем PATH

установка моего export GOROOT=/opt/go затем export GOPATH=$HOME/work, обеспечение $HOME/work существовал и имел доступ для моего пользователя, кажется, решил проблему для go get {whattoget}затем обеспечение export GOPATH=$HOME/work export PATH=$PATH:$GOROOT/bin:$GOPATH/bin был в моем ~/.profile помог. Ничто в этой теме, казалось, не совсем подходит.

В дальнейшем я мог бы просто начать использовать Docker для создания своих проектов go, так как это немного мучительно, а документация и ошибки длинные, но, кажется, не объясняют, что не так, каким-либо значимым и ясным способом (GOROOT а также GOPATH были оба настроены, но PATHGOROOT а также GOPATH Казалось, все немного не в себе).

Тебе не нужен Судо. Если "Соглашение с лицензией Xcode/iOS требует прав администратора" останавливает вас, просто заново откройте Xcode и примите лицензионное соглашение Xcode.

Просто понял после написания ответа, что уже почти на 4 года поздно, но я оставлю это на всякий случай, если есть другие, которым могут понадобиться ответы...

Похоже, что вы могли создать каталог с помощью sudo или с привилегиями root. Если вы попытаетесь $go get с обычным пользователем вы получаете ошибку прав доступа, а когда вы пытаетесь сделать это с помощью sudo, вы получаете ошибку сброса GOPATH. У меня недавно была эта проблема, и я решил ее, просто изменив владельца каталога.

export GOPATH=/directory/of/your/goproject
chown -R ubuntu@staff $GOPATH
cd $GOPATH && go get 

Вот только у вас есть некоторые переменные env для двойной проверки:

export GOPATH=/home/ubuntu/work export
PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Имейте в виду, что вам не нужно объявлять или изменять $GOROOT.


Наконец, вы можете использовать [profile.d][1] для экспорта переменных env:

cat > /etc/profile.d/setgoenv.sh <<EOL
export GOPATH=/home/ubuntu/work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
EOL

Я надеюсь, что это помогло.

Другие вопросы по тегам