我有一个嵌入式系统,我无法在其中安装任何东西,而我可能用来获取某些东西的唯一工具是 wget。事实证明,你不能用 wget 做你可以用 curl 做的事情。我也不能为这个系统交叉编译,所以我需要求助于 Python 或 shell 脚本。 git 的纯 Python 实现称为 Dulwich 实际上有一些我需要交叉编译的 C 代码......所以我什至求助于调查,仅供引用。
我需要的是从 github 存储库获取代码,而最明显的解决方案是使用他们提供的 tarball。我通常从存储库页面复制链接以下载 zip 按钮,并使用授权 token 而不是用户名和密码。它可以像这样简单地与 curl 一起工作:
curl -L https://<token>@github.com/<org|user>/<repo>/archive/master.tar.gz | tar xz
事实证明 wget 有点笨拙,我尝试的任何方法都有效。
最佳答案
在涉及以下任一的 wget 标志的各种组合上敲打我的头脑之后:
-
--post-data
;或 -
--user=
有和没有--pasword=
反之亦然;或 -
--header="Authorization: token <token>"
我回头看了看文档,发现releases API中有替代端点.看起来首先我不能使用 Authorization
带有托管 tarball 的服务器的 header ,其次是 curl(或 github 前端,基于代理字符串)似乎对 <token>@github.com
做了不同的事情。与 wget 的 --user=<token>
相比,这并不是最令人愉快的事情。
那么有效的是:
wget \
--header='Authorization: token <token>' \
https://api.github.com/repos/<org|user>/<repo>/tarball/<ref>
关于linux - 在没有 curl 的情况下从 github 下载 tarball,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347134/