2011-04-21 104 views
67

我試圖下載使用cURL從GitHub一個壓縮包,但它似乎並沒有被重定向:如何使用cURL從GitHub下載tarball?

$ 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 --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx 

我發現重定向後的URL變成了b e https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz,但我希望cURL足夠聰明以解決這個問題。

回答

95

使用-L選項進行重定向:

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

對於'https',您可能還需要'-k'。 – nicerobot 2011-12-29 00:41:24

+1

爲什麼最近在raw.github.com上有證書問題?我有問題在新機器上安裝自制軟件和rvm。我曾經從主頁複製和粘貼,並正在工作。現在我得到證書問題: ruby​​ -e「$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)」 curl:(60)SSL證書問題:無法獲取本地發行人證書 更多詳細信息,請訪問:http://curl.haxx.se/docs/sslcerts.html curl默認使用「捆綁」執行SSL證書驗證。 如果您想關閉curl的驗證證書,請使用-k(或--insecure)選項 。 – 2013-09-12 18:58:52

+0

嗯...有沒有可能將子模塊包含在tarball中呢?看來,對於子模塊,只有空目錄在tarball中創建。 – aurora 2013-10-09 08:18:35

12

您還可以使用wget來»解壓它內嵌«。簡單地使用stdout作爲輸出文件(-O -):

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

這樣的現代化的方法是:

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

更換​​,reposha1-or-ref相應。

如果您想要使用zip文件而不是tarball,請指定.zip而不是.tar.gz後綴。

您還可以通過指定-u token:x-oauth-basic選項來檢索私人回購存檔。將token替換爲personal access token.

+2

,這正是我一直在尋找的!如果你有一個oauth標記,你可以直接使用它; '的https:// @令牌github.com /用戶或-ORG /回購/存檔/ SHA1或 - ref.tar.gz' – sjm324 2017-05-14 20:01:53