linux - 在没有 curl 的情况下从 github 下载 tarball

标签 linux shell curl github wget

我有一个嵌入式系统,我无法在其中安装任何东西,而我可能用来获取某些东西的唯一工具是 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/

相关文章:

python - 通过curl/urllib2向Pyramid应用程序发送json数据没有给出正确的请求。POST

linux - 如何让两个docker容器可以互相ping通

c++ - 是否有可用于在 Linux 上交叉编译 gtkmm(特别是 v3)Windows 库/应用程序的说明?

windows - 硬盘驱动器内存间隙的原因是什么?

bash - 从 bash 调用时 screen 以不同方式转义

bash - 将 Bash 变量传递给 CURL

xcode - OS X 从 shell 返回到 Xcode swift

linux - PACKET_MMAP 数据偏移量

c++ - Windows SChannel 支持 CURL SFTP 吗?

r - 抓取此网页的正确 xpath 是什么?