GitHub'dan cURL kullanarak nasıl tarball indirebilirim?


94

GitHub'dan cURL kullanarak bir tarball indirmeye çalışıyorum , ancak yönlendiriyor gibi görünmüyor:

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

Not: wget benim için çalışıyor:

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

Bununla birlikte, cURL'yi kullanmak istiyorum çünkü nihayetinde aşağıdaki gibi bir şeyle satır içi olarak açmak istiyorum:

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

Yeniden yönlendirmeden sonra URL'nin https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz olduğunu buldum , ancak cURL'nin anlamaya yetecek kadar akıllı olmasını istiyorum bu dışarı.

Yanıtlar:


150

-LYönlendirmeleri takip etme seçeneğini kullanın :

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

3
Çünkü httpsmuhtemelen ihtiyacınız olacak -k.
nicerobot

1
Neden son zamanlarda raw.github.com'da sertifika sorunları var? Yeni bir makineye homebrew ve rvm kurmakta sorun yaşadım. Ana sayfadan kopyalayıp yapıştırırdım ve çalışıyordum. Şimdi sertifika sorununu alıyorum: ruby ​​-e "$ (curl -fsSL raw.github.com/mxcl/homebrew/go )" curl: (60) SSL sertifikası sorunu: yerel yayıncı sertifikası alınamıyor Daha fazla ayrıntı burada: curl. haxx.se/docs/sslcerts.html curl, varsayılan olarak bir "paket" kullanarak SSL sertifikası doğrulaması gerçekleştirir .. curl'nin sertifika doğrulamasını kapatmak isterseniz, -k (veya --insecure) seçeneğini kullanın.
Chris Cinelli

Mmmm ... alt modülleri tarball'a dahil etme imkanı var mı? Görünüşe göre, alt modüller için tarball'da sadece boş dizinler yaratılır.
aurora

Bunun şu anda geçici bir sorun olup olmadığından emin değilim, ancak github şu anda bunun için 500 dahili sunucu hatası döndürüyor.
BT

15
Ve potansiyel olarak bir Google'ı kurtarmak -Liçin, yönlendirmeleri takip etmek anlamına gelir.
Steve Kehlet

45

Bunu yapmanın modernize edilmiş yolu:

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

Değiştir user-or-org, repove sha1-or-refbuna göre.

Tarball yerine bir zip dosyası istiyorsanız .zip, .tar.gzsonek yerine belirtin .

Ayrıca -u token:x-oauth-basiccurl seçeneği belirleyerek özel bir deponun arşivini de alabilirsiniz . Değiştir tokenbir ile kişisel erişim belirteci.


3
tüm cevaplar arasında tam olarak aradığım buydu! Bir oauth jetonunuz varsa, bunu doğrudan kullanabilirsiniz; https://token@github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz
svenevs

bu, arşivler yerine sürümlerden indirmek için nasıl çalışır?
waspinator

1
@waspinator, kullandığım curl -OL https://github.com/user-or-org/repo/releases/download/version/<asset name>.tar.gzbakınız örnek burada
Wayne

Bunun kabul edilen cevaptan daha iyi olduğunu açıklayabilir misiniz?
Robin Métral

Belki de .../tarball/...yöntem yalnızca tar.gz ürettiğinden? GH, daha sonra arşivi son eke .tar.gzveya son eke dayalı olarak istediğiniz biçimde çıkarmanıza olanak tanıyan daha esnek bir yöntem ekledi .zip. Bu yazıyı neden yazdığımı artık hatırlamıyorum.
Pavel Repin

14

Ayrıca wget'i »satır içi olarak kaldırmak« için de kullanabilirsiniz. Stdout'u çıktı dosyası ( -O -) olarak belirtmeniz yeterlidir :

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

2

Diğer tüm çözümler, otomasyonu açıkça bozan bir sürüm / sürüm numarası belirtmeyi gerektirir.

Bu çözüm - şu anda test edilmiş ve Github API v3 ile çalıştığı biliniyor - ancak herhangi bir etiket veya sürüm numarası belirtmeden EN SON sürümü almak için programlı olarak kullanılabilir ve ikiliyi anahtarda belirttiğiniz rastgele bir adla TAR'larını kaldırır --one-top-level="pi-ap". Aşağıdaki örnekte kullanıcı f1linux ve repo pi- ap'yi kendi bilgilerinizle değiştirin ve Bob sizin amcanınız :

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

Bu çok güzel, ama gerçekten biraz açıklama yapabilir. Örneğin, bu hangi GitHub API sürümüdür ve nerede belgelenir?
l3l_aze

1
@ l3l_aze Cevabı henüz düzenledim, çözümümün test edildiği ve çalıştığı bilinen mevcut Githib API sürüm numarasını ekleyin. Geri bildiriminiz için teşekkürler! - T
F1Linux

Whoa. Bunun zaten paylaştığınızdan daha iyi olabileceğini düşünmemiştim. Çok teşekkür ederim!
l3l_aze

1

belirli bir dizine sahip

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


daha iyi bir yol cd your_dir && curl -L https://download.calibre-ebook.com/3.19.0/calibre-3.19.0-x86_64.txz | tar zx; cd -
zhengquan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.