Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Установка Go на CentOS

Миша Курушин
Миша Курушин
Технический писатель
20 ноября 2023 г.
247
7 минут чтения
Средний рейтинг статьи: 5

CentOS — это операционная система с открытым исходным кодом, основанная на исходном коде проекта Red Hat Enterprise Linux. В основе CentOS лежит ядро Linux.

У некоторых новичков может возникнуть путанница с пониманием системы версионирования CentOS, т.к. компания Red Hat выпускает два дистрибутива этой операционной системы — CentOS Linux и CentOS Stream.

Поэтому сперва стоит немного рассказать об их отличиях, а уже потом перейти к установке Golang.

Дистрибутивы CentOS

Изначально CentOS базируется на коммерческом дистрибутиве Red Hat Enterprise Linux (RHEL), однако отличается от него тем, что распространяется как свободное ПО и не имеет официальной поддержки.

По этой причине иногда принято считать, что RHEL используют как корпоративный продукт в крупных компаниях, а CentOS предпочитают небольшие команды разработчиков.

За все время существования CentOS было выпущено 9 версий, последние из которых представляли собой отдельную ветку — CentOS Stream.

Дело в том, что когда компания выпустила 8 версию CentOS, большинство разработчиков все еще использовали 7 версию. Примерно в этот же момент Red Hat начала процесс слияния с IBM, отчего решила прекратить поддержку 8 версии в 2021 году. Тем не менее, из-за повсеместного использования 7 версии Red Hat решил продолжить выпускать критические обновления до 2024 года.

Именно за 8 версией 2019 году последовала CentOS Stream, которая выпускается по rolling-release модели. Иными словами, обновления для этого дистрибутива выпускаются регулярно и непрерывно.

Последняя версия CentOS по прежнему имеет номер 9 (то есть следующая версия после 8), но вместо приписки «Linux» указывается «Stream». При этом Stream ветка есть и у 8 версии CentOS.

В этой статье мы рассмотрим установку языка программирования Golang на самые поздние версии CentOS — 8 и 9.

1. Удаление старых версий Golang

Проверка наличия Go

Во избежание возможных проблем при установке необходимо убедиться, что Golang отсутствует в системе. Есть несколько вариантов это сделать.

Можно попробовать запросить версию Go через специальную команду:

go version

Если Go действительно уже установлен, то в консоли появится соответствующее сообщение с версией Golang.

Другой вариант, который может также помочь при удалении, — узнать местонахождение каталога с Go, который впоследствии нужно будет удалить:

which go

Если Golang есть в системе, то в консоле появится адрес директории.

Удаление Go

Если Golang действительно уже установлен, тогда его нужно удалить:

rm -rf /usr/local/go

Если при использовании команды which был выведен другой адрес директории, тогда при удалении нужно указать именно его. Однако как правило это /usr/local/go.

Сама команда rm выполняет удаление некоторой директории или файла. А флаг -rf указывает на рекурсивно-принудительный тип удаления.

  • r означает рекурсивный (recursive) — удаляется указанная папка, все ее подпапки, подпапки подпапок и т.д.
  • f означает принудительный (force) — никакие внешние состояния или переменные не смогут помешать удалению.

Очистить переменные среды

Чтобы удалить упоминание Go в переменных среды, необходимо найти один из следующих файлов:

  • /etc/profile
  • ~/.profile

Когда файл будет найден, в нем нужно очистить строчки, указывающие на директорию Go. Обычно это установка переменных GOROOT и PATH:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=$HOME/go1.X
export PATH=$PATH:$GOROOT/bin

Если какие либо из указанных выше строк присутствуют в файле, они должны быть удалены.

Теперь можно перейти к скачиванию Golang.

2. Загрузка Golang

Компилятор Golang загружается со специальной страницы на официальном сайте языка.

Для загрузки можно использовать 2 утилиты: wget и curl. Мы воспользуемся первым вариантом, напрямую указав ссылку на нужный нам архив:

wget https://dl.google.com/go/go1.21.3.linux-amd64.tar.gz

Обратите внимание, что в адресной строке указана точная версия Go. Узнать номер последней версии можно через графический интерфейс (через браузер) на странице загрузки — в том разделе, где размещена ссылка для скачивания архива для операционных систем на базе ядра Linux.

