Как скачать тарбол из GitHub с помощью cURL? - PullRequest
80 голосов
/ 21 апреля 2011

Я пытаюсь загрузить тарбол из GitHub, используя 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>

Примечание: 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 был достаточно умен, чтобы понять это.

Ответы [ 4 ]

127 голосов
/ 21 апреля 2011

Используйте параметр -L для отслеживания перенаправлений:

curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
39 голосов
/ 19 апреля 2014

Модернизированный способ сделать это:

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

Заменить user-or-org, repo и sha1-or-ref соответственно.

Если вы хотите использовать ZIP-файл вместо архива, укажите .zip вместо .tar.gz суффикс.

Вы также можете получить архив частного репозитория, указав -u token:x-oauth-basic параметр curl. Замените token токеном личного доступа .

14 голосов
/ 21 апреля 2011

Вы также можете использовать wget, чтобы «распаковать его». Просто укажите stdout в качестве выходного файла (-O -):

wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 -O - | tar xz
1 голос
/ 21 марта 2018

с определенным каталогом

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

...