Ответ 1
Используйте параметр -L
, чтобы следить за перенаправлениями:
curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
Я пытаюсь загрузить 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 был достаточно умным, чтобы понять это.
Используйте параметр -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 для "untar it inline". Просто укажите stdout в качестве выходного файла (-O -
):
wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 -O - | tar xz