ทำไมการแตก tgz นี้จึงทำให้เกิดข้อผิดพลาดบน Mac ของฉัน แต่ไม่ใช่ใน Linux?


22

ฉันประสบปัญหาที่ค่อนข้างแปลกและฉันไม่สามารถเข้าใจได้ว่าเกิดอะไรขึ้น ฉันมีไฟล์ tgz SCIP-3.2.0.tgz นั่นคือการโยนข้อผิดพลาดเมื่อฉันพยายามที่จะแกะมัน ข้อผิดพลาดเกิดขึ้นเฉพาะใน OS X (ฉันใช้ 10.10.4) ฉันสามารถแตกไฟล์โดยไม่มีข้อผิดพลาดบนกล่อง Linux ที่รัน CentOS 6.6 ข้อผิดพลาดเกิดขึ้นเมื่อทั้งคู่ใช้บรรทัดคำสั่ง tar คำสั่งและเมื่อใช้ยูทิลิตี้การเก็บถาวร ฉันส่งรายชื่อผู้รับจดหมาย SCIP และฉันมีแฮช SHA-1 เหมือนกับผู้ใช้รายอื่น ( e085a4a3591eddf945dcb365d97d2512c267e374 ) ดังนั้นจึงไม่มีข้อผิดพลาดในการดาวน์โหลด พวกเขาไม่แน่ใจว่าเกิดอะไรขึ้น

นี่เป็นข้อผิดพลาดที่ฉันได้รับเมื่อพยายามแกะกล่องโดยใช้ยูทิลิตี้การเก็บถาวร

archive utility error

ในกรณีที่ภาพเกิดความเสียหายข้อความในภาพจะกล่าวถึงสิ่งนี้:

ไม่สามารถขยาย "scip-3.2.0.tgz" เป็น "Desktop"
(ข้อผิดพลาด 1 - ไม่อนุญาตให้ใช้งาน)

และเมื่อฉันพยายามแกะกล่องผ่านทางบรรทัดคำสั่ง นี่คือผลลัพธ์ที่ฉันได้รับ . มันเป็นบรรทัดสุดท้าย ( tar: Error exit delayed from previous errors. ) ที่เกี่ยวข้องกับฉัน ฉันไม่เห็นสิ่งที่ทำให้เกิด ที่เก็บถาวร ปรากฏ เพื่อแยกโดยไม่มีปัญหา แต่ฉันไม่เชื่อถือด้วยข้อผิดพลาดที่ถูกโยน

ไม่มีใครรู้ว่าสิ่งที่ทำให้เกิดสิ่งนี้?

[แก้ไข]
เมื่อมองเข้าไปใกล้ผลลัพธ์เล็กน้อยบรรทัด 1108 จะมีข้อผิดพลาด:

x scip-3.2.0/applications/Coloring/Makefile: Can't create 'scip-3.2.0/applications/Coloring/Makefile'

2
แอปนี้ทำงานกับแอปอื่นเช่น unarchiver หรือไม่ wakaba.c3.cx/s/apps/unarchiver.html
TryTryAgain

ใช่! ฉันสงสัยว่าพวกเขาทำอะไรแตกต่างกัน ส่วนหนึ่งของปัญหาคือฉันมีสคริปต์ทุบตีที่ทำสิ่งต่าง ๆ โดยอัตโนมัติและสิ่งหนึ่งที่ต้องทำคือแยก tgz นี้เพื่อให้สามารถสร้างสิ่งที่อยู่ภายใน ฉันสงสัยว่ามีข้อผิดพลาดใน tar คำสั่งที่มาพร้อมกับ OS X
Geoff

