如何使用cURL从GitHub下载tarball?

sal*_*ane 86 linux curl wget github

我试图使用cURL从GitHub下载tarball ,但它似乎没有重定向:

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2
<html><body>You are being <a href="https://nodeload.github.com/pinard/Pymacs/tarball/v0.24-beta2">redirected</a>.</body></html>
Run Code Online (Sandbox Code Playgroud)

注意:wget适合我:

$ wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2
Run Code Online (Sandbox Code Playgroud)

但是我想使用cURL,因为最终我想用以下内容解压缩内联:

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
Run Code Online (Sandbox Code Playgroud)

我发现重定向后的URL原来是https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz,但我希望cURL足够聪明才能计算出来这个.

sal*_*ane 135

使用该-L选项来关注重定向:

curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
Run Code Online (Sandbox Code Playgroud)

  • 而且只是为了拯救某人谷歌,`-L`意味着遵循重定向. (13认同)
  • 对于`https`,你也可能需要`-k`. (2认同)

Pav*_*pin 41

现代化的做法是:

curl -sL https://github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz | tar xz
Run Code Online (Sandbox Code Playgroud)

替换user-or-org,reposha1-or-ref相应.

如果您想要一个zip文件而不是tarball,请指定.zip而不是.tar.gz后缀.

您还可以通过指定-u token:x-oauth-basiccurl选项来检索私有仓库的归档.替换token个人访问令牌.

  • 所有的答案,这正是我想要的!如果你有一个oauth令牌,你可以直接使用它; `的https:// @令牌github.com /用户或-ORG /回购/存档/ SHA1或 - ref.tar.gz` (2认同)
  • @waspinator ,我使用 `curl -OL https://github.com/user-or-org/repo/releases/download/version/&lt;asset name&gt;.tar.gz` 请参阅示例[此处](https:// github.com/fomightez/gohugo-binder/blob/4713e967d083fc00f120b08715855912f52d6a61/postBuild#L49) (2认同)

kni*_*ttl 14

你也可以用wget来"解压缩内联".只需将stdout指定为输出文件(-O -):

wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 -O - | tar xz
Run Code Online (Sandbox Code Playgroud)