Страница 1 из 4
Raspberry Pi 2 - GoLang
Добавлено: 01 апр 2022, 20:39
Olej
Ещё одна
приятная находка в этой редакции ОС:
Код: Выделить всё
olej@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
Код: Выделить всё
olej@raspberrypi:~ $ uname -a
Linux raspberrypi 5.15.30-v7+ #1536 SMP Mon Mar 28 13:43:34 BST 2022 armv7l GNU/Linux
Вот она:
Код: Выделить всё
olej@raspberrypi:~ $ aptitude search golang | wc -l
1741
Присутствует
нативная система программирования-разработки на языке Go + огромное множество инструментов и дополнительных пакетов.
Re: Raspberry Pi 2 ... снова
Добавлено: 01 апр 2022, 20:40
Olej
Olej писал(а): ↑01 апр 2022, 20:39
Присутствует нативная система программирования-разработки на языке Go + огромное множество инструментов и дополнительных пакетов.
Код: Выделить всё
olej@raspberrypi:~ $ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
/dev/root 7333160 4159516 2820368 60% /
devtmpfs 341064 0 341064 0% /dev
tmpfs 472648 0 472648 0% /dev/shm
tmpfs 189060 804 188256 1% /run
tmpfs 5120 4 5116 1% /run/lock
/dev/mmcblk0p1 258095 50407 207689 20% /boot
tmpfs 94528 24 94504 1% /run/user/1000
tmpfs 94528 20 94508 1% /run/user/1001
Код: Выделить всё
olej@raspberrypi:~ $ sudo apt install golang
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
golang-1.15 golang-1.15-doc golang-1.15-go golang-1.15-src golang-doc golang-go golang-src
Предлагаемые пакеты:
bzr | brz mercurial subversion
Следующие НОВЫЕ пакеты будут установлены:
golang golang-1.15 golang-1.15-doc golang-1.15-go golang-1.15-src golang-doc golang-go golang-src
Обновлено 0 пакетов, установлено 8 новых пакетов, для удаления отмечено 0 пакетов, и 7 пакетов не обновлено.
Необходимо скачать 59,6 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 336 MB.
Хотите продолжить? [Д/н] y
Пол:1 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.15-src armhf 1.15.15-1~deb11u4+rpi1 [13,9 MB]
Пол:2 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.15-go armhf 1.15.15-1~deb11u4+rpi1 [43,2 MB]
Пол:3 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.15-doc all 1.15.15-1~deb11u4+rpi1 [2.455 kB]
Пол:4 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.15 all 1.15.15-1~deb11u4+rpi1 [28,1 kB]
Пол:5 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-src armhf 2:1.15~1 [4.856 B]
Пол:6 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-go armhf 2:1.15~1 [23,9 kB]
Пол:7 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-doc all 2:1.15~1 [4.888 B]
Пол:8 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang armhf 2:1.15~1 [4.844 B]
Получено 59,6 MB за 14с (4.356 kB/s)
Выбор ранее не выбранного пакета golang-1.15-src.
(Чтение базы данных … на данный момент установлено 101710 файлов и каталогов.)
Подготовка к распаковке …/0-golang-1.15-src_1.15.15-1~deb11u4+rpi1_armhf.deb …
Распаковывается golang-1.15-src (1.15.15-1~deb11u4+rpi1) …
Выбор ранее не выбранного пакета golang-1.15-go.
Подготовка к распаковке …/1-golang-1.15-go_1.15.15-1~deb11u4+rpi1_armhf.deb …
Распаковывается golang-1.15-go (1.15.15-1~deb11u4+rpi1) …
Выбор ранее не выбранного пакета golang-1.15-doc.
Подготовка к распаковке …/2-golang-1.15-doc_1.15.15-1~deb11u4+rpi1_all.deb …
Распаковывается golang-1.15-doc (1.15.15-1~deb11u4+rpi1) …
Выбор ранее не выбранного пакета golang-1.15.
Подготовка к распаковке …/3-golang-1.15_1.15.15-1~deb11u4+rpi1_all.deb …
Распаковывается golang-1.15 (1.15.15-1~deb11u4+rpi1) …
Выбор ранее не выбранного пакета golang-src:armhf.
Подготовка к распаковке …/4-golang-src_2%3a1.15~1_armhf.deb …
Распаковывается golang-src:armhf (2:1.15~1) …
Выбор ранее не выбранного пакета golang-go.
Подготовка к распаковке …/5-golang-go_2%3a1.15~1_armhf.deb …
Распаковывается golang-go (2:1.15~1) …
Выбор ранее не выбранного пакета golang-doc.
Подготовка к распаковке …/6-golang-doc_2%3a1.15~1_all.deb …
Распаковывается golang-doc (2:1.15~1) …
Выбор ранее не выбранного пакета golang:armhf.
Подготовка к распаковке …/7-golang_2%3a1.15~1_armhf.deb …
Распаковывается golang:armhf (2:1.15~1) …
Настраивается пакет golang-1.15-src (1.15.15-1~deb11u4+rpi1) …
Настраивается пакет golang-src:armhf (2:1.15~1) …
Настраивается пакет golang-1.15-go (1.15.15-1~deb11u4+rpi1) …
Настраивается пакет golang-1.15-doc (1.15.15-1~deb11u4+rpi1) …
Настраивается пакет golang-go (2:1.15~1) …
Настраивается пакет golang-1.15 (1.15.15-1~deb11u4+rpi1) …
Настраивается пакет golang-doc (2:1.15~1) …
Настраивается пакет golang:armhf (2:1.15~1) …
Обрабатываются триггеры для man-db (2.9.4-2) …
И очень свежая версия Go ! :
Код: Выделить всё
olej@raspberrypi:~ $ go version
go version go1.15.15 linux/arm
Код: Выделить всё
olej@raspberrypi:~ $ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
/dev/root 7333160 4513300 2466584 65% /
devtmpfs 341064 0 341064 0% /dev
tmpfs 472648 0 472648 0% /dev/shm
tmpfs 189060 808 188252 1% /run
tmpfs 5120 4 5116 1% /run/lock
/dev/mmcblk0p1 258095 50407 207689 20% /boot
tmpfs 94528 24 94504 1% /run/user/1000
tmpfs 94528 20 94508 1% /run/user/1001
Специально для системы умещающейся на SD 8Gb проверил занятость носителя до и после инсталляции: 60% и 65% занятости носителя.
Re: Raspberry Pi 2 ... снова
Добавлено: 01 апр 2022, 20:57
Olej
Olej писал(а): ↑01 апр 2022, 20:40
нативная система программирования
Проверка:
Код: Выделить всё
olej@raspberrypi:~ $ ls -l hello
-rwxr-xr-x 1 olej olej 1951379 апр 1 20:42 hello
Код: Выделить всё
olej@raspberrypi:~ $ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, Go BuildID=p-BIL0J3CprVGzKJ870t/WcX0cRUun8DsTNNVbUUq/rJ6s2eiCGOwT7Qn5dwD4/SXnYe0-oUjo8aQ2J9T7U, not stripped
Код: Выделить всё
olej@raspberrypi:~ $ ls -l hello
-rwxr-xr-x 1 olej olej 1248156 апр 1 20:43 hello
strip позволяет урезать около 7Kb отладочной информации.
Код: Выделить всё
olej@raspberrypi:~ $ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, Go BuildID=p-BIL0J3CprVGzKJ870t/WcX0cRUun8DsTNNVbUUq/rJ6s2eiCGOwT7Qn5dwD4/SXnYe0-oUjo8aQ2J9T7U, stripped
Выполнение:
Код: Выделить всё
olej@raspberrypi:~ $ ./hello
ты кто будешь?
> Земляничка
какое длинное имя ... целых 21 байт
привет, Земляничка
Важно здесь что?:
- всё выполняется на совершенно непривычной аппаратной платформе ARM
- символьное представление - UTF-8 представление для кодировки Unicode
- то что кодирование здесь UTF-8 видим по числу байт (21) русской строки (10 букв) - 10*2 + 1 (перевод строки) = 21
P.S. Это всё, естественно, если установлена (или проверено что установлена) локаль ru_*. UTF-8:
Код: Выделить всё
olej@raspberrypi:~ $ locale
LANG=ru_UA.UTF-8
LANGUAGE=ru_UA.UTF-8
LC_CTYPE="ru_UA.UTF-8"
LC_NUMERIC="ru_UA.UTF-8"
LC_TIME="ru_UA.UTF-8"
LC_COLLATE="ru_UA.UTF-8"
LC_MONETARY="ru_UA.UTF-8"
LC_MESSAGES="ru_UA.UTF-8"
LC_PAPER="ru_UA.UTF-8"
LC_NAME="ru_UA.UTF-8"
LC_ADDRESS="ru_UA.UTF-8"
LC_TELEPHONE="ru_UA.UTF-8"
LC_MEASUREMENT="ru_UA.UTF-8"
LC_IDENTIFICATION="ru_UA.UTF-8"
LC_ALL=ru_UA.UTF-8
Код: Выделить всё
olej@raspberrypi:~ $ locale -a
C
C.UTF-8
POSIX
ru_UA.utf8
Re: Raspberry Pi 2 ... снова
Добавлено: 01 апр 2022, 21:00
Olej
Olej писал(а): ↑01 апр 2022, 20:57
Проверка:
Куда гораздо более сильная проверка:
Почему
гораздо и почему
более сильная?
- потому что там использован специфичный механизм параллелизмов Go (оператор go) - горутин, а это одна из самых "фишек" Go
- потому что там подключен (импортирован) псевдо-пакет CGo - совместимость кода Go с любым кодом C, т.е. с любым API Linux.
Код: Выделить всё
olej@raspberrypi:~ $ ./mlpar 9
число процессоров в системе: 4
число ветвей выполнения: 9
[9,656ff440]
[4,64efe440]
[2,660ff440]
[7,76f071c0]
[3,64efe440]
[6,656ff440]
[8,76f071c0]
[1,660ff440]
[5,64efe440]
итоговое время выполнения: 1.034212623s
9 параллельных ветвей (горутин), каждая из которых выполняется 1 сек., совместно выполняются точно в одну секунду.
Re: Raspberry Pi 2 - GoLang
Добавлено: 01 май 2022, 16:00
Olej
После обновления
Raspberry Pi 2 ... снова
Код: Выделить всё
olej@raspberrypi:~ $ go version
go version go1.15.15 linux/arm
Но в наличии имеем:
Код: Выделить всё
olej@raspberrypi:~ $ aptitude search golang-1.
p golang-1.10 - Go programming language compiler - metapackage
p golang-1.10-doc - Go programming language - documentation
p golang-1.10-go - Go programming language compiler, linker, compiled stdlib
p golang-1.10-src - Go programming language - source files
p golang-1.12 - Go programming language compiler - metapackage
p golang-1.12-doc - Go programming language - documentation
p golang-1.12-go - Go programming language compiler, linker, compiled stdlib
p golang-1.12-src - Go programming language - source files
p golang-1.13 - Go programming language compiler - metapackage
p golang-1.13-doc - Go programming language - documentation
p golang-1.13-go - Go programming language compiler, linker, compiled stdlib
p golang-1.13-src - Go programming language - source files
p golang-1.14 - Go programming language compiler - metapackage
p golang-1.14-doc - Go programming language - documentation
p golang-1.14-go - Go programming language compiler, linker, compiled stdlib
p golang-1.14-src - Go programming language - source files
i A golang-1.15 - Go programming language compiler - metapackage
i A golang-1.15-doc - Go programming language - documentation
i A golang-1.15-go - Go programming language compiler, linker, compiled stdlib
i A golang-1.15-src - Go programming language - source files
p golang-1.6 - Go programming language compiler - metapackage
p golang-1.6-doc - Go programming language - documentation
p golang-1.6-go - Go programming language compiler, linker, compiled stdlib
p golang-1.6-src - Go programming language - source files
p golang-1.7 - Go programming language compiler - metapackage
p golang-1.7-doc - Go programming language - documentation
p golang-1.7-go - Go programming language compiler, linker, compiled stdlib
p golang-1.7-src - Go programming language - source files
p golang-1.8 - Go programming language compiler - metapackage
p golang-1.8-doc - Go programming language - documentation
p golang-1.8-go - Go programming language compiler, linker, compiled stdlib
p golang-1.8-src - Go programming language - source files
p golang-1.9 - Go programming language compiler - metapackage
p golang-1.9-doc - Go programming language - documentation
p golang-1.9-go - Go programming language compiler, linker, compiled stdlib
p golang-1.9-src - Go programming language - source files
Версия последняя присутствующая 1.15 ... в проекте GoLang - 1.18 - это последняя стабильная, и 1.19 - девелоперская...
Re: Raspberry Pi 2 - GoLang
Добавлено: 01 май 2022, 16:18
Olej
Olej писал(а): ↑01 май 2022, 16:00
Версия 1.18 - это последняя стабильная, и даже 1.19 которая девелоперская...
Установлю ещё одну
параллельно версию ... произвольно, только
пока отработать переключение версий:
Код: Выделить всё
olej@raspberrypi:~ $ sudo apt install golang-1.9
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
golang-1.9-doc golang-1.9-go golang-1.9-src
Следующие НОВЫЕ пакеты будут установлены:
golang-1.9 golang-1.9-doc golang-1.9-go golang-1.9-src
Обновлено 0 пакетов, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 33,8 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 169 MB.
Хотите продолжить? [Д/н] y
Пол:1 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.9-src armhf 1.9.4-1+rpi1 [9.165 kB]
Пол:2 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.9-go armhf 1.9.4-1+rpi1 [22,2 MB]
Пол:3 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.9-doc all 1.9.4-1+rpi1 [2.453 kB]
Пол:4 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf golang-1.9 all 1.9.4-1+rpi1 [28,3 kB]
Получено 33,8 MB за 51с (658 kB/s)
Выбор ранее не выбранного пакета golang-1.9-src.
(Чтение базы данных … на данный момент установлен 114731 файл и каталог.)
Подготовка к распаковке …/golang-1.9-src_1.9.4-1+rpi1_armhf.deb …
Распаковывается golang-1.9-src (1.9.4-1+rpi1) …
Выбор ранее не выбранного пакета golang-1.9-go.
Подготовка к распаковке …/golang-1.9-go_1.9.4-1+rpi1_armhf.deb …
Распаковывается golang-1.9-go (1.9.4-1+rpi1) …
Выбор ранее не выбранного пакета golang-1.9-doc.
Подготовка к распаковке …/golang-1.9-doc_1.9.4-1+rpi1_all.deb …
Распаковывается golang-1.9-doc (1.9.4-1+rpi1) …
Выбор ранее не выбранного пакета golang-1.9.
Подготовка к распаковке …/golang-1.9_1.9.4-1+rpi1_all.deb …
Распаковывается golang-1.9 (1.9.4-1+rpi1) …
Настраивается пакет golang-1.9-src (1.9.4-1+rpi1) …
Настраивается пакет golang-1.9-go (1.9.4-1+rpi1) …
Настраивается пакет golang-1.9-doc (1.9.4-1+rpi1) …
Настраивается пакет golang-1.9 (1.9.4-1+rpi1) …
Код: Выделить всё
olej@raspberrypi:~ $ ls -ld /lib/go*
lrwxrwxrwx 1 root root 7 сен 16 2020 /lib/go -> go-1.15
drwxr-xr-x 4 root root 4096 апр 1 20:07 /lib/go-1.15
drwxr-xr-x 4 root root 4096 мая 1 16:13 /lib/go-1.9
drwxr-xr-x 2 root root 4096 янв 28 03:05 /lib/gold-ld
Но!
Код: Выделить всё
olej@raspberrypi:~ $ go version
go version go1.15.15 linux/arm
Совершенно естественно, потому что ссылка запуска
ручная:
Код: Выделить всё
olej@raspberrypi:~ $ ls -l `which go`
lrwxrwxrwx 1 root root 21 сен 16 2020 /usr/bin/go -> ../lib/go-1.15/bin/go
Re: Raspberry Pi 2 - GoLang
Добавлено: 01 май 2022, 16:20
Olej
Olej писал(а): ↑01 май 2022, 16:18
Совершенно естественно, потому что ссылка запуска ручная:
Сделаем это
правильно , через
альтернативы, как это можно делать в
современном Linux.
Код: Выделить всё
olej@raspberrypi:~ $ which update-alternatives
/usr/bin/update-alternatives
Re: Raspberry Pi 2 - GoLang
Добавлено: 01 май 2022, 16:30
Olej
Olej писал(а): ↑01 май 2022, 16:20
Сделаем это правильно , через альтернативы, как это можно делать в современном Linux.
Код: Выделить всё
olej@raspberrypi:~ $ update-alternatives --display go
update-alternatives: ошибка: нет альтернатив для go
Код: Выделить всё
olej@raspberrypi:~ $ ls -l `which go`
lrwxrwxrwx 1 root root 21 сен 16 2020 /usr/bin/go -> ../lib/go-1.15/bin/go
olej@raspberrypi:~ $ ls -l /lib/go-1.15/bin/go
-rwxr-xr-x 1 root root 8655112 мар 27 09:37 /lib/go-1.15/bin/go
olej@raspberrypi:~ $ ls -l /lib/go-1.9/bin/go
-rwxr-xr-x 1 root root 5922492 фев 16 2018 /lib/go-1.9/bin/go
Код: Выделить всё
olej@raspberrypi:~ $ sudo update-alternatives --install /usr/bin/go go /lib/go-1.15/bin/go 70
update-alternatives: используется /lib/go-1.15/bin/go для предоставления /usr/bin/go (go) в автоматическом режиме
olej@raspberrypi:~ $ sudo update-alternatives --install /usr/bin/go go /lib/go-1.9/bin/go 60
Код: Выделить всё
olej@raspberrypi:~ $ update-alternatives --display go
go - автоматический режим
link best version is /lib/go-1.15/bin/go
ссылка сейчас указывает на /lib/go-1.15/bin/go
link go is /usr/bin/go
/lib/go-1.15/bin/go — приоритет 70
/lib/go-1.9/bin/go — приоритет 60
Всё. Установлены 2 версии, которые могут переключаться за 30 секунд.
Re: Raspberry Pi 2 - GoLang
Добавлено: 01 май 2022, 17:36
Olej
Olej писал(а): ↑01 май 2022, 16:30
Установлены 2 версии, которые могут переключаться за 30 секунд.
Примерно так:
Код: Выделить всё
olej@raspberrypi:~ $ go version
go version go1.15.15 linux/arm
Код: Выделить всё
olej@raspberrypi:~ $ sudo update-alternatives --config go
[sudo] пароль для olej:
Есть 2 варианта для альтернативы go (предоставляет /usr/bin/go).
Выбор Путь Приор Состояние
------------------------------------------------------------
* 0 /lib/go-1.15/bin/go 70 автоматический режим
1 /lib/go-1.15/bin/go 70 ручной режим
2 /lib/go-1.9/bin/go 60 ручной режим
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: используется /lib/go-1.9/bin/go для предоставления /usr/bin/go (go) в ручном режиме
olej@raspberrypi:~ $ go version
go version go1.9.4 linux/arm
Код: Выделить всё
olej@raspberrypi:~ $ sudo update-alternatives --config go
Есть 2 варианта для альтернативы go (предоставляет /usr/bin/go).
Выбор Путь Приор Состояние
------------------------------------------------------------
0 /lib/go-1.15/bin/go 70 автоматический режим
1 /lib/go-1.15/bin/go 70 ручной режим
* 2 /lib/go-1.9/bin/go 60 ручной режим
Press <enter> to keep the current choice[*], or type selection number: 0
update-alternatives: используется /lib/go-1.15/bin/go для предоставления /usr/bin/go (go) в автоматическом режиме
olej@raspberrypi:~ $ go version
go version go1.15.15 linux/arm
Теперь можно установить и самую последнюю версию из исходников...
Re: Raspberry Pi 2 - GoLang
Добавлено: 01 май 2022, 20:24
Olej
Olej писал(а): ↑01 май 2022, 17:36
самую последнюю версию из исходников...
Код: Выделить всё
olej@raspberrypi:~ $ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
/dev/root 7333160 4618788 2361096 67% /
devtmpfs 341064 0 341064 0% /dev
tmpfs 472648 0 472648 0% /dev/shm
tmpfs 189060 832 188228 1% /run
tmpfs 5120 4 5116 1% /run/lock
/dev/mmcblk0p1 258095 50411 207684 20% /boot
tmpfs 94528 28 94500 1% /run/user/1000
tmpfs 94528 20 94508 1% /run/user/1001
Место ещё есть...
Installing Go from source
Загрузка:
Код: Выделить всё
olej@raspberrypi:~ $ cd $HOME
olej@raspberrypi:~ $ git clone https://go.googlesource.com/go goroot
Клонирование в «goroot»…
remote: Finding sources: 100% (19/19)
remote: Total 525454 (delta 426366), reused 525446 (delta 426366)
Получение объектов: 100% (525454/525454), 274.93 MiB | 692.00 KiB/s, готово.
Определение изменений: 100% (426366/426366), готово.
Updating files: 100% (11456/11456), готово.
Код: Выделить всё
olej@raspberrypi:~ $ du -hs goroot/
424M goroot/