是否有一个永久的URL指向golang的最新Linux二进制版本?
我正在编写一个ansible脚本,该脚本应下载最新的golang版本并进行安装。在golang下载网站“ https://golang.org/dl/”中,我只能看到特定于发行版的下载链接。
我想知道是否有诸如“ https://dl.google.com/go/latest.linux-amd64.tar.gz”之类的链接?
如果对如何编写脚本以获取最新的golang版本并进行安装没有任何建议?
答案 0 :(得分:1)
您可以一口气下载最新的稳定版GO:)
wget "https://dl.google.com/go/$(curl https://golang.org/VERSION?m=text).linux-amd64.tar.gz"
答案 1 :(得分:0)
我建议您使用jlund/ansible-go之类的东西,或者复制您需要的角色的一部分。
答案 2 :(得分:0)
Google有一个Linux安装程序可以在Linux上安装go: https://storage.googleapis.com/golang/getgo/installer_linux
这将获取“ go”的最新版本并进行安装。到目前为止,似乎这是在Linux上安装最新的go版本的最简单方法。
答案 3 :(得分:0)
您可以使用生成最新的网址:
https://dl.google.com/go{{ version }}.{{ os }}-{{ arch }}.tar.gz
os:linux,darwin,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