从github下载tarball而不卷曲

时间:2014-04-28 17:11:13

标签: linux shell curl github wget

我有一个嵌入式系统,我无法安装任何东西,我可能用来获取东西的唯一工具是wget。事实证明,你不能用curl做同样的事情。我也不能为这个系统交叉编译,所以我需要求助于Python或shell脚本。有一个名为Dulwich的git的纯Python实现实际上有一些我需要交叉编译的C代码......所以我甚至试图调查那个,仅供参考。

我需要的是从github存储库获取代码,显而易见的解决方案是使用它们提供的tarball。我通常会从存储库页面复制链接以下载zip按钮,并使用授权令牌而不是用户名和密码。它的工作非常简单,如下所示:

curl -L https://<token>@github.com/<org|user>/<repo>/archive/master.tar.gz | tar xz

原来wget有点尴尬,无论我尝试过什么都可以。

1 个答案:

答案 0 :(得分:7)

在涉及以下两种方式的各种wget标志组合后,我的头部受到了打击:

  • --post-data;或
  • --user=有和没有--pasword=,反之亦然;或
  • --header="Authorization: token <token>"

我回顾了文档,发现releases API中有其他端点。看起来我首先不能将Authorization标头用于托管tarball的服务器,其次curl(或github前端,基于代理字符串)似乎与<token>@github.com vs做了不同的事情wget的--user=<token>,并不是最令人愉快的事情。

那么有效的是:

wget \
  --header='Authorization: token <token>' \
  https://api.github.com/repos/<org|user>/<repo>/tarball/<ref>