Язык программирования Go или как его еще называют Golang, это относительно новый язык от корпорации Google, который по своим возможностям стремится заменить Си и С++. Он создан одним из разработчиков Си и здесь уже были учтены все ошибки, допущенные при создании того языка. Go имеет улучшенную безопасность, мультипоточность, полностью кросплатформенен и многое другое. На Go можно даже писать приложения для Android.
В этой статье мы рассмотрим как выполняется установка Go в Ubuntu 20.04 и более поздних версиях. Рассмотрим установку компилятора с официального сайта или PPA, а также запустим небольшую программу чтобы проверить как все работает.
Содержание статьи
Что такое Go?
Сначала важно понять что же все-таки такое Go. Этот язык был создан сотрудниками корпорации Google в 2009 году. В этом процессе принимал участие Кен Томпсон, один из разработчиков Си. В первую очередь это компилируемый язык системного программирования, который подходит для создания высокоэффективных программ. Хотя в Go возможен запуск программ в интерпретаторе, они компилируются в объектный код и не требуют виртуальной машины.
Основные возможности языка - это строгая типизация, поддержка указателей, поддержка юникода, динамические массивы, хэш таблицы, автоматическое управление памятью, потоки для параллельного программирования, а также каналы для связи между потоками. Синтаксис Go очень похож на Си, с тем лишь отличием, что некоторые компоненты позаимствованы из других скриптовых языков. Язык постоянно развивается и получает новые возможности. А теперь рассмотрим как выполняется установка языка в Ubuntu.
Установка Go на Ubuntu
Есть несколько способов установки этого языка. Вы можете загрузить файл с бинарными файлами компилятора с официального сайта и распаковать его в какой-либо директории. Затем останется только установить несколько переменных окружения. Так вы можете получить самую последнюю версию.
1. Установка из официальных репозиториев
Сначала обновите систему до самой новой версии:
sudo apt update
sudo apt upgrade
Затем для установки достаточно выполнить такую команду:
sudo apt install golang
На этом установка завершена. Для просмотра версии выполните:
go version
После этого вы можете переходить к настройке рабочего окружения для языка.
2. Установка из официального сайта
Как видите, на момент написания статьи в репозиториях находится версия 1.13. В то же время на официальном сайте уже можно найти версию 1.15. Если вы хотите получить именно её, надо устанавливать компилятор языка из официального сайта.
Просто выберите нужную операционную систему и дождитесь окончания загрузки. Для скачивания версии 1.15 можете воспользоваться такой командой:
wget https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz
После окончания загрузки расспакуйте полученный архив в папку /opt:
sudo tar -C /opt -xzf go1.15.2.linux-amd64.tar.gz
Тут тоже установка завершена. Осталось добавить путь к исполняемым файлам go в переменную среды PATH:
export PATH=$PATH:/opt/go/bin
Теперь можно проверить версию Golang:
go version
Если всё хорошо, отредактируйте файл /etc/environment и добавьте в строку объявления PATH путь /opt/go/bin:
Изменения будут применены только после перезагрузки.
3. Установка из PPA
В последнее время PPA один за другим перестают обновляться и поддерживать новые версии Ubuntu, но этот всё ещё работает и содержит довольно свежую версию компилятора Golang - 1.15. Для добавления PPA в систему выполните такие команды:
sudo add-apt-repository ppa:longsleep/golang-backports
Затем для установки достаточно выполнить:
sudo apt install golang
Тестирование языка Go
Особенность Go в том, что все пакеты, которые вы создаете должны находится в определённой папке. Go не будет искать пакеты сначала в текущей папке проекта, как это делается обычно, а будет пытаться их найти в папке указанной в переменной окружения GOPATH. Поэтому сначала создадим рабочую папку для исходников в домашней папке:
mkdir ~/work/src/hello/
cd ~/work/src/hello/
Дальше нужно сообщить Go, где находится наша папка для проектов, для этого с помощью GOPATH:
export GOPATH=$HOME/work/
Эту же строку можно добавить в /etc/profile, чтобы не вводить её каждый раз. Обратите внимание, что в рабочей папке есть папка src, а уже в ней нужно создавать папки проектов, для каждого проекта отдельная папка. Дальше создадим небольшую программу, которая будет выводить только одну строчку на экран:
vi hello.go
Теперь соберем программу:
go build hello
Затем программу можно выполнить такой командой:
./hello
Программу можно не только собрать, но и установить с помощью команды install:
go install
Тогда исполняемый файл программы будет создан не в текущей папке а в данном примере в $HOME/work/bin. Если эта папка не существует, то она будет создана.
Выводы
В этой статье мы рассмотрели как выполняется установка go на ubuntu, здесь есть целых два метода и вы обязательно подберете тот, который подходит для вас больше всего. Если у вас остались вопросы, спрашивайте в комментариях!
Рекомендую использовать Go Version Manager https://github.com/moovweb/gvm
вот такую фигню пишет:
adminofsystem@Admin-PC ~/work/src/hello $ go install hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
и что с этим делать?
Я вчера тоже устанавливал и настраивал GO по этой статье и тоже столкнулся с таким сообщением. Для решения сперва просто набрал GO, получил такой ответ:
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
build compile packages and dependencies
clean remove object files
doc show documentation for package or symbol
env print Go environment information
bug start a bug report
fix run go tool fix on packages
fmt run gofmt on package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages
Use "go help [command]" for more information about a command.
Additional help topics:
c calling between Go and C
buildmode description of build modes
filetype file types
gopath GOPATH environment variable
environment environment variables
importpath import path syntax
packages description of package lists
testflag description of testing flags
testfunc description of testing functions
Use "go help [topic]" for more information about that topic.
-----------------------------------------------------------------------------------------
Здесь меня привлекла команда env и я набрал go env и получил:
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user_name/work/"
GORACE=""
GOROOT="/usr/lib/go-1.9"
GOTOOLDIR="/usr/lib/go-1.9/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build068158681=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
-----------------------------------------------------------
Здесь видно, что переменная GOBIN пустая. Вот поэтому. думаю я, в нашем сообщении об ошибке пишется GOBIN not set. Я у себя в ручную установил её значение в "/usr/lib/go-1.9/bin/" и стало работать. Правда, это привело к тому, что скомпилированные файлы GO помещает в этот же каталог:
$ ls -ls /usr/lib/go-1.9/bin/
итого 11016
7044 -rwxr-xr-x 1 root root 7209352 окт 31 12:38 go
2144 -rwxr-xr-x 1 root root 2194888 окт 31 12:38 gofmt
1828 -rwxr-xr-x 1 root root 1868367 дек 11 17:55 hello
А это наверно не совсем правильно. Как я понимаю, результаты компиляции должны помещаться в каталог ~\work\src\hello
Смог решить эту проблему по этой статье.
Ключевой была эта строчка:
"Note: Set the GOBIN path to generate a binary file when go install is run.
export GOBIN=$HOME/work/bin"
Крч, пишем в консоль "go install hello(или другое имя вашего файла)",
вам выдает ошибку: "go install: no install location for .go files listed on command line (GOBIN not set)",
сразу же пишем: "export GOBIN=$HOME/work/bin".
Теперь вновь прописываем: "go install hello(или другое имя вашего файла)" и если компилятор не найдет ошибок, то ваша прога будет готова;)
Также проще запускать уже скомпилированные програмы командой: "go run hello.go"
Как у меня все выглядит в консоли:
do-while@NewGenius ~/work/src $ go install hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
do-while@NewGenius ~/work/src $ export GOBIN=$HOME/work/bin
do-while@NewGenius ~/work/src $ go install hello.go
do-while@NewGenius ~/work/src $ go run hellolinux.go
Hello Go on Gnu/Linux! - это строка и есть текст программы.
Случайно упустил саму статью. Вот она: https://github.com/golang/go/wiki/SettingGOPATH
>Если всё хорошо, отредактируйте файл /etc/environment и добавьте в строку объявления PATH путь /opt/go/bin:
- на скриншоте ниже точно точно точка с запятой?