Подтвердить что ты не робот

Как загрузить tarball из GitHub с помощью cURL?

Я пытаюсь загрузить tarball из GitHub с помощью cURL, но он не перенаправляется:

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2
<html><body>You are being <a href="#" onclick="location.href='https://nodeload.github.com/pinard/Pymacs/tarball/v0.24-beta2'; return false;">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 был достаточно умным, чтобы понять это.

4b9b3361

Ответ 1

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

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

Ответ 2

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

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 файл вместо tarball, укажите .zip вместо суффикса .tar.gz.

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

Ответ 3

Вы также можете использовать wget для "untar it inline". Просто укажите stdout в качестве выходного файла (-O -):

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