Как мне установить переменную среды 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. Наконец, вы должны перезапустить (закрыть и открыть) ваш терминал или Выход и Войти снова.

  1. Для конфигурации 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

Ответ 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).

  1. Откройте файл сценария оболочки терминала, т.е. ~/.bashrc или ~/.zshrc, в редакторе
   vi ~/.zshrc
      (or)
   code ~/.zshrc
  1. Обновите GOPATH ниже, если он уже найден, или добавьте строку ниже.

export GOPATH=$HOME/go:/$HOME/projects/go

Здесь вы можете добавить один или несколько путей, разделенных точкой с запятой : из разных мест ваших проектов GO в системе, в переменную среды GOPATH, т.е. /path/1:path/2:path/3 и т.д.

В моем случае я добавил 2 пути, как показано выше, один из корня $HOME/go, а другой из каталога проектов :/$HOME/projects/go