为了账号安全,请及时绑定邮箱和手机立即绑定

最新稳定 Go 版本的 URL

最新稳定 Go 版本的 URL

Go
不负相思意 2023-03-21 16:48:11
是否有指向当前最新的 Go Linux 二进制版本的永久 URL?我正在编写一个 ansible 脚本,它应该下载最新的 Go 版本并安装它。在 Go 下载站点“https://golang.org/dl/”中,我只能看到发布特定的下载链接。我想知道是否有像“https://dl.google.com/go/latest.linux-amd64.tar.gz”这样的链接可用?如果没有关于如何编写脚本获取最新的 golang 版本并安装它的建议?
查看完整描述

5 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

您可以一次性下载最新的稳定版 Go :)

wget "https://dl.google.com/go/$(curl https://go.dev/VERSION?m=text).linux-amd64.tar.gz"


查看完整回答
反对 回复 2023-03-21
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

正如在这里找到的,Google 有一个 Linux 安装程序可以在 Linux 上安装 Go:

https://storage.googleapis.com/golang/getgo/installer_linux

此安装程序获取最新版本的 Go 并安装它。似乎这是目前在 Linux 上安装最新版本的最简单方法。

获取文件并执行它的最新官方方法是:

curl -LO https://get.golang.org/$(uname)/go_installer

chmod +x go_installer

./go_installer

rm go_installer


查看完整回答
反对 回复 2023-03-21
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您可以生成最新的 url:


https://dl.google.com/go{{ version }}.{{ os }}-{{ arch }}.tar.gz

操作系统: linux、darwin、windows、freebsd

架构: amd64、386、armv6l、arm64、s390、ppc64le


对于最新的稳定版本,您可以使用 curl 或其他方式从 url 获取值:


https://golang.org/VERSION?m=text

这是一个 ansible 剧本作为例子:


---

- 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


查看完整回答
反对 回复 2023-03-21
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

我将以下内容用于 Linux:

wget "https://go.dev/dl/$(curl 'https://go.dev/VERSION?m=text').linux-amd64.tar.gz" && sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go*.linux-amd64.tar.gz

还有一个由 Go Community 构建的跨平台解决方案

curl -LO https://get.golang.org/$(uname)/go_installer && chmod +x go_installer && ./go_installer && rm go_installe


查看完整回答
反对 回复 2023-03-21
?
qq_遁去的一_1

TA贡献1725条经验 获得超8个赞

我建议推迟到jlund/ansible-go之类的东西,或者复制你需要的那个角色的部分。



查看完整回答
反对 回复 2023-03-21
  • 5 回答
  • 0 关注
  • 277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号