ฉันจะดาวน์โหลด tarball จาก GitHub โดยใช้ cURL ได้อย่างไร


93

ฉันพยายามดาวน์โหลด 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 ฉลาดพอที่จะคิดได้ นี้ออก

คำตอบ:


148

ใช้-Lตัวเลือกเพื่อติดตามการเปลี่ยนเส้นทาง:

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

3
สำหรับคุณจะยังมีแนวโน้มความต้องการhttps -k
nicerobot

1
ทำไมช่วงนี้จึงมีปัญหาเกี่ยวกับใบรับรองใน raw.github.com ฉันมีปัญหาในการติดตั้ง homebrew และ rvm ในเครื่องใหม่ ฉันเคยคัดลอกและวางจากหน้าแรกและใช้งานได้ ตอนนี้ฉันพบปัญหาเกี่ยวกับใบรับรอง: ruby ​​-e "$ (curl -fsSL raw.github.com/mxcl/homebrew/go )" curl: (60) ปัญหาใบรับรอง SSL: ไม่สามารถรับใบรับรองผู้ออกใบรับรองในพื้นที่ได้รายละเอียดเพิ่มเติมที่นี่: curl haxx.se/docs/sslcerts.html curl ดำเนินการตรวจสอบใบรับรอง SSL ตามค่าเริ่มต้นโดยใช้ "บันเดิล" .. หากคุณต้องการปิดการตรวจสอบใบรับรองของ curl ให้ใช้ตัวเลือก -k (หรือ - ไม่ปลอดภัย)
Chris Cinelli

อืม ... มีความเป็นไปได้ที่จะรวมโมดูลย่อยไว้ใน tarball ด้วยหรือไม่? ดูเหมือนว่าสำหรับโมดูลย่อยจะมีเพียงไดเร็กทอรีว่างเท่านั้นที่สร้างขึ้นใน tarball
ออโรร่า

ไม่แน่ใจว่าตอนนี้เป็นปัญหาชั่วคราวหรือไม่ แต่ github ส่งคืนข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการในขณะนี้
BT

15
และเพียงเพื่อช่วยใครบางคนใน Google -Lหมายถึงติดตามการเปลี่ยนเส้นทาง
Steve Kehlet

45

วิธีที่ทันสมัยในการทำเช่นนี้คือ:

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คำต่อท้าย

คุณยังสามารถดึงข้อมูลที่เก็บถาวรของ repo ส่วนตัวได้โดยระบุ-u token:x-oauth-basicตัวเลือกเพื่อ curl แทนที่tokenด้วยโทเค็นการเข้าถึงส่วนบุคคล


3
จากคำตอบทั้งหมดนี่คือสิ่งที่ฉันกำลังมองหา! หากคุณมีโทเค็น oauth คุณสามารถใช้มันได้โดยตรง https://token@github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz
svenevs

วิธีนี้จะดาวน์โหลดจากรุ่นต่างๆแทนการเก็บถาวรได้อย่างไร
waspinator

1
@waspinator ฉันใช้curl -OL https://github.com/user-or-org/repo/releases/download/version/<asset name>.tar.gzดูตัวอย่างที่นี่
Wayne

คุณอธิบายได้ไหมว่าสิ่งนี้ดีกว่าคำตอบที่ยอมรับได้อย่างไร
Robin Métral

อาจเป็นเพราะ.../tarball/...เมธอดสร้าง tar.gz เท่านั้น? GH เพิ่มวิธีการที่มีความยืดหยุ่นมากขึ้นในภายหลังที่ช่วยให้คุณแยกเก็บในรูปแบบที่คุณต้องการขึ้นอยู่กับคำต่อท้ายหรือ.tar.gz .zipฉันจำไม่ได้ว่าทำไมฉันถึงเขียนโพสต์นี้
Pavel Repin

14

คุณยังสามารถใช้ wget เพื่อ»แก้ปัญหาแบบอินไลน์«. เพียงระบุ stdout เป็นไฟล์เอาต์พุต ( -O -):

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

2

โซลูชันอื่น ๆ ทั้งหมดต้องการการระบุหมายเลขรุ่น / เวอร์ชันซึ่งเห็นได้ชัดว่าเป็นการทำลายระบบอัตโนมัติ

โซลูชั่นนี้ได้รับการทดสอบในปัจจุบันและเป็นที่รู้จักในการทำงานกับGithub API v3 - แต่สามารถใช้โปรแกรมที่จะคว้าตัวล่าสุดที่ปล่อยโดยไม่ต้องระบุแท็กหรือปล่อยใด ๆ จำนวนและยกเลิกการ Tars --one-top-level="pi-ap"ไบนารีไปยังชื่อพลคุณระบุในสวิทช์ เพียงแค่สลับผู้ใช้f1linuxและ repo pi-apในตัวอย่างด้านล่างพร้อมรายละเอียดของคุณเองและ Bob เป็นลุงของคุณ:

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

นี่เป็นสิ่งที่สวยงาม แต่สามารถใช้คำอธิบายได้จริงๆ เช่น GitHub API นี้เป็นเวอร์ชันใดและมีการบันทึกไว้ที่ไหน
l3l_aze

1
@ l3l_aze เพิ่งแก้ไขคำตอบรวมถึงหมายเลขเวอร์ชัน Githib API ปัจจุบันโซลูชันของฉันได้รับการทดสอบและทราบว่าสามารถใช้งานได้ ขอบคุณสำหรับคำติชม! - T
F1Linux

โว้ว. ฉันไม่คิดว่าสิ่งนี้จะดีไปกว่าสิ่งที่คุณแชร์ไปแล้ว ขอบคุณมาก!
l3l_aze

1

กับผบ. เฉพาะ

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


วิธีที่ดีกว่ามากขึ้น cd your_dir && curl -L https://download.calibre-ebook.com/3.19.0/calibre-3.19.0-x86_64.txz | tar zx; cd -
zhengquan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.