Как мне установить переменную среды GOPATH в Ubuntu? Какой файл я должен редактировать?
Я пытаюсь сделать go get
:
go get github.com/go-sql-driver/mysql
и он не работает со следующей ошибкой:
package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath
когда я делаю go env
, список значений Go показан ниже:
[email protected]:~$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
ясно, что GOPATH не установлен, как и где его установить?
Я вижу много потоков, которые упоминают эту ошибку, но ни один из них не дает ответа на мой вопрос, какой файл нужно отредактировать, чтобы указать значение для этого пути?
Ответы
Ответ 1
2018+ Ответ:
Проверьте этот ответ.
Ответ до 2018 года:
Просто добавьте следующие строки в ~/.bashrc, и это сохранится. Тем не менее, вы можете использовать другие пути, которые вам нравятся, как GOPATH вместо $ HOME/go в моем примере.
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Ответ 2
Ubuntu 14.04
export GOPATH=$HOME/go
Кроме того, вы можете добавить эту строку в файл
$HOME/.bashrc
Ответ 3
GOPATH должен быть установлен в только что созданный пустой каталог. Это "рабочая область", где она загружает пакеты и т.д. Я использую ~/.go.
Например:
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc
источник: http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/
Ответ 4
Если, например, это Ubuntu, после установки пакетов:
$sudo apt install golang -y
Просто добавьте следующие строки в ~/.bashrc(из вашего пользователя)
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Ответ 5
export GOPATH=/path/desired/here
Нет необходимости редактировать какой-либо файл, мы можем просто использовать приведенную выше команду для непосредственного редактирования переменных среды Go.
Ответ 6
Go Modules [Новый путь]
Начиная с Go 1.11: теперь есть поддержка Go Modules (ранее известная как vgo), поэтому вам больше не нужно использовать GOPATH. Тем не менее, это все еще экспериментальная функция.
Например, вы можете перейти в любой каталог в вашей системе (кроме $ GOPATH), и вы можете инициализировать новый модуль Go там, и вы можете работать там. GOPATH не требуется.
Вы должны сделать это один раз (находясь в каталоге):
go mod init github.com/youruser/yourrepo
После этого Go примет каталог в качестве корневого модуля. Вы можете создать столько модулей, сколько захотите. GOPATH скоро станет историей.
Если вы настаиваете на работе с GOPATH, прислушайтесь к этому:
Начиная с версии 1.8: вам не нужно устанавливать GOPATH или GOROOT. GOPATH по умолчанию находится в вашем каталоге user/home.
Если GOPATH не задан, предполагается, что он равен $ HOME/go в системах Unix и% USERPROFILE%\go в Windows. Если вы хотите использовать пользовательское местоположение в качестве своего рабочего пространства, вы можете установить переменную среды GOPATH.
Более подробную информацию вы найдете в этом.
Ответ 7
Самый короткий и текущий.
Введите этот код в Terminal.
export GOPATH=path/to/your/gopath/directory
Примечание. Это будет reset в каждом новом окне терминала или перезапуске системы.
Чтобы быть постоянным, вставьте код ниже в файл .zshrc
или .bashrc
в соответствии с вашей оболочкой. Эти файлы в Домашнем каталоге. Это будет как показано ниже.
export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin
Ответ 8
Вам тоже понадобится GOPATH. Поэтому добавьте его в ~/.bashrc
.
Ответ 9
Если вы настроили все, что требует изменения переменных окружения, например. Java, Go и т.д. Это будет очень хорошо знакомо.
Я предполагаю, что у вас есть следующая структура каталогов где-то в качестве пути Go:
\---[folder name]
+---bin
+---pkg
\---src
- открыть новый терминал
- type
sudo nano /etc/environment
- найдите
PATH=...
и пойдите в конец и добавьте двоеточие :
после последнего пути, затем вставьте в свой полный go path
например. /home/user/gocode
и все готово. Это должно сделать его постоянным через систему.
Ответ 10
Это то, что заработало для меня на Ubuntu 15.10 с помощью fish shell
:
# ~/.config/fish/config.fish
set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go
Затем мне пришлось изменить разрешения в папке go
(она была установлена в root)
sudo chown <name>:<name> -R /usr/share/go
Ответ 11
С Go 1.8 (Q2 2017) вам не придется редактировать какой-либо файл, если вы принимаете значение по умолчанию GOPATH
(установлено для вас)
$HOME/go
Вы можете увидеть комментарии issue 17262 и связанное голосование щебета:
Выбирая значение по умолчанию GOPATH
, мы можем упростить нашу документацию, потому что мы можем сказать такие вещи, как
$ go get github.com/foo/bar
проверит репо github.com/foo/bar
на $HOME/go/src/github.com/foo/bar
.
Нам не нужно отвлекать новичков от необходимости устанавливать env var, все, что нам нужно сделать, это поместить небольшую скобку в нижней части страницы
$HOME/go
- это путь по умолчанию к вашей рабочей области go.
Если вы хотите изменить этот путь, установите для переменной GOPATH
что-то по своему выбору.
Ответ 12
Перейти путь может быть каждый, где вы хотите просто создать каталог и установить глобальную переменную пути в имени GOPATH для вашей среды.
mkdir ~/go
export GOPATH=~/go
go get github.com/go-sql-driver/mysql
Ответ 13
В моем окружении похож на ваш.
$go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go-1.6"
GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
Я разрешил его с установкой GOPATH на /usr/lib/go. Попробуйте.
export GOPATH=/usr/lib/go
export PATH=$PATH:$GOPATH/bin
Ответ 14
GOPATH - это переменная среды для вашего рабочего пространства.
GOROOT - это переменная среды в каталог установки. Хотя GOROOT и GOPATH автоматически устанавливается (если бы не было ошибки) во время установки, чтобы указать его вручную, вы можете следовать ниже процесса. Более того, для получения дополнительной информации вы можете обратиться к GO wiki page.
Лучше установить GOPATH в каталог внутри вашего домашнего каталога, например, $HOME/go,% USERPROFILE%\go (Windows).
- Это решение mac, которое проверено на macOS Sierra, ver. 10.12, а также в Gogland-EAP, который был введен в качестве IDE для программирования Go на JetBrains.
В вашем типе термина
vim ~/.profile
в открывшемся документе на терминале нажмите i и добавьте следующий путь
GOPATH=/path/to/a/directory/inside/home/directory
GOROOT=/path/to/you/go/library
PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin
нажмите ESC и введите : x.
Наконец, вы должны перезапустить (закрыть и открыть) ваш терминал или Выход и Войти снова.
- Для конфигурации Windows и Linux см. страницу Go wiki в Githab на Настройка GOPATH-Golang.
ВНИМАНИЕ Не устанавливайте оба параметра GOROOT и GOPATH в тот же каталог, иначе вы получите предупреждение.
Ответ 15
Это была самая неприятная вещь, с которой нужно иметь дело. В надежде сэкономить ваше время.
IF go был установлен как пользователь root. Корневому пользователю вашего системного файла bash_profile текстового файла ~/.bash_profile должно быть присвоено значение $GOROOT для каталога установки go и $GOPATH необходимо назначить директории go/src.
...$# sudo su
...$# vi ~/.bash_profile
***Story continues in vi editor***
GOROOT=$GOROOT:/usr/local/go
GOPATH=$GOPATH:/usr/local/go/src
...
[your regular PATH stuff here]
...
убедитесь, что путь к двоичному пути находится в вашем пути в .bash_profile
PATH = $PATH: $HOME/бен:/USR/локальные/бен:/USR/локальные/пойти/бен
Этот PATH может быть длинной строкой, в которой он должен быть... для добавления новых элементов, разделенных только двоеточием:
редактор vi и сохранение bash профиля (: wq означает запись и выход)
[esc]
[shift] + [:]
:wq
Вам нужно выйти из терминала и снова войти в профиль для повторного запуска... или вы можете просто запустить его с помощью экспорта.
...$# export GOPATH=/usr/local/go/src
Вы можете проверить go env:
...$# go env
Yay!
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/go/src"
GORACE=""
GOROOT="/usr/local/go"
Теперь вы можете sudo и go смогут загружать и создавать каталоги внутри go/src, и вы можете перейти к тому, что вы пытались сделать.
Пример
# sudo go get github.com/..
Теперь у вас будет другая проблема. Возможно, у вас не установлено git.. это другое приключение..:)
Ответ 16
На моем компьютере Fedora 20 я добавил следующие строки в свой файл ~/.bashrc:
export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Ответ 17
Как написано в официальных инструкциях :
Переменная среды GOPATH указывает местоположение вашего рабочего пространства. По умолчанию используется каталог с именем go внутри вашего домашнего каталога, поэтому $HOME/перейти в Unix, $home/перейти на Plan 9 и% USERPROFILE%\go (обычно C:\Users\YourName\go) в Windows. Если вы хотите работать в другом месте, вам нужно будет установить GOPATH на путь к этому каталогу. (Другая распространенная настройка - установить GOPATH = $HOME.) Обратите внимание, что GOPATH не должен быть тем же путем, что и ваша установка Go.
Так, например, если вы кодируете в Jetbrains Webstorm (используя Go плагин), вы можете установить GOPATH
как /Users/<user>/WebstormProjects
.
В более простых словах установите его там, где вы хотите, чтобы ваши проекты Go находились.
Ответ 18
Еще одно решение: экспортируйте каждую переменную среды GO*
из go env
.bashrc:
eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do
echo "export $setenv; "
done 2> /dev/null)
[[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin"
[[ -n $GOROOT ]] || export GOROOT=/usr/bin/go
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"
Ответ 19
Отредактируйте ~/.bash_profile
, чтобы добавить следующую строку:
$ export GOPATH=$HOME/work
Сохранить и выйти из редактора. Затем отправьте свой ~/.bash_profile
$ source ~/.bash_profile
Примечание. Задайте путь GOBIN для создания двоичного файла при запуске установки.
$ export GOBIN=$HOME/work/bin
Ответ 20
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin
И вы можете проверить по $ go env
Ответ 21
Эти инструкции для Linux (Ubuntu)
1) обновить пакеты Ubuntu
sudo apt-get update
sudo apt-get -y upgrade
2) получить последнюю версию Linux
curl -O https://storage.googleapis.com/golang/go1.12.5.linux-amd64.tar.gz
3) распаковать и перейти к нужному каталогу
tar -xvf go1.12.5.linux-amd64.tar.gz
sudo mv go /usr/local
4) установить пути перехода в файле ~/.profile
sudo nano ~/.profile
5) добавьте эти строки в файл .profile, обратите внимание, что я помещу весь свой код go в каталог с именем code, это может отличаться для вашей машины, также замените ваше имя пользователя на github моим
export GOPATH=$HOME/code
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
6) источник ~/.profile для обновления вашего профиля
source ~/.profile
7) проверьте, что go был установлен правильно
go version // go version go1.12.5 linux/amd64
8) давайте построим привет мир
mkdir $HOME/code
mkdir -p code/src/github.com/hom-bahrani/hello
nano code/src/github.com/hom-bahrani/hello/hello.go
9) добавьте эти строки в новый файл go, затем нажмите Ctrl + X
для выхода и y
для сохранения
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
10) установить код src
go install github.com/hom-bahrani/hello
11) запустить сгенерированный бинарный файл
sudo $GOPATH/bin/hello // hello, world
Теперь ваш компьютер готов к работе с Go, ваш исходный код должен находиться в каталоге /root/code/src/github.com/user-name/hello
. Наслаждайтесь!
Обратите внимание, что если на вашем компьютере установлен oh-my-zsh
вам может потребоваться повторить шаги 4, 5 и 6 для вашего ~/.zprofile
Ответ 22
(Ubuntu)
Если вы не установите GOPATH, будет использоваться значение по умолчанию.
Вы должны добавить $ GOPATH/bin в вашу PATH, чтобы выполнить любой двоичный файл, установленный в $ GOPATH/bin, или вам нужно набрать $ GOPATH/bin/the-command.
Добавьте это в свой ~/.bash_profile
export PATH=$GOPATH/bin:$PATH
Текущая команда GOPATH:
go env GOPATH
Изменение команды GOPATH:
export GOPATH=$HOME/your-desired-path
Ответ 23
Этот script поможет вам переключить Gopaths. https://github.com/buffonomics/goswitch
Ответ 24
Вы можете использовать "экспорт", как и другие ребята. Я хотел бы предоставить вам другое решение для постоянного удобства: вы можете использовать любой путь как GOPATH при запуске команд Go.
Во-первых, вам нужно загрузить небольшой инструмент с именем gost
: https://github.com/byte16/gost/releases. Если вы используете ubuntu, вы можете загрузить версию Linux (https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz).
Затем вам нужно запустить приведенные ниже команды, чтобы распаковать его:
$ cd /path/to/your/download/directory
$ tar -xvf gost_linux_amd64.tar.gz
Вы получите исполняемый файл gost
. Вы можете переместить его на /usr/local/bin
для удобного использования:
$ sudo mv gost /usr/local/bin
Выполните приведенную ниже команду, чтобы добавить путь, который хотите использовать в качестве GOPATH, в pathspace gost
. Он должен указать путь, который вы будете использовать позже.
$ gost add foo /home/foobar/bar # 'foo' is the name and '/home/foobar/bar' is the path
Запустите любую команду Go, которую вы хотите в формате:
gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]
Например, вы хотите запустить go get github.com/go-sql-driver/mysql
с /home/foobar/bar
как GOPATH, просто выполните это, как показано ниже:
$ gost get -p foo -- github.com/go-sql-driver/mysql # 'foo' is the name you give to the path above.
Это поможет вам установить GOPATH и запустить команду. Но помните, что вы добавили путь в gost
pathspace. Если вы находитесь под любым уровнем подкаталогов /home/foobar/bar
, вы даже можете просто запустить приведенную ниже команду, которая будет делать то же самое для краткости:
$ gost get -- github.com/go-sql-driver/mysql
gost
- это простой инструмент Go, который поможет вам управлять GOPATH и запускать команды Go. Подробнее о том, как использовать его для запуска других команд Go, можно просто запустить gost help goCmdName
. Например, вы хотите узнать больше о install
, просто введите слова ниже:
$ gost help install
Вы также можете найти более подробную информацию в README проекта: https://github.com/byte16/gost/blob/master/README.md
Ответ 25
Вы должны обновить PATH в зависимости от используемого вами терминала (bash или zsh).
- Откройте файл сценария оболочки терминала, т.е.
~/.bashrc
или ~/.zshrc
, в редакторе
vi ~/.zshrc
(or)
code ~/.zshrc
- Обновите GOPATH ниже, если он уже найден, или добавьте строку ниже.
export GOPATH=$HOME/go:/$HOME/projects/go
Здесь вы можете добавить один или несколько путей, разделенных точкой с запятой :
из разных мест ваших проектов GO в системе, в переменную среды GOPATH
, т.е. /path/1:path/2:path/3
и т.д.
В моем случае я добавил 2 пути, как показано выше, один из корня $HOME/go
, а другой из каталога проектов :/$HOME/projects/go