Вопрос или проблема
Это не вопрос программирования.
У меня есть компьютер с Ubuntu, и я установил на него Golang. Он работал нормально… Я даже запускал несколько программ, но файл “go1.11.2.linux-amd64.tar.gz” находился в моей домашней директории, поэтому я подумал, что не будет ничего страшного, если я перемещу его в директорию Загрузок. После перемещения я не могу использовать никакую команду Go, и получаю сообщение ‘команда go не найдена’. Я попытался переместить файл обратно в домашнюю директорию, но все равно получаю ту же ошибку.
Может кто-нибудь объяснить, что происходит? Спасибо!!
richie@richie-ThinkPad-T430:~$ go version
Команда 'go' не найдена, но ее можно установить с помощью:
sudo snap install go # версия 1.11.2, или
sudo apt install golang-go
sudo apt install gccgo-go
Смотрите 'snap info go' для дополнительных версий.
Команды, которые я использовал для установки Go :
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
source ~/.profile
Джос в комментариях выше, вероятно, прав. Нужно добавить изменение в PATH
в вашем .profile
. Из документации по установке (акцент добавлен):
Добавьте
/usr/local/go/bin
в переменную окружения PATH. Вы можете сделать это, добавив эту строку в ваш/etc/profile
(для установки на всю систему) или$HOME/.profile
:export PATH=$PATH:/usr/local/go/bin
Из: Установлен golang, но команда go: не найдена #20
Используйте эту команду:
sudo apt update && sudo apt install golang
Используйте nano ~/.profile
для редактирования файла и добавьте следующее:
export PATH=$PATH:/usr/local/go/bin
Сохраните файл с помощью команды source ~/.profile
.
Проверьте версию:go version
Попробуйте добавить точную команду экспорта в файл ~/.bashrc
.
Вам нужно выполнить source ~/.bashrc
, чтобы изменения вступили в силу в вашем текущем терминале. С этого момента, когда вы открываете терминал, вы сможете найти команду go
. Это сработало для меня.
Однокомандная установка go,
[ ! -d "/usr/local/go" ] && cd /tmp && wget https://go.dev/dl/go1.17.4.linux-amd64.tar.gz && tar -C /usr/local/ -xzf go1.17.4.linux-amd64.tar.gz && cd /usr/local/ && echo "export PATH=\$PATH:/usr/local/go/bin:\$HOME/go/bin" >> ~/.bashrc && echo "export GOROOT=/usr/local/go" >> ~/.bashrc && echo "export PATH=\$PATH:/usr/local/go/bin:\$HOME/go/bin" >> /home/*/.bashrc && echo "export GOROOT=/usr/local/go" >> /home/*/.bashrc && source ~/.bashrc && source /home/*/.bashrc
Примечание: выполните rm /usr/local/go
перед выполнением этого кода, если он не работает. Это установит его для пользователя, под которым вы вошли в систему.
Объяснение команды (для тех, кто хочет знать, чтобы вы могли ее изменить, если хотите):
[ ! -d "/usr/local/go" ]
для проверки, скачан ли уже go. Если он уже есть, команда не сработает. Вам нужно выполнитьrm /usr/local/go
, чтобы это сработало.cd /tmp && wget https://go.dev/dl/go1.17.4.linux-amd64.tar.gz
для перехода в каталог tmp и загрузки двоичного файла go.tar -C /usr/local/ -xzf go1.17.4.linux-amd64.tar.gz
для распаковки загруженного tar-файла в директорию установки/usr/local
cd /usr/local/ && echo "export PATH=\$PATH:/usr/local/go/bin:\$HOME/go/bin" >> ~/.bashrc && echo "export GOROOT=/usr/local/go" >> ~/.bashrc && echo "export PATH=\$PATH:/usr/local/go/bin:\$HOME/go/bin" >> /home/*/.bashrc && echo "export GOROOT=/usr/local/go" >> /home/*/.bashrc && source ~/.bashrc && source /home/*/.bashrc
для установкиGOPATH
иGOROOT
для bash терминала.
Убедитесь, что переменная среды GOPATH
установлена в /usr/local/bin
.
Чтобы использовать экосистему Ubuntu/Debian (вместо ручного редактирования путей), можно установить любую версию golang-*-go
, например:
sudo apt install golang-1.20-go
а затем настроить ее как дефолтную:
sudo update-alternatives --install /usr/local/bin/go go /usr/lib/go-1.20/bin/go 1
Или, в случае автора вопроса, когда go
установлен с wget
по другому пути:
sudo update-alternatives --install /usr/local/bin/go go /usr/local/go/bin/go 1
Таким образом, вы можете даже установить и настроить несколько версий, а затем выбрать, которая из них вам больше нравится, например:
sudo update-alternatives --config go
There are 2 choices for the alternative go (providing /usr/local/bin/go).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/go-1.20/bin/go 1 auto mode
1 /usr/lib/go-1.18/bin/go 1 manual mode
2 /usr/lib/go-1.20/bin/go 1 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Это системное решение, будет работать для всех пользователей, “переживает” перезагрузки и т.д.
Хотя выполнение
export PATH=$PATH:/usr/local/go/bin
позволит это работать, но это не сохранится при перезапуске терминала.
Я исправил это, отредактировав файл ~/.profile (который запускается после входа в систему)
добавив
# добавить в PATH golang bin, если он существует
if [ -d "/usr/local/go/bin" ] ; then
PATH="/usr/local/go/bin:$PATH"
fi
Я знаю, что это похоже на другие ответы, но я считаю, что это более безопасный код, поскольку он проверяет наличие каталога перед добавлением его в путь.
Еще одной возможной проблемой может быть то, что вы скачали неверный файл.
Например, в моем первом тесте я скачал go1.23.4.src.tar.gz
(и адаптировал команду tar -C /usr/local -xzf go1.23.yadayadayada
), вместо того чтобы использовать файл go1.23.4.linux-amd64.tar.gz
Это стыдно, но упоминание об этом может сэкономить время некоторым людям.
.
Ответ или решение
Если вы столкнулись с ошибкой "command ‘go’ not found" на Ubuntu после перемещения tar.gz файла с Golang, важно понять, что вы неправильно указали среду выполнения. Ошибка чаще всего связана с неправильной настройкой переменной окружения PATH.
Задача:
Проблема связана с тем, что вы переместили файл "go1.11.2.linux-amd64.tar.gz" и теперь Go не может быть найден в вашей системе.
Первоначальные шаги установки Golang:
-
Скачивание и установка:
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz
-
Настройка переменной PATH:
export PATH=$PATH:/usr/local/go/bin source ~/.profile
Возможные решения проблемы:
-
Проверьте переменную PATH:
- Выполните команду
echo $PATH
и убедитесь, что/usr/local/go/bin
включен в PATH. Если нет, добавьте его.
- Выполните команду
-
Постоянная настройка PATH:
-
Откройте файл
~/.profile
или~/.bashrc
для редактирования с помощью командыnano ~/.profile
илиnano ~/.bashrc
. -
Добавьте следующее:
export PATH=$PATH:/usr/local/go/bin
-
Сохраните изменения и выполните
source ~/.profile
илиsource ~/.bashrc
для применения изменений.
-
-
Проверка правильности файла и пути:
- Убедитесь, что файл, который вы скачали и распаковали, поддерживает вашу платформу, например, "linux-amd64" для 64-битной системы Linux.
- Убедитесь, что каталог
/usr/local/go/bin
действительно существует и содержит исполняемый файлgo
.
-
Альтернативный способ установки с помощью apt:
- Если команды выше не работают, попробуйте установить Go с помощью пакетного менеджера:
sudo apt update && sudo apt install golang-go
- Если команды выше не работают, попробуйте установить Go с помощью пакетного менеджера:
-
Использование update-alternatives:
- Добавьте Golang в список альтернатив, чтобы корректно использовать команду
go
:sudo update-alternatives --install /usr/local/bin/go go /usr/local/go/bin/go 1
- Добавьте Golang в список альтернатив, чтобы корректно использовать команду
Эти шаги должны помочь восстановить возможность использования команды go
. Постоянная настройка пути с проверкой существования каталога добавляет надежности, а установка через пакетный менеджер — удобства. Убедитесь, что изменения переменной PATH применены, снова открыв терминал или перезагрузив систему.