Существует ли постоянный URL-адрес, указывающий на текущую версию Golang для Linux?
Я пишу простой сценарий, который должен загрузить последнюю версию golang и установить ее. На сайте загрузки golang "https://golang.org/dl/" я мог видеть только конкретные выпуски ссылки для скачивания.
Мне интересно, есть ли такая ссылка, как "https://dl.google .com / go / latest.linux-amd64.tar.gz "доступно?
Если нет каких-либо предложений о том, как создать скрипт для загрузки последней версии golang и установить его?
4 ответа
У Google есть установщик Linux для установки Go на Linux: https://storage.googleapis.com/golang/getgo/installer_linux
Это выбирает последнюю версию "go" и устанавливает ее. Похоже, на данный момент это самый простой способ установить последнюю версию go на Linux.
Вы можете создать последний URL с помощью:
https://dl.google.com/go{{ version }}.{{ os }}-{{ arch }}.tar.gz
ОС: Linux, Дарвин, Windows, FreeBSD Arch: AMD64, 386, ArmV6L, Arm64, S390, PPC64LE
И для последней стабильной версии вы можете получить значение с помощью curl или чего-то еще из URL:
https://golang.org/VERSION?m=text
Вот пример игрового сборника:
---
- hosts: server
gather_facts: no
vars:
version : "latest"
arch: arm64
os: linux
latest_version_url: https://golang.org/VERSION?m=text
archive_name: "{{ filename_prefix }}.{{ os }}-{{ arch }}.tar.gz"
download_url: https://dl.google.com/go/{{ archive_name }}
bin_path: /usr/local/go/bin
tasks:
- name: Get filename prefix with latest version
set_fact:
filename_prefix: "{{ lookup('url', latest_version_url, split_lines=False) }}"
when: version == "latest"
- name: Get filename prefix with fixed version
set_fact:
filename_prefix: go{{ version }}
when: version != "latest"
- name: Try to get current go version installed
command: go version
register: result
changed_when: false
- name: Set current_version var to the current
set_fact:
current_version: "{{ result.stdout.split(' ')[2] }}"
when: result.failed == false
- name: Set current_version var to none
set_fact:
current_version: "none"
when: result.failed == true
- debug:
var: current_version
- name: Download and extract the archive {{ archive_name }}
become: true
unarchive:
src: "{{ download_url }}"
dest: /usr/local
remote_src: yes
when: current_version != filename_prefix
Я бы предложил отложить что-то вроде jlund / ansible-go или скопировать части ту роль, которая вам нужна.
Вы можете скачать последнюю стабильную версию GO за один раз :)
wget "https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-amd64.tar.gz"
Новые вопросы
go
Go - это язык программирования с открытым исходным кодом. Он статически типизирован, с синтаксисом, свободно полученным из C, с добавлением автоматического управления памятью, безопасностью типов, некоторыми возможностями динамической типизации, дополнительными встроенными типами, такими как массивы переменной длины и карты значений ключей, а также большой стандартной библиотекой.