Существует ли постоянный URL-адрес, указывающий на текущую версию Golang для Linux?

Я пишу простой сценарий, который должен загрузить последнюю версию golang и установить ее. На сайте загрузки golang "https://golang.org/dl/" я мог видеть только конкретные выпуски ссылки для скачивания.

Мне интересно, есть ли такая ссылка, как "https://dl.google .com / go / latest.linux-amd64.tar.gz "доступно?

Если нет каких-либо предложений о том, как создать скрипт для загрузки последней версии golang и установить его?

go
3
Murli 20 Авг 2018 в 18:06

4 ответа

Лучший ответ

У Google есть установщик Linux для установки Go на Linux: https://storage.googleapis.com/golang/getgo/installer_linux

Это выбирает последнюю версию "go" и устанавливает ее. Похоже, на данный момент это самый простой способ установить последнюю версию go на Linux.

1
Murli 22 Авг 2018 в 13:17

Вы можете создать последний 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
1
fhusson 18 Май 2019 в 19:27

Я бы предложил отложить что-то вроде jlund / ansible-go или скопировать части ту роль, которая вам нужна.

0
robx 20 Авг 2018 в 15:54

Вы можете скачать последнюю стабильную версию GO за один раз :)

wget "https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-amd64.tar.gz"
3
nad2000 30 Авг 2019 в 10:50
51933636