繁体   English   中英

如何从 github 下载最新的二进制版本?

[英]How to download the latest binary release from github?

我想从最新版本下载两个(.bin 和.zip)二进制文件。

我尝试使用以下命令

curl -s https://github.com/Atmosphere-NX/Atmosphere/releases/latest | grep "browser_download_url.*zip" | cut -d : -f 2,3 | tr -d "\" | wget -qi -

但没有任何反应,output 是SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc

我愿意使用任何其他(wget、ecurl 等)命令。

它是否试图从 HTML 页面中提取下载链接? 这很容易出错,随时可能崩溃。

对于此类操作,请先检查他们是否提供 API。

他们这样做: https://docs.github.com/en/rest/reference/releases#get-the-latest-release

你可以写类似的东西(伪代码):

 curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/Atmosphere-NX/Atmosphere/releases/latest \
    | jq .assets[0].browser_download_url \
    | xargs wget -qi -

就像评论中建议的那样,单独测试每个命令(管道分隔)。

您可以使用GitHub CLI ,特别是release download命令:

gh release download --repo Atmosphere-NX/Atmosphere --pattern '*.bin'
gh release download --repo Atmosphere-NX/Atmosphere --archive zip

如果不指定发布标签,该命令默认为最新版本。

只需在 url 上运行 curl 即可得到:

curl https://github.com/Atmosphere-NX/Atmosphere/releases/latest
<html><body>You are being <a href="https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.6">redirected</a>.</body>

因此,您很容易立即发现问题所在。 查看 curl 帮助,您可以在下面找到选项、命令来确定您需要什么:

curl --help | grep redirect
 -L, --location      Follow redirects
     --max-redirs <num> Maximum number of redirects allowed
     --proto-redir <protocols> Enable/disable PROTOCOLS on redirect
     --stderr        Where to redirect stderr

第一条线索是响应中的redirect ,然后我们在帮助部分看到有一个标志来处理它。

使用 th -L命令运行它会给出预期的 output。将其通过管道传输到grep "browser_download_url.*zip"但是什么也给不了你。 然后,您进行调查以查看正确的匹配项是什么。 但是,让我们尝试仅对 html 与 zip 进行数学运算,看看会发生什么。

curl -sL https://github.com/Atmosphere-NX/Atmosphere/releases/latest | grep "href=.*zip"
          <a href="/Atmosphere-NX/Atmosphere/releases/download/1.2.6/atmosphere-1.2.6-master-173d5c2d3+hbl-2.4.1+hbmenu-3.5.0.zip" rel="nofollow" data-skip-pjax>
          <a href="/Atmosphere-NX/Atmosphere/archive/refs/tags/1.2.6.zip" rel="nofollow" data-skip-pjax>

从那里您可能可以找到构建命令所需的内容。 如您所见,链接与此方法相关,因此您仍然必须向wget (或等效的curl )提供基数 url 才能最终下载您想要的内容。

这更像是一个让你继续解决问题的回复。 你已经有了其他答案来实际做你想做的事。 但是如果你不能安装建议的工具,你可能会这样做:

curl -sL https://github.com/Atmosphere-NX/Atmosphere/releases/latest |
    awk '/releases\/download/ && done != 1 {
        sub(/.*href="/, "https://github.com")
        sub(/".*/, "")
        print
        done = 1
    }' |
    xargs curl -LsO

并不是说这是一个好方法,只是一种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM