Команда ‘go’ не найдена

Вопрос или проблема

Это не вопрос программирования.

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

Объяснение команды (для тех, кто хочет знать, чтобы вы могли ее изменить, если хотите):

  1. [ ! -d "/usr/local/go" ] для проверки, скачан ли уже go. Если он уже есть, команда не сработает. Вам нужно выполнить rm /usr/local/go, чтобы это сработало.
  2. cd /tmp && wget https://go.dev/dl/go1.17.4.linux-amd64.tar.gz для перехода в каталог tmp и загрузки двоичного файла go.
  3. tar -C /usr/local/ -xzf go1.17.4.linux-amd64.tar.gz для распаковки загруженного tar-файла в директорию установки /usr/local
  4. 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:

  1. Скачивание и установка:

    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
  2. Настройка переменной PATH:

    export PATH=$PATH:/usr/local/go/bin
    source ~/.profile

Возможные решения проблемы:

  1. Проверьте переменную PATH:

    • Выполните команду echo $PATH и убедитесь, что /usr/local/go/bin включен в PATH. Если нет, добавьте его.
  2. Постоянная настройка PATH:

    • Откройте файл ~/.profile или ~/.bashrc для редактирования с помощью команды nano ~/.profile или nano ~/.bashrc.

    • Добавьте следующее:

      export PATH=$PATH:/usr/local/go/bin
    • Сохраните изменения и выполните source ~/.profile или source ~/.bashrc для применения изменений.

  3. Проверка правильности файла и пути:

    • Убедитесь, что файл, который вы скачали и распаковали, поддерживает вашу платформу, например, "linux-amd64" для 64-битной системы Linux.
    • Убедитесь, что каталог /usr/local/go/bin действительно существует и содержит исполняемый файл go.
  4. Альтернативный способ установки с помощью apt:

    • Если команды выше не работают, попробуйте установить Go с помощью пакетного менеджера:
      sudo apt update && sudo apt install golang-go
  5. Использование update-alternatives:

    • Добавьте Golang в список альтернатив, чтобы корректно использовать команду go:
      sudo update-alternatives --install /usr/local/bin/go go /usr/local/go/bin/go 1

Эти шаги должны помочь восстановить возможность использования команды go. Постоянная настройка пути с проверкой существования каталога добавляет надежности, а установка через пакетный менеджер — удобства. Убедитесь, что изменения переменной PATH применены, снова открыв терминал или перезагрузив систему.

Оцените материал
Добавить комментарий

Капча загружается...