Команда wget запускает специальную утилиту Linux, занимающуюся загрузкой файлов из интернета через терминал командной строки. Она работает со всеми основными протоколами — HTTP, HTTPS и FTP.

После выполнения этой команды будет загружен соответствующий архив go1.21.3.linux-amd64.tar.gz, либо с указанием более поздней версии.

После загрузки архива проверьте его контрольную сумму и убедитесь, что хэш, выведенный в командой строке, соответствует хешу, указанному на странице загрузки:

sha256sum go1.21.3.linux-amd64.tar.gz

Обратите внимание, что расширение .tar.gz указывает на формат сжатого архивного файла, который представляет собой комбинацию двух других форматов архивов:

  • TAR. Используется для хранения нескольких файлов в одном архиве
  • GZIP. Используется для сжатия данных в архиве с целью уменьшения его размера

Это означает, что после загрузки архива его нужно будет извлечь.

3. Извлечение архива

Для извлечения мы будем использовать специальнную утилиту tar, которая предназначена для выполнения различных манипуляций с архивами:

sudo tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz

При извлечении мы указываем стандартную директорию /usr/local. Именно в нее будет помещен компилятор Golang.

При этом команду извлечения необходимо запускать от имени пользователя root или любого другого пользователя, наделенного правами sudo.

Можно считать, что Go уже установлен в системе. Однако теперь ей нужно сообщить о том, в каком конкретном месте расположен компилятор. Для этого мы дополним переменные среды.

4. Установка переменных среды

Чтобы терминал командной строки знал, где искать исполняемые файлы Go, когда мы компилируем программу, нужно указать адрес каталога Golang в переменных среды.

Для этого мы откроем файл /etc/profile и добавим туда следующие строки:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/Documents/go

Мы установили 3 переменные среды:

  • PATH. Помогает командной строке найти бинарные файлы компилятора
  • GOROOT. Указывает на директорию, где установлен Go
  • GOPATH. Содержит адрес рабочей директории

После этого следует перезапустить терминал командной строки, чтобы внесенные в файл изменения применились. Либо можно выполнить внесение обновленных данных вручную через специальную команду:

source /etc/profile

По сути, на данном этапе это все — Golang был установлен на CentOS.

5. Проверка установки

На всякий случай мы проверим, действительно ли Golang установлен в системе и есть ли к нему доступ из терминала консоли. Для этого мы напишем команду, выводящую версию компилятора:

go version

Если в консоли появилась соответствующая запись с номером версии Golang, значит, все впорядке.

6. Компиляция простой программы

Давайте создадим в домашнем каталоге новый файл:

nano main.go

После чего наполним его следующим содержимым:

package main

import "fmt"

func main() {
fmt.Println("Привет, Мир!") // ВЫВОД: Привет, Мир!
}

Теперь запустим нашу программу с помощью команды run:

go run main.go

Чтобы создать полноценный исполняемый файл, нам потребуется уже другая команда:

go build

Если не указывать в качестве аргумента имя файла, то команда скомпилирует main.go.

Тем не менее, вы можете явно указывать название файла, который нужно собрать в конечный «билд»:

go build filename.go

Без явного указания имени файла в команде сборки может возникнуть ошибка, связанная с особенностями работы системы модулей Go:

go: go.mod file not found in current directory or any parent directory; see 'go help modules'

Есть два пути решения. Либо вручную инициализировать go.mod файл в рабочей директории проекта, указав имя исходного файла:

go mod init filename.go

Либо изменить значение переменной среды GO111MODULE:

go env -w GO111MODULE=auto

Или так:

go env -w GO111MODULE=off

Сама по себе сборка в исполняемый файл добавляет системно зависимый вспомогательный код, необходимый для выполнения приложения на любом компьютере с той же системной архитектурой.

Заключение

Так как CentOS построена на базе ядра Linux, установка Golang представляет собой одинаковый процесс для всех последних версий операционной системы — 7, 8, 9 (Stream).

Более подробно ознакомиться с синтаксисом языка можно в документации Golang на официальном сайте языка.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону