วิธีแก้ไขข้อผิดพลาด“ tar: มายากลที่ไม่ถูกต้อง” บน Linux Alpine


22

ฉันกำลังติดตั้ง sqlite บน Alpine Linux ฉันดาวน์โหลดsqlite-autoconf-3130000.tar.gzแต่tarไม่สามารถเปิดได้ ฉันลองคำตอบนี้แต่มันไม่ทำงาน tarให้ข้อความนี้:

tar: invalid magic
tar: short read

ฉันเขียนคำสั่งเหล่านี้

wget https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
tar -zxvf sqlite-autoconf-3090100.tar.gz

คุณช่วยกรุณาอัปเดตคำตอบของคุณด้วยคำสั่ง (และอาร์กิวเมนต์) ที่คุณพยายามเรียกใช้
DarkHeart

1
การดาวน์โหลดเสร็จสมบูรณ์หรือไม่ หากเป็นเช่นนั้นls -l sqlite-autoconf-3090100.tar.gzควรบอกคุณว่าไฟล์มีขนาด 2284128 ไบต์
Stephen Kitt

นอกจากนี้ปัจจุบันเป็นไฟล์ที่จัดรูปแบบ gzip หรือไม่ เบราว์เซอร์บางตัวใช้วิธีคลายการบีบอัดหมายความว่ามันอาจจะยังคงชื่อ sqlite-autoconf-3090100.tar.gz แต่เนื้อหานั้นอาจจะเป็น sqlite-autoconf-3090100.tar ไม่มีความคิดถ้า wget ทำสิ่งที่เท่าเทียมกันอย่างชาญฉลาด แต่มันทดสอบอย่างง่ายดายโดยออกจากzธงจาก tar
Hennes

คำตอบ:


21

ลองติดตั้งแพ็คเกจ tar (apk add tar) Busybox tar (ค่าเริ่มต้น) ไม่รองรับคุณสมบัติทั้งหมด


3
ฉันพบปัญหาเดียวกันเมื่อรันคำสั่ง tar ใน Dockerfile และการติดตั้ง tar ใช้งานได้สำหรับฉัน มันค่อนข้างสับสนเพราะถ้าคุณเรียกใช้คำสั่งในเชลล์ในคอนเทนเนอร์มันก็ใช้ได้ แต่ไม่ใช่ถ้าเป็นคำสั่ง RUN ใน Dockerfile โดยไม่ต้องติดตั้ง tar ก่อน : |
3cheesewheel

7

นี่ไม่ได้หมายความว่าเวอร์ชั่นอัลไพน์tarไม่เข้ากันเนื่องจากฟรานเชสโก้ชี้ให้เห็นว่าคุณควรตรวจสอบไฟล์เช็คซัมของคุณ

ฉันวิ่งเข้าไปในขณะนี้curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfใน Dockerfile ของฉัน

ปรากฎว่าฉันลืมไปแล้วว่าcurlจะทำตามการเปลี่ยนเส้นทางถ้าคุณอนุญาต-Lเท่านั้นและดังนั้นจึงไม่เคยไปที่ไฟล์จริงมันเป็นการดาวน์โหลด html ที่บอกว่ามีการเปลี่ยนเส้นทาง การเพิ่มการ-Lอนุญาตให้ฉันบันทึกไฟล์โดยไม่ทำให้คอนเทนเนอร์ของฉันใหม่tar(นอกเหนือจาก "bloat" ที่เพิ่มโดยcurl)


0

tar: มายากลที่ไม่ถูกต้องหมายถึงไฟล์เสียหาย

กรุณาตรวจสอบ md5sum หากตรงกับ ... นี่คือสิ่งที่ฉันได้รับ:

 md5sum  sqlite-autoconf-3090100.tar.gz 
 74931054399a2d7acf35637efe8d6f45  sqlite-autoconf-3090100.tar.gz

0

ฉันได้รับปัญหาเดียวกันและแก้ไขได้ แต่ฉันไม่แน่ใจว่าคุณกำลังเผชิญกับปัญหาเดียวกัน

รหัสที่ทำให้เกิดข้อผิดพลาด :

wget www.example.com/file.tar.gz
tar -zxvf file.tar.gz

รหัสที่ได้รับการแก้ไข :

wget https://www.example.com/file.tar.gz
tar -zxvf file.tar.gz

สังเกตุว่าฉันลืม "https: //" ไฟล์นั้นถูกดาวน์โหลดมาแล้ว แต่น้ำมันดินทำให้ฉันมีข้อผิดพลาดเดียวกัน หากไม่พบไฟล์ให้แน่ใจว่าคุณใช้

นักเทียบท่าสร้าง- ไม่มีแคช ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.