Создание ZIP-файла, извлекающего кроссплатформенность

0

Мне нужно распространять большой (6 ГБ +) файл кроссплатформенный. По практическим соображениям я хочу сжать его до 2 ГБ +. Первоначально я использовал Mac OS 10.11 для создания zip-файла с помощью Archive Utility. Он хорошо распакован на моем 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 работает zip3.0 (5 июля 2008 г.) и unzip5.52 (28 февраля 2005 г.). Linux работает zip3.0 (5 июля 2008 г.) и unzip6.00 (20 апреля 2009 г.). Понятия не имею, что использует Windows. Мне нужен zip для правильного распаковки в Mac OS X, Linux и Windows (7, 8, 8.1 и 10). Я бы не хотел говорить людям о загрузке сторонней программы. Я также хотел бы понять, что, черт возьми, происходит. У меня никогда не было проблем с несовместимостью формата zip на разных платформах.

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

Йонас Грайтманн
источник
Вы не создаете самораспаковывающийся zip-архив, а просто обычный zip-архив? Используете ли вы 64-битные версии Zip? Может быть, superuser.com/q/394905/504096 отвечает на ваш вопрос, этот текст ( en.wikipedia.org/wiki/Zip_%28file_format%29#ZIP64 ) вам поможет? Первоначально стандарт zip допускал сжатие только 4 ГБ (а не размер результирующего файла архива).
daniel.neumann
Я не знал об ограничении размера. Похоже, виновником является Mac OS X, не поддерживающая разархивирование ZIP64. Из предоставленной вами ссылки на Википедию я могу сделать вывод, что все выпуски Windows после XP поддерживают ZIP64. Для пользователей OS X мне, возможно, придется предоставить альтернативную загрузку .tar.gz. Отличная работа, Apple.
Йонас Грайтманн
Очевидно, что версия 6.0 для Unzip для Mac поддерживает большие файлы ( unix.stackexchange.com/a/220054 , macupdate.com/app/mac/35967/unzip ). Вот еще несколько советов о том, как получить версию 6.0: apple.stackexchange.com/q/149080 . Стоит ли ответить на ваш вопрос?
daniel.neumann
Если вы хотите пройти через репост в качестве ответа, я с радостью приму это. К сожалению, я не могу предположить, что моя аудитория может установить что-либо с помощью homebrew, поэтому я буду придерживаться отдельного tar.gz.
Йонас Грайтманн
Доступна версия Mac для Windows 7zip. Может быть, это возможно для вашей аудитории, чтобы установить его. Спасибо, что приняли ответ.
daniel.neumann

Ответы:

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 .

К сожалению, стандартной версией unzipMacOS является не 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 (named 7zX).

daniel.neumann
источник