1
อาจเป็นไปได้ว่ามีข้อผิดพลาด ฉันพบว่ายูทิลิตี้การจัดเก็บในตัวของ OS X นั้นค่อนข้างเส็งเคร็ง ไม่มีวิธีที่คุณสามารถจัดเก็บไฟล์ที่จำเป็นลงในไฟล์ zip หรือไฟล์อื่นได้หรือไม่? นอกจากนี้หากคุณเขียนสคริปต์ขึ้นข้อผิดพลาดจะเกิดขึ้นเมื่อคุณเช่นกัน gunzip -c scip-3.2.0.tgz | tar xopf - จากบรรทัดคำสั่งคุณจะใช้มันสำหรับสคริปต์ของคุณหรือไม่
TryTryAgain

ใช่คำสั่งนั้นจะพ่นข้อผิดพลาดเดียวกัน gunzip ทำงานได้ดี แต่เมื่อฉันพยายามดึง tarball ที่ไม่บีบอัดนั่นคือเมื่อเกิดข้อผิดพลาด
Geoff

อ๊ะปรากฎว่ามีข้อผิดพลาดใน tarball! ฉันไม่ได้บ้า. ฉันจะเขียนคำตอบที่ละเอียดมากขึ้น เห็นได้ชัดว่ายูทิลิตี้ tar ใน OS X เป็นสิ่งที่ถูกต้องที่นี่!
Geoff

คำตอบ:


28

สิ่งนี้จะช่วยระบุสิ่งที่เกิดขึ้น คำตอบของจอห์นนี่ รวมทั้งตอบคำถามว่าทำไมจึงทำงานกับ Linux แต่ไม่ใช่ Mac

ปัญหาอยู่ที่ข้อเท็จจริงที่ว่า Mac OS X ใช้ bsdtarในขณะที่ระบบ Linux ส่วนใหญ่ใช้ gnutar.

คุณสามารถติดตั้ง gnutar บน Mac กับ Homebrew โดยใช้ brew install gnu-tarซึ่งจะเชื่อมโยง gnutar เข้าไป /usr/local/bin เช่น gtar.

หากคุณติดตั้ง gnutarจากนั้นคุณสามารถทำซ้ำปัญหาโดยใช้ขั้นตอนใน คำตอบของจอห์นนี่ .

$ brew install gnu-tar
==> Downloading https://homebrew.bintray.com/bottles/gnu-tar-1.28.yosemite.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring gnu-tar-1.28.yosemite.bottle.2.tar.gz
==> Caveats
gnu-tar has been installed as "gtar".

If you really need to use it as "tar", you can add a "gnubin" directory
to your PATH from your bashrc like:

    PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
==> Summary
🍺  /usr/local/Cellar/gnu-tar/1.28: 13 files, 1.6M
$ mkdir test
$ touch test/a test/b
$ gtar -zcvf test.tar.gz test test/a # make the archive with gnutar
test/
test/a
test/b
test/a
$ gtar -ztvf test.tar.gz
drwxr-xr-x adamliter/staff   0 2015-07-28 22:41 test/
-rw-r--r-- adamliter/staff   0 2015-07-28 22:41 test/a
-rw-r--r-- adamliter/staff   0 2015-07-28 22:41 test/b
hrw-r--r-- adamliter/staff   0 2015-07-28 22:41 test/a link to test/a
$ rm -r test
$ tar -xvf test.tar.gz # try to unpack the archive with bsdtar
x test/
x test/a
x test/b
x test/a: Can't create 'test/a'
tar: Error exit delayed from previous errors.
$ echo $?
1

เห็นได้ชัดเลย gnutar เก็บสิ่งต่าง ๆ ในลักษณะที่ทำให้เกิด bsdtar ทำให้หายใจไม่ออกซ้ำซ้อน ความจริงที่ว่า gtar -ztvf test.tar.gz ระบุว่าอินสแตนซ์ที่สองของ test/a ถูกเก็บถาวรเป็น link to test/a มีความเกี่ยวข้อง ดังที่จอห์นนี่ชี้ให้เห็นในความคิดเห็น gnutar จะเก็บข้อมูลซ้ำเป็นฮาร์ดลิงก์แทนที่จะเป็นไฟล์จริงซึ่งสามารถปิดได้ --hard-dereference.

นั่นคือคุณสามารถทำสิ่งต่อไปนี้:

