linux 如何使用cURL从GitHub下载tarball?

wvmv3b1j  于 2023-06-21  发布在  Linux
关注(0)|答案(5)|浏览(169)

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

我发现重定向后的URL原来是https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz,但我希望cURL足够聪明,能弄清楚这一点。

h7appiyu

h7appiyu1#

使用-L选项跟踪重定向:

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

kq0g1dla2#

现代化的方法是:

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.

0ve6wy6x

0ve6wy6x3#

你也可以使用wget来»untar it inline«。只需指定stdout作为输出文件(-O -):

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

ycl3bljg4#

所有其他解决方案都需要指定发布/版本号,这显然会破坏自动化。
这个解决方案- * 目前经过测试,并且已知可以与Github API v3一起使用-但是可以通过编程方式使用,以获取LATEST版本,而无需指定任何标签或版本号,并将二进制文件取消TARs为您在switch --one-top-level="pi-ap"中指定的任意名称。只需在下面的示例中使用您自己的详细信息交换用户f1 linux和repopi-ap*,Bob就是您的叔叔:

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

72qzrwbm5#

一个特定的dir:

cd your_dir && curl -L https://download.calibre-ebook.com/3.19.0/calibre-3.19.0-x86_64.txz | tar zx

相关问题