Как скачать тарбол из GitHub с помощью cURL?

Я пытаюсь загрузить tarball из 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 ответа

Решение

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

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

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

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 с личным токеном доступа.

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

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

Все остальные решения требуют указания номера выпуска / версии, что явно нарушает автоматизацию.

Это решение, которое в настоящее время протестировано и, как известно, работает с Github API v3, однако может использоваться программно для получения ПОСЛЕДНЕЙ версии без указания какого-либо тега или номера выпуска и отменяет TAR двоичный файл на произвольное имя, указанное в переключателе--one-top-level="pi-ap". Просто замените пользователя f1linux и репо pi-ap в приведенном ниже примере с вашими собственными данными и вашим дядей Бобом:

curl -L https://api.github.com/repos/f1linux/pi-ap/tarball | tar xzvf - --one-top-level="pi-ap" --strip-components 1

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

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

Другие вопросы по тегам