$ mkdir test
$ touch test/a test/b
$ gtar -zcvf test.tar.gz test test/a --hard-dereference
test/
test/a
test/b
test/a
$ gtar -ztvf test.tar.gz test
drwxr-xr-x adamliter/staff   0 2015-07-28 23:49 test/
-rw-r--r-- adamliter/staff   0 2015-07-28 23:49 test/a
-rw-r--r-- adamliter/staff   0 2015-07-28 23:49 test/b
-rw-r--r-- adamliter/staff   0 2015-07-28 23:49 test/a # note that this is no longer a link
$ rm -r test
$ tar -xvf test.tar.gz # unpack with bsdtar
x test/
x test/a
x test/b
x test/a
$ echo $?
0
$ ls test/
a b

อย่างไรก็ตามในกรณีนี้คุณไม่สามารถควบคุมการสร้าง tarball ได้อย่างชัดเจน --hard-dereference ไม่ใช่ตัวเลือก โชคดีที่ขึ้นอยู่กับ คำตอบของ OP ดูเหมือนว่าปัญหานี้ได้รับการแก้ไขแล้วโดยอัปสตรีม

อย่างไรก็ตามหากใครก็ตามประสบปัญหานี้ในอนาคตและต้องการการแก้ไขอย่างรวดเร็วหรือมีผู้ดูแลอัปสตรีมที่ไม่ตอบสนอง

เมื่อคุณระบุไฟล์ที่ซ้ำกันคุณสามารถใช้ --fast-read ตัวเลือกของ bsdtar (โปรดทราบว่าตัวเลือกนี้เป็นเพียงส่วนหนึ่งของ bsdtar, ไม่ gnutar ):

 -q (--fast-read)
         (x and t mode only) Extract or list only the first archive entry that matches each pattern or filename operand.  Exit as soon as each specified pat-
         tern or filename has been matched.  By default, the archive is always read to the very end, since there can be multiple entries with the same name
         and, by convention, later entries overwrite earlier entries.  This option is provided as a performance optimization.

ดังนั้นในตัวอย่างของเล่นที่ฉันสร้างขึ้นตามตัวอย่างของเล่นมา คำตอบของจอห์นนี่ ไฟล์ที่ซ้ำกันคือ test/a. ดังนั้นคุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยทำดังนี้

# this set of commands picks up from the first set of commands
# i.e., the following assumes a tarball that was *not* made with
# the --hard-dereference option, although this will work just as well
# with one that was
$ tar -xvqf test.tar.gz test/a # unarchive the first instance of test/a
x test/a
$ tar -xvf test.tar.gz --exclude test/a # unarchive everything except test/a
x test/
x test/b
$ echo $?
0
$ ls test/
a b

หมายเหตุยิ่งไปกว่านั้น gnutar มีความสุขอย่างสมบูรณ์แบบที่จะแยกไฟล์เก็บถาวรที่มีรายการซ้ำที่สร้างขึ้นด้วยตัวเองแม้ว่าจะ --hard-dereference ไม่ได้ใช้ตัวเลือก:

$ rm -r test
$ gtar -xvf test.tar.gz
test/
test/a
test/b
test/a
$ echo $?
0
$ ls test/
a b

ดังนั้นนี่จะตอบคำถามของคุณว่าทำไมจึงเกิดข้อผิดพลาดบน Mac แต่ไม่ใช่ Linux (ส่วนใหญ่) Linux distros มาพร้อมกับ gnutarและตั้งแต่ tarball ก็น่าจะบรรจุด้วย gnutarจะไม่มีข้อผิดพลาดเมื่อเปิดออก gnutarแต่จะมีข้อผิดพลาดเมื่อเปิดออกด้วย bsdtar.


สำหรับการอ่านและการอ้างอิงเพิ่มเติมคนอาจต้องการดู อะไรคือความแตกต่างระหว่าง bsdtar และ GNU tar? บน Unix.SE


