Обновление golang в Ubuntu
У меня Ubuntu 14.4.03. По умолчанию golang версия, которая пришла с ним, была 1.2.1. Я хотел бы обновить golang до 1,4 или выше.
После поиска я нашел способ сделать это: сначала удалить текущую установку go, а затем заново установить новую версию.
Я нашел следующие файлы установки go в следующем каталоге:
/usr/share/go /usr/share/go/src/cmd/go /usr/share/go/src/pkg/go /usr/lib/go /ur/lib/go/pkg/linux_amd64/go /ur/lib/go/pkg/linux_amd64_race/go /usr/bin/go
Какой каталог содержит что? Какие из них я должен удалить? Каким должно быть место новой установки? Кажется, /usr/local более нормальный.
Тогда почему Ubuntu по умолчанию такой же, как указано выше?
Какова будет процедура установки новой версии og golang?
user3005720 12 янв ’16 в 16:11 2016-01-12 16:11
2016-01-12 16:11
11 ответов
Сначала удалите свой текущий golang установка с помощью этой команды, вам не нужно вручную удалять файлы, установленные apt-get ,
Язык программирования Go. Фёдор Короткий
sudo apt-get purge golang
Для легкой установки golang 1.4 Вы можете использовать этот PPA
sudo add-apt-repository ppa:evarlast/golang1.4 sudo apt-get update
Теперь вы можете использовать
sudo apt-get install golang
Это установит версию 1.4, вот ссылка на PPA.
Mark Kirby 12 янв ’16 в 16:45 2016-01-12 16:45
2016-01-12 16:45
ppa:evarlast/golang1.4 не работает для меня Ручной способ установки Go приведен ниже.
Шаг 1: Удалить существующий Голанг
sudo apt-get purge golang*
Шаг 2: Загрузите последнюю версию с официального сайта. Кликните сюда
Шаг 3: Извлеките его в /usr/local с помощью следующей команды. Я использую Go 1.11.4 здесь. Возможно, вам придется заменить имя файла на фактическое имя файла в зависимости от версии, которую вы скачали.
tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gz
Шаг 4: Создайте каталог .go в доме. (Легко установить необходимые пакеты без прав администратора)
mkdir ~/.go
Шаг 5: Установите следующие переменные среды
GOROOT=/usr/local/go GOPATH=~/.go PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Проверьте этот ответ AskUbuntu, чтобы узнать, как устанавливать переменные среды постоянно.
Шаг 6: Обновите команду go
sudo update-alternatives —install «/usr/bin/go» «go» «/usr/local/go/bin/go» 0 sudo update-alternatives —set go /usr/local/go/bin/go
Шаг 7: Проверьте golang версия
go version
Gobinath 09 апр ’16 в 01:03 2016-04-09 01:03
2016-04-09 01:03
Я нашел альтернативное (/personal) репо с последними версиями, которое все еще живо, затем получил go-1.8 и связал его с путем в вопросе OP. Вот, пожалуйста, сделайте это:
sudo add-apt-repository ppa:gophers/archive sudo apt-get update sudo apt-get install golang-1.8 sudo ln /usr/lib/go-1.8/bin/go /usr/bin/go1.8
Теперь я могу просто сказать go1.8 вместо go и, таким образом, идти с последним и величайшим.
Репо предлагает множество других версий, поэтому вы просто измените номер версии на ex. 1.4 в сценарии / команды выше.
ХИТРОСТЬ ПРО ОБНОВЛЕНИЕ ПРОГРАММ ИЗ PLAY МАРКЕТ
Huge 08 фев ’17 в 13:11 2017-02-08 13:11
2017-02-08 13:11
Для Golang 1.8 на Ubuntu 17.04 Zesty до 17.10
# sudo apt update # sudo apt install golang-1.8 golang-1.8-doc # for bin in /usr/lib/go-1.8/bin/* ; do sudo update-alternatives —install /usr/bin/$(basename $bin) $(basename $bin) $bin 0 sudo update-alternatives —set $(basename $bin) $bin done
Для Голанга 1.9 на Ubuntu 17.10 Хитрый до 18.04 Bionic:
# sudo apt update # sudo apt install golang-1.9 golang-1.9-doc # for bin in /usr/lib/go-1.9/bin/* ; do sudo update-alternatives —install /usr/bin/$(basename $bin) $(basename $bin) $bin 0 sudo update-alternatives —set $(basename $bin) $bin done
Для Голанга 1.10 на Ubuntu 18.04 Bionic и 18.10 Cosmic:
# sudo apt update # sudo apt install golang-1.10 golang-1.10-doc # for bin in /usr/lib/go-1.10/bin/* ; do sudo update-alternatives —install /usr/bin/$(basename $bin) $(basename $bin) $bin 0 sudo update-alternatives —set $(basename $bin) $bin done
Patrick Decat 09 июл ’17 в 09:36 2017-07-09 09:36
2017-07-09 09:36
Чтобы установить последнюю версию языка программирования Go во всех поддерживаемых в настоящее время версиях Ubuntu, откройте терминал и введите:
sudo snap install go —classic —channel stable
Эта оснастка предоставляет ассемблер, компилятор, компоновщик и скомпилированные библиотеки для языка программирования Go. Помимо стабильного, есть и другие каналы, но стабильный канал — это последняя версия языка программирования Go. Пакет go snap будет обновляться автоматически при появлении обновлений.
karel 10 ноя ’18 в 13:00 2018-11-10 13:00
2018-11-10 13:00
Простота установки и обновления
# Add basic packages sudo apt-get install curl git mercurial make binutils bison gcc build-essential # Install GVM bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) # Install which version you want to install gvm install go1.9 # Use it as default version gvm use go1.9 —default
Inanc Gumus 20 сен ’17 в 09:19 2017-09-20 09:19
2017-09-20 09:19
Вы также можете использовать скрипт update-golang:
update-golang — это скрипт для простой загрузки и установки новых версий Golang с минимальным вмешательством в систему.
git clone https://github.com/udhos/update-golang cd update-golang sudo ./update-golang.sh
Everton 13 фев ’18 в 14:21 2018-02-13 14:21
2018-02-13 14:21
Удалить существующий голанг
sudo apt-get purge golang*
Установите оснастку, если еще не установлен
sudo apt update sudo apt install snapd
Установить через оснастку
sudo snap install go —classic
Brendon Dulam 18 апр ’20 в 03:32 2020-04-18 03:32
2020-04-18 03:32
Я использую этот скрипт для автоматизации обновлений Golang:
B.I. 06 янв ’20 в 15:10 2020-01-06 15:10
2020-01-06 15:10
sudo apt-get purge golang* # in case there is old version of go is installed tar_name=»go1.15.8.linux-amd64.tar.gz» # get latest version from https://golang.org/dl/ wget https://golang.org/dl/$tar_name tar -xvf $tar_name rm -f $tar_name sudo rm -rf /usr/local/go sudo mv go /usr/local # Add following lines into `.bashrc` or `.zshrc` mkdir -p $HOME/go export GOPATH=$HOME/go export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
alper 06 фев ’21 в 13:40 2021-02-06 13:40
2021-02-06 13:40
Я использую эту инструкцию для установки последней версии
- Удалить существующую версию Go:
sudo apt-get purge golang*
sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install golang-go
# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n «$BASH_VERSION» ]; then # include .bashrc if it exists if [ -f «$HOME/.bashrc» ]; then . «$HOME/.bashrc» fi fi # set PATH so it includes user’s private bin directories PATH=»$HOME/bin:$HOME/.local/bin:$PATH»
GOPATH=~/.go
source ~/.profile
$ go version go version go1.11.1 linux/amd64
Источник: ask-ubuntu.ru
Управление пакетами с помощью модулей Go: Прагматическое руководство
Модули — это способ борьбы с зависимостями в Go. Изначально представленные в качестве эксперимента, модули предполагают вывести на поле в качестве нового стандарта для управления пакетами с версии 1.13.
Я нахожу эту тему достаточно необычной для новичков, пришедших с других языков, и поэтому я решил собрать здесь некоторые соображения и советы, чтобы помочь другим, таким же как я, получить представление об управлении пакетами в Go. Мы начнем с общего знакомства, а затем перейдем к менее очевидным аспектам, включая использование папки vendor, использование модулей с Docker в разработке, зависимости инструментов и т. д.
Если вы уже знакомы с модулями Go и знаете Wiki, как свои пять пальцев, эта статья, вероятно, не будет для вас очень полезной. Но для остальных, однако, она может сэкономить несколько часов проб и ошибок.
Так что если вам по пути, запрыгивайте и наслаждайтесь поездкой.
Быстрый запуск
Если в ваш проект уже интегрировано управление версиями, вы можете просто запустить
go mod init
Или указать путь к модулю вручную. Это что-то вроде имени, URL и пути импорта для вашего пакета:
go mod init github.com/you/hello
Эта команда создаст файл go.mod , который одновременно определяет требования проекта и лочит зависимости на их правильные версии (в качестве аналогии для вас, это как package.json и package-lock.json , объединенные в один файл):
module github.com/you/hello go 1.12
Запустите go get , чтобы добавить новую зависимость в ваш проект:
Обратите внимание, что хотя вы не можете указать диапазон версий с помощью go get, то что вы здесь определяете, это не конкретная, а минимальная версия. Как мы увидим позже, есть способ изящно актуализировать зависимости в соответствии с semver.
Теперь наш файл go.mod выглядит следующим образом:
module github.com/you/hello go 1.12 require github.com/go-chi/chi v4.0.2+incompatible // indirect
Суффикс +incompatible добавляется ко всем пакетам, которые еще не настроены под модули Go или нарушают их правила управления версиями.
Поскольку мы еще нигде в нашем проекте не импортировали этот пакет, он был помечен как // indirect . Мы можем привести это в порядок с помощью следующей команды:
go mod tidy
В зависимости от текущего состояния вашего репозитория, она либо удалит неиспользуемый модуль, либо удалит комментарий // indirect .
Если какая-либо зависимость сама по себе не имеет go.mod (например, она еще не настроена под модули), тогда все ее зависимости будут записаны в родительский файл go.mod (как вариант, ваш файл go.mod) вместе с комментарием // indirect , чтобы указать, что они там не от прямого импорта в ваш модуль.
В глобальном плане цель go mod tidy состоит также в добавлении любых зависимостей, необходимых для других комбинаций ОС, архитектур и тегов сборки. Обязательно запускайте ее перед каждым релизом.
Следите также за тем, чтобы после добавления зависимости был создан файл go.sum . Вам может показаться, что это lock-файл. Но на самом деле go.mod уже предоставляет достаточно информации для на 100% воспроизводимых сборок. Файл go.sum создается в проверочных целях: он содержит ожидаемые криптографические контрольные суммы содержимого отдельных версий модуля.
Отчасти потому, что go.sum не является lock-файлом, он сохраняет записанные контрольные суммы для версии модуля даже после того, как вы перестанете использовать этот модуль. Это позволяет проверять контрольные суммы, если вы позже возобновите его использование, что обеспечивает дополнительную безопасность.
$ GO111MODULE=on go1.11rc1 mod init $ GO111MODULE=on go1.11rc1 mod vendor $ git add go.mod go.sum vendor $ git rm Gopkg.lock Gopkg.toml Makefile
FAQ: Должен ли я коммитить go.sum в git?
A: Определенно да. С ним обладателям ваших источников не нужно доверять другим репозиториям GitHub и владельцам пользовательских путей импорта. Уже на пути к нам нечто получше, ну а пока это та же модель, что и хэши в lock-файлах.
Команды go build и go test , автоматически загрузят все отсутствующие зависимости, хотя вы можете сделать это явно с помощью go mod download , чтобы предварительно заполнить локальные кэши, которые могут оказаться полезными для CI.
По умолчанию все наши пакеты из всех проектов загружаются в каталог $GOPATH/pkg/mod . Мы обсудим это подробнее позже.
Обновление версий пакетов
Вы можете использовать go get -u или go get -u=patch для обновления зависимостей до последней минорной версии или патча соответственно.
Но вы не можете обновиться так до мажорных версий. Код, включаемый в модули Go, должен технически соответствовать следующим правилам:
- Соответствовать semver (пример тега VCS v1.2.3).
- Если модуль версии v2 или выше, мажорная версия модуля должна быть включена как /vN в конце пути модуля, используемого в файле go.mod , и в пути импорта пакета:
import «github.com/you/hello/v2»
По-видимому, это сделано для того, чтобы разные версии пакетов могли быть импортированы в одной сборке (см. diamond dependency problem).
В двух словах, Go ожидает, что вы будете очень осмотрительны при внесении мажорных версий.
Замена импортированных модулей
Вы можете указать необходимый модуль для своего собственного форка или даже локального пути к файлу, используя директиву replace :
go mod edit -replace github.com/go-chi/chi=./packages/chi
module github.com/you/hello go 1.12 require github.com/go-chi/chi v4.0.2+incompatible replace github.com/go-chi/chi => ./packages/chi
Вы можете удалить строку вручную или запустить:
go mod edit -dropreplace github.com/go-chi/chi
Попроектное управление зависимостями
Исторически весь код Go хранился в одном гигантском монорепозитории, потому что именно так Google организовывает свою кодовую базу, и это сказывается на дизайне языка.
Модули Go — это своего рода отступление от этого подхода. Вам больше не нужно хранить все свои проекты в $GOPATH .
Тем не менее, технически все ваши загруженные зависимости все еще помещаются в $GOPATH/pkg/mod . Если вы используете Docker-контейнеры при локальной разработке, это может стать проблемой, поскольку зависимости хранятся вне проекта. По умолчанию они просто не видны в вашей IDE.
Обычно это не проблема для других языков, но это то, с чем я впервые столкнулся при работе с кодовой базой Go.
К счастью, есть несколько (недокументированных) способов решения этой проблемы.
Вариант 1. Установите GOPATH внутри каталога вашего проекта.
На первый взгляд это может показаться нелогичным, но если вы запускаете Go из контейнера, вы можете переопределить его GOPATH, чтобы он указывал на каталог проекта для того, чтобы пакеты были доступны из хоста:
version: ‘3.7’ services: app: command: tail -f /dev/null image: golang:1.12.6-stretch environment: # Все ваши зависимости будут расположены прямо здесь — /code/.go/pkg/mod — GOPATH=/code/.go ports: — 8000:8000 volumes: — ./:/code:cached working_dir: /code
Популярные IDE должны иметь возможность установить GOPATH на уровне проекта (рабочей области):
Единственный недостаток этого подхода — отсутствие взаимодействия со средой выполнения Go на хост-компьютере. Вы должны выполнять все команды Go внутри контейнера.
Вариант 2: Вендоринг ваших зависимостей
Еще один способ — скопировать зависимости вашего проекта в папку vendor :
go mod vendor
Следует сразу отметить: мы НЕ разрешаем Go прямую загрузку материалов в папку vendor: с модулями это невозможно. Мы просто копируем уже загруженные пакеты.
К тому же, если вы отвендорите свои зависимости, как в примере выше, затем очистите $GOPATH/pkg/mod , а затем попробуйте добавить несколько новых зависимостей в ваш проект, вы увидите следующее:
- Go перестроит кэш загрузки для всех пакетов по $GOPATH/pkg/mod/cache .
- Все загруженные модули будут скопированы в $GOPATH/pkg/mod .
- И, наконец, Go скопирует эти модули в vendor папку, удаляя примеры, тесты и некоторые другие файлы, от которых вы напрямую не зависите.
Типичный файл Docker Compose выглядит следующим образом (обратите внимание на привязки томов):
version: ‘3.7’ services: app: command: tail -f /dev/null image: golang:1.12.6-stretch ports: — 8000:8000 volumes: # Это кэш модулей go, без него вам придется повторно загружать все зависимости после перезапуска контейнера — modules:/go/pkg/mod/cache — ./:/code:cached working_dir: /code volumes: modules: driver: local
Обратите внимание, что я НЕ комичу эту vendor -папку в систему контроля версий или не собираюсь использовать ее в продакшене. Это строго локальный сценарий разработки, который обычно можно найти в некоторых других языках.
Однако, когда я читаю комментарии от некоторых мейнтейнеров Go и некотроые предложения, связанные с частичным вендорингом (ЧЕ?), у меня складывается впечатление, что изначально эта фича предназначалась не для этого юзкейса.
Один из комментаторов на reddit помог мне пролить свет на это:
Обычно люди вендорят свои зависимости по таким причинам, как желание иметь герметичные сборки без доступа к сети, а также наличия копии готовых зависимостей в случае отказа github или исчезновения репозитория, и возможность более легкого аудита изменений в зависимостях с использованием стандартных инструментов VCS и т. д.
Да, не похоже на что-либо из того, что может меня заинтересовать.
Согласно команде Go, вы можете запросто подключить вендоринг, установив переменную среды GOFLAGS=-mod=vendor . Я не рекомендую так делать. Использование флагов просто сломает go get без предоставления каких-либо других преимуществ для вашего ежедневного рабочего процесса:
На самом деле, единственное место где вам нужно подключить вендоринг — это ваше IDE:
После нескольких проб и ошибок я пришел к следующей процедуре для добавления вендорных зависимостей в этом подходе.
Шаг 1. Требование
Вы можете потребовать зависимость с помощью go get :
Шаг 2. Импорт
Затем импортируйте его куда-нибудь в своем коде:
import ( _ «github.com/rs/zerolog» )
Шаг 3. Вендоринг
Наконец, отвендорите ваши зависимости заново:
go mod vendor
Существует ожидающее рассмотрения предложение разрешить go mod vendor принимать определенные шаблоны модулей, которые могут решить (а могут и не решить) некоторые из проблем связанные с этим рабочим процессом.
go mod vendor уже автоматически требует пропущенные импорты, поэтому шаг 1 является необязательным в этом рабочем процессе (если вы не хотите указывать ограничения версии). Однако, без шага 2 она не подхватит загруженный пакет.
Этот подход лучше взаимодействует с хост-системой, но он довольно запутан, когда дело доходит до редактирования ваших зависимостей.
Лично я думаю, что переопределение GOPATH является более чистым подходом, поскольку он не жертвует функциональность go get . Тем не менее, я хотел показать обе стратегии, потому что папка vendor может быть привычнее для людей, пришедших с других языков, таких как PHP, Ruby, Javascript и т. д. Как вы можете увидеть из махинаций, описанных в этой статье, это не особенно хороший выбор для Go.
Зависимости инструментов
Нам может понадобиться установить некоторые инструменты на основе Go, которые не импортируются, а используются как часть среды разработки проекта. Простым примером такого инструмента является CompileDaemon, который может наблюдать за вашим кодом на предмет изменений и перезапускать ваше приложение.
// +build tools package tools import ( _ «github.com/githubnemo/CompileDaemon» )
- Ограничение // +build tools не позволяет вашим обычным сборкам фактически импортировать ваш инструмент.
- Выражение import позволяет командам go точно записывать информацию о версии ваших инструментов в файл go.mod вашего модуля.
Источник: habr.com
Как обновить версию Go/Golang
Как описано в официальной документации (тут), чтобы обновить версию go вам нужно сперва удалить старую.
Для удаления старой версии просто удалите директорию /usr/local/go командой:
$ sudo rm -rf /usr/local/go
2. Установка новой версии Go
Перейдите на страницу загрузок и загрузите бинарник, подходящий для вашей системы.
3. Распакуйте архив
Чтобы извлечь файл архива:
$ sudo tar -C /usr/local -xzf ~/Downloads/go.linux-amd64.tar.gz
Убедитесь, что ваш PATH содержит /usr/local/go/bin
$ echo $PATH | grep «/usr/local/go/bin»
4. Проверьте установленную версию
$ go version
Источник: ilso.ru
Android Go Edition — что это и почему это круто
Многие покупатели очень скептически относятся к смартфонам, которые оснащенные менее чем 3 ГБ оперативной памяти. Современная версия Android и приложения, разработанные для нее, очень требовательные к ресурсам систему и гаджеты с меньшим объемом ОЗУ будут работать медленней. Что бы позволить недорогим смартфонам с малым объемом оперативной памяти корректно работать компания Google выпустила облегченную версию мобильной операционной системы — Android Go Edition.
Что такое Android Go Edition
Android Go (или Android Go Edition) представляет собой специализированную версию Android, которая предназначена для бюджетных версий смартфонов, и впервые выпущена для Android Oreo. Данная версия операционной системы предназначена для смартфонов с 2 ГБ ОЗУ и менее. Рекомендуем узнать сколько по мнению экспертов должно быть оперативной памяти в смартфоне .
Android Go оптимизирована для работы с использованием малого объема оперативной памяти и по умолчанию оснащена специальным набором мобильных сервисов Google, которые для своей работы используют минимум ресурсов. Так же в Google Play представлены более легкий версии приложений, оптимально подходящие для работы на гаджетах с малым объемом оперативной памяти.
Xiaomi Redmi Go — один из лучших среди них
Интерфейс облегченной версии ОС отличается от обычного более лаконичным дизайном, лишенным «украшательств». В данной версии ОС имеется ряд системных ограничений, одно из которых — ограничение одновременно запущенных программ до 4 штук.
Android Go — дата выхода
Первая версия Android Go, которая была основана на Android 8.1 Oreo была представлена 5 декабря 2017 года.
Следующее обновление «легкой» версии ОС на Android 9.0 Pie вышло 15 августа 2018 года.
Актуальная версия Android Go, которая работает на Android 10, была представлена 10 сентября 2019 года.
Android Go — можно ли скачать прошивку и установить ее на старый телефон
Android Go — это оптимизированная версия операционной системы специально под определенную модель и уже изначально установлена на данный гаджет. Просто скачать и установить данную версию ОС невозможно, требуется «перепрошивать» гаджет, что с большой вероятность приведет к частым ошибкам работы операционной системы. С учетом низкой цен на подобные гаджеты — проще купить новое устройство и наслаждаться быстрой работой дешевого телефона.
Какие есть приложения Google для Android Go
В настоящее время разработаны и используются в «легкой» версии операционной системы: Google Maps Go, YouTube Go, Google Files Go, Gboard Go, Gallery Go, Google Assistant Go, Camera Go и многие другие легкие версии популярных приложений.
Источник: dzen.ru
Upgrade for Android Go Next
Upgrade for Android Go Next — это приложение позволит вам протестировать свое устройство и определить, возможно ли установить на него последнюю версию прошивки. Используя Upgrade for Android Go Next, вы сможете ознакомиться с информацией о каждой существующей версии Android. В соответствующем пункте меню, вы сможете просмотреть краткую информацию о той или иной версии Android, список нововведений, а так же увидеть, как изменялось оформление рабочего стола и иконок со временем.
Также, благодаря Upgrade for Android Go Next, вы сможете протестировать свою систему, чтобы определить, сможете ли вы установить более свежую версию Android. При наличии такой возможности, приложение позволит вам скачать и установить новую версию Android на ваше устройство. Рекомендуем скачать Upgrade for Android Go Next с FreeSoft: это быстро и безопасно.
Источник: freesoft.ru