Как я могу обновить мою версию `unzip` до версии 6.00 или выше?

Распространенная проблема заключается в том, что при распаковке (читай: «открыть двойным щелчком») некоторые .zipфайлы приводят к тому, что они имеют одинаковый размер .cpgz. Но вместо этого вы ожидали разархивированный файл или папку.

Программа распаковки по умолчанию в OS X — «/System/Library/CoreServices/Archive Utility.app».

Когда вы пытаетесь разархивировать его в Терминале ( /usr/bin/unzip), вы видите следующее:

$ unzip SE.zip

Archive:  SE.zip
warning [SE.zip]:  zipfile claims to be last disk of a multi-part archive;
  attempting to process anyway, assuming all parts have been concatenated
  together in order.  Expect "errors" and warnings...true multi-part support
  doesn't exist yet (coming soon).
error [SE.zip]:  missing 8256083459 bytes in zipfile
  (attempting to process anyway)
error [SE.zip]:  attempt to seek before beginning of zipfile
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)

У меня работает Mavericks 10.9.5, и a unzip -vузнает, что мы используем версию 5.52:

$ unzip -v
UnZip 5.52 of 28 February 2005, by Info-ZIP.  Maintained by C. Spieler. Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.
...

Самое смешное, что тот же «поврежденный» zip-файл отлично извлекается в моей системе CentOS. Ошибки нет, файл вроде в порядке. Моя система CentOS запускает разархивированную версию 6.00:

$ unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.
...

Мой вопрос: Как я могу обновить свою версию unzipдо версии 6.00 или выше?

И связанный с этим вопрос: повлияет ли моя новая версия распаковки OS X на распаковку по умолчанию «Archive Utility.app»?

пс. Я предпочитаю использовать менеджер пакетов, как brewуказано выше, для компиляции из исходного кода. brew install unzipприводит к:Error: No available formula for unzip

Используйте macports, у него есть распакованная версия 6.0 :)
ха-ха brew против macports... Моя система уже замаринована в brew. Но, может быть, я могу проверить источник. Спасибо, в любом случае!
На ваш "аффилированный" вопрос был дан ответ? «Повлияет ли моя новая версия распаковки OS X на распаковку по умолчанию «Archive Utility.app»?» Я думал о том же самом.

Ответы (2)

Использование Homebrew (по запросу):

$ brew tap homebrew/dupes
$ brew install unzip

Это установит распаковку по адресу (учитывая значения по умолчанию)/usr/local/Cellar/unzip/6.0/bin/unzip

Затем вы можете использовать псевдоним где- unzip6то на своем пути.

Кроме того, вы можете попробовать «The Unarchiver» из магазина приложений. Гораздо полезнее, чем Apple Archive Utility.

ОБНОВИТЬ

dupes устарели в Homebrew, поэтому brew tap homebrew/dupesв них больше нет необходимости. Все, что вам нужно сейчас (при условии, что Homebrew установлен):

brew install unzip

Затем вы можете добавить ссылку на /usr/local/binwith:

ln -s /usr/local/opt/unzip/bin/unzip /usr/local/bin/unzip6

Теперь система unzipдолжна работать с unzipи Версия 6 будет работать сunzip6

Мне не хватало brew tap homebrew/dupes. Понятия не имею, что это делает, но теперь я могу распаковать brew install. Спасибо, куча.
Хотя у меня сейчас рабочий unzip 6.0.0, как я и хотел, теперь у меня новая ошибка. Может быть, вы можете помочь мне с этим, но это выходит за рамки этой темы. skipping: foobar need PK compat. v4.5 (can do v2.1)для каждого файла в zip.
Не могу решить проблему, хотя я предполагаю, что файл был заархивирован с помощью PKZip, и он сделал что-то... уникальное
Кстати, команда tap открывает новые приложения в brew, которые по разным причинам отсутствуют по умолчанию (в частности, добавляет новые специальные репозитории homebrew git). Это включает в себя такие вещи, как dupes, gamesи phpт. д.
Если кто-то попадет на эту страницу из-за ошибки при распаковке больших zip-файлов, перейдите по ссылке с The Unarchiver. Работал на меня.
Этот нуб хочет знать: что вы имеете в виду, когда говорите: «Тогда вы можете использовать псевдоним unzip6 где-то на вашем пути»? Зачем кому-то это делать? Если кто-то сделает это, как псевдоним будет использоваться в будущем?
@EJMak Лучше всего использовать приложение Unarchiver. Тем не менее ... Когда Homebrew устанавливает что-то, уже являющееся частью MacOS (например unzip, ), он не будет связывать это, поэтому его легко использовать. В случае с unzipHomebrew он будет установлен в /usr/local/opt/unzip/bin/unzip. Чтобы создать псевдоним или ссылку , используйте следующую команду (из командной строки (terminal.app)) ln -s /usr/local/opt/unzip/bin/unzip /usr/local/bin/unzip6. Предполагая, что /usr/local/bin находится на вашем пути, вы можете использовать его unzip6из командной строки или unzipиспользовать значение по умолчанию для Mac.

Вы можете обнаружить, что p7zip делает то, что вам нужно. Используйте brew install p7zipдля установки, затем запустите, 7z -hчтобы получить помощь.

Когда я пишу это, я использую 7z tzip-файл размером 20 ГБ, чтобы проверить его целостность. И Unzip 5.52, и Unzip 6.0 захлебнулись этим.

Да! Например, p7zip очень хорошо распаковывает образы виртуальных машин Microsoft IE размером более 5 ГБ.
Круто, но это не ответ на вопрос.