ว้าวนักสืบที่ดีฉันไม่รู้ว่ามีความแตกต่างอย่างมีนัยสำคัญระหว่าง gnutar และ bsd tar ขึ้นอยู่กับคุณ gtar -tcvf, gnutar นั้น "ฉลาด" เพียงพอที่จะปรับแต่งไฟล์สำเนาที่สองให้เป็นลิงค์แทนที่จะไปทำซ้ำในไฟล์เก็บถาวร
Johnny

หลังจากกำจัดเอกสารไปแล้วดูเหมือนว่านี่จะเป็นผลข้างเคียงของการจัดการลิงค์ฮาร์ดของ gtar ดูเหมือนว่าไฟล์ที่ซ้ำกันนั้นเป็นฮาร์ดลิงก์ไปยังไฟล์ดังนั้นจึงจัดเก็บเป็นลิงก์แทนที่จะเป็นไฟล์จริง ให้ gtar --hard-dereference ตัวเลือกปิดการใช้งานพฤติกรรมนี้
Johnny

@Johnny มันเป็นสองผู้ดูแล Homebrew ที่คิดออก (Misty De Meo และ Dominyk Tiller) ผู้ดูแลซอฟต์แวร์บางตัวที่ฉันใช้เปิดตัวเวอร์ชั่นใหม่พร้อมไฟล์ที่ซ้ำกันใน tarball ซึ่งทำให้เกิดปัญหาเมื่อพยายามติดตั้งเวอร์ชันใหม่ด้วย Homebrew (ชัด) อย่างไรก็ตามขอขอบคุณสำหรับการตรวจสอบเอกสาร! ฉันจะเพิ่มเข้าไปในคำตอบ
Adam Liter

มันยอดเยี่ยมมาก ฉันกำลังทำเครื่องหมายคำตอบนี้เนื่องจากเป็นคำอธิบายที่ละเอียดที่สุดว่าเกิดอะไรขึ้น ขอบคุณ!
Geoff

6

การมีอยู่ของไฟล์ที่ซ้ำกันในไฟล์เก็บถาวรไม่ควรทำให้ไฟล์นั้นไม่ถูกต้องหรือไม่สามารถแตกไฟล์ได้ใน OSX ตามค่าเริ่มต้น tar จะเขียนทับไฟล์ที่ซ้ำกัน

ดังนั้นฉันรู้สึกสับสนเล็กน้อยกับพฤติกรรมใน Gist ของคุณ - OSX tar ช่วยให้สามารถทำซ้ำไฟล์ในที่เก็บถาวรได้ (ย้อนกลับไปสู่จุดประสงค์ดั้งเดิมในฐานะ เสื้อ จ๋อ เท่ ยูทิลิตี้ chive ดังนั้นจึงช่วยให้ไฟล์ถูกผนวกเข้ากับส่วนท้ายของไฟล์เก็บถาวรเทปและเมื่อมีการเรียกคืนไฟล์เก็บถาวรเวอร์ชันล่าสุดของไฟล์จะเขียนทับเวอร์ชันเก่ากว่า (s)

มันก็ต่อเมื่อตัวเลือก "-k" แสดงว่า tar ควรเตือนเกี่ยวกับไฟล์ที่มีอยู่ก่อนหน้า

ที่นี่ฉันสร้างไฟล์เก็บถาวรด้วยไฟล์ซ้ำจากนั้นแตกไฟล์โดยไม่มีปัญหา มันไม่ได้จนกว่าฉันจะเพิ่มตัวเลือก -k ที่มันเตือนฉันเกี่ยวกับไฟล์ที่ซ้ำกัน:

Macbook> tar --version
bsdtar 2.8.3 - libarchive 2.8.3
Macbook> mkdir test
Macbook> touch test/a test/b
Macbook> tar -zcvf test.tar.gz test test/a
a test
a test/a
a test/b
a test/a
Macbook> tar -ztvf test.tar.gz
drwxr-xr-x  0 user group       0 Jul 28 10:42 test/
-rw-r--r--  0 user group       0 Jul 28 10:42 test/a
-rw-r--r--  0 user group       0 Jul 28 10:42 test/b
-rw-r--r--  0 user group       0 Jul 28 10:42 test/a
Macbook> rm -r test
Macbook> tar -xvf test.tar.gz
x test/
x test/a
x test/b
x test/a
Macbook> echo $?
0
Macbook> rm -r test
Macbook> tar -k -xvf test.tar.gz
x test/
x test/a
x test/b
x test/a: Already exists
tar: Error exit delayed from previous errors.
Macbook> echo $?
1

ปัญหา umask อย่างง่าย ๆ ดูเหมือนจะไม่เป็นผู้ร้ายฉันพยายามเปลี่ยน umask เป็น 0777 และฉันยังสามารถแยกไฟล์เก็บถาวรได้:

Macbook> tar -xvf test.tar
x test/
x test/a
x test/b
x test/a
Macbook> ls -l test
ls: test: Permission denied
Macbook> sudo ls -l test
total 0
----------  1 someuser  wheel  0 Jul 28 13:48 a
----------  1 someuser  wheel  0 Jul 28 13:48 b

ฉันคิดว่าฉันสามารถทำซ้ำปัญหาโดยจงใจผนวกไดเรกทอรีที่ไม่สามารถเขียนได้ลงในไฟล์เก็บถาวร แต่ไม่ได้ทำงาน tar ไม่ได้อัปเดตสิทธิ์ในไดเรกทอรีเมื่อมันแตกไฟล์เก็บถาวร:

Macbook> mkdir -p testdir1/test testdir2/test
Macbook> touch testdir1/test/{a,b} testdir2/test/a
Macbook> chmod -w testdir2/test
Macbook> touch testdir2/test/b
touch: testdir2/test/b: Permission denied
Macbook> find testdir* -ls  | awk '{print $3, $11}'
drwxrwx--- testdir1
drwxrwx--- testdir1/test
-rw-rw---- testdir1/test/a
-rw-rw---- testdir1/test/b
drwxrwx--- testdir2
dr-xr-x--- testdir2/test
-rw-rw---- testdir2/test/a
Macbook> cd testdir1
Macbook> tar -cvf ../test.tar test/*
a test/a
a test/b
Macbook> cd ../testdir2
Macbook> tar -rvf ../test.tar test
a test
a test/a
Macbook> cd ..
Macbook> tar -tvf ./test.tar
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/a
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/b
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/a
dr-xr-x---  0 username groupname       0 Jul 28 15:40 test/
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/a
Macbook> tar -xvf test.tar
x test/a
x test/b
x test/a
x test/
x test/a
Macbook> 

ฉันยังลองเปลี่ยนการอนุญาตในการทดสอบ / a เป็น 000 ต่อท้ายไปยังที่เก็บถาวรจากนั้นจึงเพิ่มการทดสอบอื่น / a แต่ก็ใช้งานได้ดี

drwxrwx---  0 username groupname       0 Jul 28 15:40 test/
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/a
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/b
dr-xr-x---  0 username groupname       0 Jul 28 15:40 test/
----------  0 username groupname       0 Jul 28 15:40 test/a
-rw-rw----  0 username groupname       0 Jul 28 15:40 test/a

ดังนั้นฉันอยากเห็นไฟล์เก็บถาวรดั้งเดิมที่ทำให้เกิดปัญหาและดูว่ามีอะไรอยู่ในไฟล์เก็บถาวรนั้นเพื่อทำให้เกิดปัญหานี้

หากชื่อไฟล์และไดเรกทอรีใช้ชื่อเดียวกัน tar จะมีปัญหาในการแตกไฟล์ออก แต่มีข้อความแสดงข้อผิดพลาดค่อนข้างชัดเจน:

Macbook> tar -xvf test.tar
x test/
x test/dir1/
x test/dir1/a
x test/
x test/dir1: Can't remove already-existing dir
tar: Error exit delayed from previous errors.

(หากความขัดแย้งเกิดขึ้นในทางตรงกันข้ามไฟล์มาก่อนจากนั้นไดเรกทอรีที่มีชื่อเดียวกันจะมาในภายหลัง tar เพียงลบออกและสร้างไดเรกทอรี:

Macbook> tar -xvf test.tar
x test/
x test/dir1
x test/
x test/dir1/
x test/dir1/a

1
ฉันทำให้ชัดเจนขึ้นเล็กน้อยว่าพฤติกรรมในส่วนสำคัญของเขา (และคำตอบของเขาเอง) ดูเหมือนจะไม่เป็นคำตอบเต็มเพราะไฟล์ที่ซ้ำกันได้รับอนุญาตในไฟล์เก็บถาวร tar ดังนั้นคำตอบของ "ฉันไม่สามารถแตกไฟล์เก็บถาวร tar ด้วยไฟล์ที่ซ้ำกัน" ไม่ควรเป็น "ลบไฟล์ที่ซ้ำกัน" เนื่องจาก tar ควรจะสามารถจัดการกับกรณีนี้ได้
Johnny

2
นี่เป็นความคิดเห็นจริงๆ - มันไม่ได้มีทางออก แต่เป็นเพียงการอภิปรายในโซลูชันที่มีอยู่ จอห์นนี่คุณช่วยย้ายความคิดเห็นนี้ไปได้ไหม? ฉันจะกลับมาและลบสิ่งนี้ในภายหลังเพียงต้องการให้คุณมีโอกาสเคลื่อนย้ายก่อน ขอบคุณ
Ian C.

2
@Johnny ข้อมูลนี้ ทำ มีข้อมูลที่มีค่าสูง แต่ก็ไม่ใช่คำตอบสำหรับคำถาม มันเป็นความเห็นเกี่ยวกับคำตอบอื่น ลองวิธีนี้ดู: ถ้าคำตอบของเจฟฟ์ถูกลบคำตอบนี้จะเป็นประโยชน์หรือไม่? ไม่มันจะไม่ จริงๆแล้วเนื้อหาของคำตอบนี้คือ "คำตอบอื่น ๆ ของ Geoff ดูเหมือนจะไม่ถูกต้อง" คำถามเดิมคือ "สิ่งที่ทำให้เกิดข้อผิดพลาดนี้" สิ่งที่ใกล้เคียงที่สุดที่คุณสามารถตอบได้คือ "ฉันไม่รู้ว่าอะไรเป็นสาเหตุ แต่ไม่ใช่ไฟล์ที่ซ้ำกัน" - แต่นั่นจะต้องมีการแก้ไข
D.W.

2
ฉันต้องการที่จะไม่ลบเนื่องจากภาพที่ใหญ่กว่านี้เป็นสถานที่เรียนรู้และรายละเอียดในโพสต์นี้ยอดเยี่ยม IMO +1 และไม่จำเป็นต้องลบ - ฉันคิดว่ามันจะช่วยให้ผู้อื่นในสถานการณ์ที่คล้ายคลึงกันคิดออกว่าพวกเขาไม่มีไฟล์ที่เสียหายของ OP หรือการมีปฏิสัมพันธ์ที่เสียหายต่างกันใช่ไหม?
bmike

2
@bmike และคนอื่น ๆ : ฉันได้เพิ่ม คำตอบ อย่างน้อยก็ควรอธิบายสิ่งที่เกิดขึ้นที่นี่แม้ว่าจะไม่จำเป็นว่าทำไม
Adam Liter

6

ปรากฎว่ายูทิลิตี้ OS X tar เป็นสิ่งที่ถูกต้อง! มีข้อผิดพลาดเกิดขึ้นในไฟล์เก็บถาวร เธรดอีเมลนี้ กล่าวถึงในรายละเอียดเพิ่มเติม แต่ปัญหาคือว่า มีไฟล์ที่ซ้ำกันในไฟล์เก็บถาวร . พวก SCIP กำลังแก้ไขไฟล์เก็บถาวรขณะที่ฉันพิมพ์นี้

[แก้ไข]
scip-3.2.0.tgz ที่ได้รับการปรับปรุงใหม่ตอนนี้สามารถแยกไฟล์ได้แล้ว! แฮช SHA-1 ของ tgz ใหม่คือ 5b4e8283f4a5bf9e50f9a62d4320d6f5f50c8476.

[แก้ไข 2]
ไม่ใช่ว่ามีข้อผิดพลาดในที่เก็บถาวร มันเป็นแบบนั้น bsdtarซึ่งมาพร้อมกับ OS X จัดการไฟล์ที่ซ้ำกันแตกต่างจาก gnutarซึ่งมาพร้อมกับ Linux คำตอบของ @Adam Litre ที่นี่ ให้คำอธิบายโดยละเอียดเกี่ยวกับสิ่งที่เกิดขึ้น


1
น่าสนใจ ดังนั้นยูทิลิตี้อื่น ๆ อาจเพิกเฉยต่อข้อผิดพลาดของไฟล์ที่ซ้ำกันและย้ายไปโดยไม่บ่น? อย่างไรก็ตามดีใจที่คุณพบสาเหตุและคำตอบ
TryTryAgain

1
ใช่ฉันคิดว่านั่นเป็นสิ่งที่สาธารณูปโภคอื่น ๆ กำลังทำอยู่ ฉันจะเถียงว่าอรรถประโยชน์ของ OS X tar เป็นสิ่งที่ถูกต้องที่นี่ ไฟล์เก็บถาวรที่มีรูปแบบไม่ถูกต้องควรแจ้งเตือนอย่างน้อยที่สุดเพื่อเตือนผู้ใช้ว่ามีบางอย่างปิดอยู่ ขอบคุณสำหรับความช่วยเหลือของคุณ!
Geoff

ไฟล์ที่ซ้ำกันในไฟล์เก็บถาวร tar ไม่ได้ทำให้เป็นไฟล์เก็บถาวรที่มีรูปแบบไม่ถูกต้องรูปแบบ tar อนุญาตให้ใช้งานไฟล์ซ้ำโดยเฉพาะ ฉันอยากรู้ว่าทำไม mac tar ของคุณปฏิเสธที่จะแตกไฟล์เก็บถาวรแม้ว่าคุณจะไม่เจาะจงก็ตาม -k ตัวเลือกซึ่งจะทำให้มันเตือนเกี่ยวกับไฟล์มาก่อน น่าเสียดายที่พวกเขาได้อัปเดตแล้ว scip-3.2.0.tgz ไฟล์ที่จะลบ dupe ดังนั้นฉันไม่สามารถทดสอบการเก็บถาวรนั้นได้
Johnny

tar สารสกัดตอบสนองที่แตกต่างกันเมื่อพยายามที่จะแยก scip-3.2.0/applications/Coloring/Makefile สองครั้งขึ้นอยู่กับคุณ umask. ถ้าสิ่งที่สร้างขึ้นครั้งแรกไม่ทำให้คุณสามารถเขียนได้การพยายามครั้งที่สองจะล้มเหลว
daniel Azuelos

1
@ D.W ฉันได้เพิ่ม คำตอบ นั่นอธิบายว่าทำไมสิ่งนี้จึงไม่ขัดแย้งกัน
Adam Liter

1

มีทางเลือกซอฟต์แวร์เก็บถาวรฟรีที่มีน้ำหนักเบาซึ่งฉันใช้สำหรับ Mac OSX ก็เรียกว่า Keka และฉันใช้มันเพื่อแกะกล่อง 7zip โดยเฉพาะที่สุด ยิ่งไปกว่านั้นมันสามารถแตกไฟล์ประเภทอื่น ๆ เช่น. rar,. tar, .gz ฯลฯ มันทำงานกับไฟล์ tar เฉพาะของ OP ด้วยเช่นกัน แต่ฉันลองมันหลังจาก @Geoff พูดถึงทีมกำลังซ่อมแซมไฟล์

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