Мне нужно распространять большой (6 ГБ +) файл кроссплатформенный. По практическим соображениям я хочу сжать его до 2 ГБ +. Первоначально я использовал Mac OS 10.11 для создания zip-файла с помощью утилиты архивирования. Он хорошо распакован на моем Linux, но не на Windows 10 (с помощью системной утилиты). При сжатии исходного файла в Linux я могу извлечь его в Windows 10, но не удается извлечь в Mac OS X. Когда я пытаюсь извлечь его с помощью программы командной строки unzip в Mac OS X, я получаю следующую ошибку:

Archive:  UbuntuLTS.vdi.zip
warning [UbuntuLTS.vdi.zip]:  76 extra bytes at beginning or within zipfile
  (attempting to process anyway)
error [UbuntuLTS.vdi.zip]:  reported length of central directory is
  -76 bytes too long (Atari STZip zipfile?  J.H.Holm ZIPSPLIT 1.1
  zipfile?).  Compensating...
   skipping: UbuntuLTS.vdi           need PK compat. v4.5 (can do v2.1)

note:  didn't find end-of-central-dir signature at end of central dir.
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)

На Mac установлена zip 3.0 (5 июля 2008 г.) и unzip версия 5.52 (28 февраля 2005 г.). В Linux работает zip 3.0 (5 июля 2008 г.) и unzip 6.00 (20 апреля 2009 г.). Понятия не имею, что использует Windows. Мне нужен zip для правильного распаковки на Mac OS X, Linux и Windows (7, 8, 8.1 и 10). Я бы не хотел говорить людям о загрузке сторонней программы. Я также хотел бы понять, что, черт возьми, происходит. У меня никогда не было проблем с несовместимостью формата zip на разных платформах.

Для любого решения, которое вы предлагаете, необходима стандартная пост-Windows Vista, так как она будет самой большой целевой группой. Я знаю, что просьба заставить его работать на "Linux" немного не определена.

1 ответ1

1

unzip версию до версии 6.0 и не поддерживает извлечение ZIP-файлов размером более 4 ГБ в виде несжатых файлов (или 2 ГБ, http://www.info-zip.org/FAQ.html#limits). См., Например, https://superuser.com/a/394915/504096 и https://unix.stackexchange.com/a/220054 .

К сожалению, стандартная версия unzip предоставляемая MacOS, не 6.0, а 5.X. Версию 6.0 для MacOS можно получить здесь: http://www.macupdate.com/app/mac/35967/unzip . В этой статье описывается установка версии 6: https://apple.stackexchange.com/q/149080.

Кроме того, unzip должна быть скомпилирована с параметрами LARGE_FILE_SUPPORT и ZIP64_SUPPORT , чтобы иметь возможность обрабатывать файлы выше 2 ГБ / 4 ГБ. Обычно так и должно быть. Чтобы узнать, была ли unzip скомпилирована соответствующим образом, введите unzip -version . В выводе должно быть что-то вроде этого:

UnZip 6.00 of 20 April 2009 ...
...
UnZip special compilation options:
...
LARGE_FILE_SUPPORT (large files over 2 GiB supported)
ZIP64_SUPPORT (archives using Zip64 for large files supported)
....

Альтернативой unzip было использование 7zip который неофициально доступен для операционных систем, отличных от Windows, таких как MacOS (названный 7zX).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .