2011-04-21 9 views
67

Estoy tratando de descargar un archivo comprimido desde GitHub usando cURL, pero no parece ser la reorientación:¿Cómo descargo un tarball de GitHub usando cURL?

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

Nota: obras wget para mí:

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

Sin embargo, yo quiero usar cURL porque en última instancia quiero descomprimirlo en línea con algo como:

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

me encontré con que la URL a redirigir después resultó b e https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz, pero me gustaría que CURL sea lo suficientemente inteligente como para resolver esto.

Respuesta

95

Utilice la opción -L seguir redirecciones:

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

Para 'https', también es probable que necesite' -k'. – nicerobot

+1

¿Por qué últimamente hay problemas de certificados en raw.github.com? Tuve problemas para instalar homebrew y rvm en una máquina nueva. Solía ​​copiar y pegar desde la página de inicio y estaba trabajando. Ahora obtengo el problema de certificado: ruby ​​-e "$ (curl -fsSL https://raw.github.com/mxcl/homebrew/go)" curl: (60) Problema con el certificado SSL: no se puede obtener local issuer certificate Más detalles aquí: http://curl.haxx.se/docs/sslcerts.html curl realiza la verificación del certificado SSL de forma predeterminada, usando un "paquete" .. Si desea desactivar Curl's verificación del certificado, use la opción -k (o --insegura). –

+0

Mmmm ... ¿existe la posibilidad de incluir los submódulos en el tarball también? Parece que para los submódulos solo se crean directorios vacíos en el tarball. – aurora

12

También puede utilizar wget para untar »que« en línea. Sólo tiene que especificar la salida estándar como el archivo de salida (-O -):

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

La forma modernizada de hacer esto es:

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

Reemplazar user-or-org, repo y sha1-or-ref en consecuencia.

Si desea un archivo zip en lugar de un tarball, especifique .zip en lugar del sufijo .tar.gz.

También puede recuperar el archivo de un repositorio privado, especificando la opción -u token:x-oauth-basic curl. Reemplace token con personal access token.

+2

de todas las respuestas, ¡esto era exactamente lo que estaba buscando! Si tiene un token oauth, puede usarlo directamente; 'https: // token @ github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz' – sjm324

Cuestiones relacionadas