如何使用cURL从GitHub下载tarball?

时间:2011-04-21 15:31:37

标签: linux curl github wget

我正在尝试使用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>

注意:wget适合我:

$ wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2

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

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx

我发现重定向后的网址为https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz,但我希望cURL足够聪明,可以解决这个问题。

5 个答案:

答案 0 :(得分:124)

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

curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx

答案 1 :(得分:38)

现代化的做法是:

curl -sL https://github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz | tar xz

相应地替换user-or-orgreposha1-or-ref

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

您还可以通过指定curl的-u token:x-oauth-basic选项来检索私人仓库的归档。将token替换为personal access token.

答案 2 :(得分:14)

您也可以使用wget»解压缩内联«。只需将stdout指定为输出文件(-O -):

wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 -O - | tar xz

答案 3 :(得分:2)

所有其他解决方案都需要指定发行/版本号,这显然会破坏自动化。

此解决方案-已通过当前测试,并且已知可与 Github API v3 一起使用-但是可用于以编程方式获取 LATEST 版本,而无需指定任何标签或发行版号,并将二进制文件解压缩为您在开关--one-top-level="pi-ap"中指定的任意名称。只需换出用户 f1linux 并在以下示例中回购 pi-ap 并输入您自己的详细信息,而Bob是您的叔叔:

curl -L https://api.github.com/repos/f1linux/pi-ap/tarball | tar xzvf - --one-top-level="pi-ap" --strip-components 1

答案 4 :(得分:1)

带有特定的目录

cat test | grep -i alw| awk '{print $0",steve"}' always-a-constant:::pete,steve