web-dev-qa-db-ja.com

cURLを使用してGitHubからtarballをダウンロードするにはどうすればよいですか?

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。

80
saltycrane

使用 -Lリダイレクトに従うオプション:

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

これを行う最新の方法は次のとおりです。

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

user-or-orgrepo、およびsha1-or-refを適宜置き換えます。

Tarballの代わりにZipファイルが必要な場合は、.Zipサフィックスの代わりに.tar.gzを指定します。

Curlに-u token:x-oauth-basicオプションを指定することにより、プライベートリポジトリのアーカイブを取得することもできます。 tokenパーソナルアクセストークンに置き換えます。

39
Pavel Repin

また、wgetを使用して"インラインで展開"することもできます。出力ファイルとしてstdoutを指定するだけです(-O -):

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

特定のディレクトリで

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

1
zhengquan