Установка и сборка Go на Raspberry Pi
Коротко о совместимости
Go давно поддерживает несколько ОС и архитектур процессоров. Raspberry Pi использует Broadcom SoC на базе ARMv6. Поскольку Raspberry Pi может запускать Linux или FreeBSD, на нём можно запускать и программы на Go. Официальных актуальных предсобранных пакетов Google для Raspberry Pi нет; пакет golang в Raspbian часто устарел. Поэтому надёжный путь — собрать Go из исходников.
Что понадобится
- Raspberry Pi с установленной Raspbian или другой совместимой Linux-системой.
- Подключение к интернету для клонирования репозитория и загрузки компонентов.
- Несколько часов свободного времени: сборка обычно занимает примерно 90–120 минут в зависимости от модели Pi и скорости SD/USB.
- Немного свободного места в корне файловой системы (папка /usr/local/go займет несколько десятков мегабайт и больше при сборке).
Шаги установки
- Установите Mercurial — систему контроля версий, которую использует репозиторий Go:
sudo apt-get install -y mercurial- Клонируйте исходники Go в /usr/local/go. Команда загрузит текущую ветку репозитория:
sudo hg clone -u default https://code.google.com/p/go /usr/local/goЗагрузка может занять около 10 минут, в зависимости от скорости соединения.
- Перейдите в каталог исходников и запустите сборку:
cd /usr/local/go/src
sudo ./all.bashВо время сборки вы увидите много служебных сообщений. На слабых моделях Raspberry Pi сборка может занять от полутора до двух часов.
Важно: оставьте процесс сборки завершиться. Прерывание может привести к частично собранным артефактам.
После сборки: добавление Go в PATH
Сборка попросит добавить каталог с бинарниками в PATH. Отредактируйте файл .profile в домашней директории:
cd
nano .profileВ конец файла добавьте строку:
export PATH=$PATH:/usr/local/go/binНажмите CTRL+X, затем Y и ENTER, чтобы сохранить файл.
Затем выйдите из сеанса и войдите снова (или закройте/откройте терминал), чтобы изменения PATH вступили в силу.
Проверка установки
Создайте файл hello.go с простым кодом и запустите его:
package main
import "fmt"
func main() {
fmt.Printf("Hello Make Tech Easier!\n")
}Запуск:
go run hello.goОжидаемый результат:
Hello Make Tech Easier!
Вещи, которые стоит попробовать
Go отлично подходит для программ с конкуррентностью. Попробуйте пример из статьи про первый конкурентный Go-программа: напишите несколько горутин и используйте каналы для обмена сообщениями. На Raspberry Pi вы увидите преимущества конкурентного подхода даже на простых многозадачных системах.
Альтернативные подходы
- Установка через пакетный менеджер: в репозиториях Raspbian есть пакет “golang”, однако он может быть старой версии. Подходит для быстрого старта, но не для последних возможностей языка.
- Кросс-компиляция: соберите Go на более мощной x86-машине с целевой GOARCH/GOARM и затем перенесите бинарник на Pi. Экономит время, но требует настройки окружения кросс-компиляции.
- Использование контейнера: если вы пользуетесь Docker на Raspberry Pi, можно запускать официальные образы golang для ARM, если они доступны для вашей модели.
Когда сборка из исходников не подходит
- На очень старых или слабых моделях с ограниченным энергопотреблением и медленной SD-картой сборка может долго висеть и изнашивать носитель.
- При медленном интернет-соединении клонирование репозитория и загрузка зависимостей становятся проблемой.
- Если вам нужна исключительно определённая версия, проще использовать официальные предсобранные билды на другой машине и переносить бинарники.
Быстрая методология установки (чеклист)
- Обновить систему: sudo apt-get update && sudo apt-get upgrade
- Установить mercurial
- Клонировать репозиторий в /usr/local/go
- Запустить ./all.bash из /usr/local/go/src
- Добавить /usr/local/go/bin в PATH
- Проверить установку командой go run hello.go
Ролевые чеклисты
Разработчик:
- Проверить версию go: go version
- Сконфигурировать GOPATH и рабочие директории
- Запустить unit-тесты: go test ./…
Системный администратор:
- Убедиться, что сборка выполнялась под sudo где требуется
- Проверить права доступа к /usr/local/go
- Добавить запись в системную документацию об установленной версии
Критерии приёмки
- Команда go version возвращает актуальную версию, собранную вами.
- go run hello.go выводит строку приветствия.
- go build успешно собирает небольшую программу в бинарник на Pi.
Короткий глоссарий
- Go — компилируемый язык программирования от Google.
- SoC — System-on-a-Chip, интегрированная микросхема, содержащая CPU, GPU и другие компоненты.
- ARMv6 — архитектура процессора, на которой основан ряд ранних моделей Raspberry Pi.
- Mercurial (hg) — распределённая система контроля версий.
Заключение
Сборка Go на Raspberry Pi — надёжный способ получить актуальную версию языка на ARMv6-устройстве. Это займёт время, но даёт полную совместимость и контроль над сборкой. В качестве альтернативы рассмотрите кросс-компиляцию или использование пакета из дистрибутива, если вы готовы пожертвовать версией ради скорости установки.
Важно: если сборка не проходит из-за нехватки места или времени, используйте кросс-компиляцию на более мощном хосте.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента