web-dev-qa-db-fra.com

Comment télécharger une archive depuis GitHub en utilisant cURL?

J'essaye de télécharger une archive depuis GitHub en utilisant cURL , mais cela ne semble pas être redirigé:

$ 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>

Note: wget fonctionne pour moi:

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

Cependant, je veux utiliser cURL car je souhaite finalement le décompresser avec quelque chose comme:

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

J'ai trouvé que l'URL après la redirection s'est avéré être https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz , mais j'aimerais CURL doit être assez intelligent pour comprendre cela.

80
saltycrane

Utilisez le -L option à suivre les redirections:

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

La manière moderne de le faire est:

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

Remplacer user-or-org, repo et sha1-or-ref en conséquence.

Si vous voulez un fichier Zip au lieu d’une archive, spécifiez .Zip au lieu de .tar.gz suffixe.

Vous pouvez également récupérer l'archive d'un dépôt privé en spécifiant -u token:x-oauth-basic option pour boucler. Remplacez token par un jeton d'accès personnel.

39
Pavel Repin

Vous pouvez également utiliser wget pour "décompresser". Spécifiez simplement stdout comme fichier de sortie (-O -):

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

avec un dir spécifique

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

1
zhengquan