Файл PKG, скачанный для установки программы на Mac, нельзя просто переименовать в ZIP — это установочный пакет macOS в формате xar, и для извлечения его содержимого потребуется либо встроенная утилита pkgutil, либо сторонний архиватор, понимающий эту структуру. Запрос «pkg to zip» обычно возникает в двух ситуациях: нужно достать файлы из установщика без его запуска, либо требуется переслать содержимое пакета в привычном формате архива.
Хорошая новость: конвертация возможна на любой платформе — и на самом Mac через Терминал, и на Windows через архиваторы вроде 7-Zip, и даже через онлайн-сервисы. Ниже разберём все рабочие способы, их ограничения и типичные ошибки.
Что представляет собой формат PKG
Пакет PKG — это контейнер, который система macOS использует для установки приложений, драйверов и обновлений. Внутри находится служебная информация (скрипты установки, манифест PackageInfo, список файлов Bom) и архив Payload с самими данными. Именно Payload чаще всего и нужен пользователю, ищущему «pkg to zip».
Структурно PKG построен на формате xar (eXtensible ARchive), а полезная нагрузка внутри обычно сжата как gzip-архив. Это объясняет, почему простое переименование расширения не работает: ZIP и xar — разные форматы упаковки, и система не сможет открыть такой файл штатными средствами.
⚠️ Внимание: распаковка PKG не равна установке программы. Скрипты установщика не выполняются, зависимости не регистрируются, поэтому извлечённое приложение может не запуститься корректно. Используйте распаковку для анализа содержимого или извлечения отдельных файлов.
Способ 1: распаковка через pkgutil на Mac
Самый надёжный метод — встроенная утилита pkgutil, которая присутствует в любой актуальной версии macOS и не требует установки дополнительного ПО. Откройте Терминал (папка «Программы» → «Утилиты») и выполните команду развёртывания пакета:
pkgutil --expand-full ~/Downloads/package.pkg ~/Desktop/pkg_extracted
Флаг --expand-full автоматически распаковывает и сам пакет, и вложенный Payload, поэтому в целевой папке вы сразу увидите обычные файлы и каталоги. Если использовать более короткий вариант pkgutil --expand, содержимое Payload останется в виде архива и его придётся распаковывать отдельно.
После развёртывания полученную папку легко сжать в ZIP штатными средствами: кликните по ней правой кнопкой в Finder и выберите «Сжать», либо выполните в Терминале:
ditto -c -k --sequesterRsrc --keepParent ~/Desktop/pkg_extracted ~/Desktop/pkg_extracted.zip
☑️ Распаковка PKG через Терминал
Способ 2: архиваторы 7-Zip и Keka
Если Терминал вам не подходит, с PKG справятся графические архиваторы. На Windows бесплатный 7-Zip умеет открывать xar-контейнеры: кликните правой кнопкой по файлу → 7-Zip → Открыть архив. Внутри вы увидите Payload — его нужно извлечь и открыть повторно как gzip-архив, а затем ещё раз, поскольку внутри обычно находится cpio-структура. Это многослойная распаковка, но она работает без установки macOS.
На Mac аналогичную задачу решает бесплатный архиватор Keka или утилита The Unarchiver. Перетащите PKG на иконку программы — она развернёт вложенные слои автоматически. После этого выделите извлечённые файлы и создайте из них обычный ZIP-архив.
- 📦 7-Zip (Windows) — открывает PKG как многослойный архив, извлечение в несколько шагов
- 🍎 Keka (macOS) — автоматически разворачивает вложенные архивы Payload
- 🗂 The Unarchiver (macOS) — простой вариант для одноразовой распаковки
- ⌨️ pkgutil (macOS) — штатный способ без сторонних программ
Способ 3: онлайн-конвертеры
Сервисы, которые принимают PKG и отдают ZIP, существуют, но у них есть существенные ограничения. Во-первых, установочные пакеты часто весят сотни мегабайт или гигабайты, а бесплатные онлайн-конвертеры ограничивают размер загрузки. Во-вторых, вы передаёте файл на чужой сервер, что неприемлемо для конфиденциального ПО или корпоративных инсталляторов.
Если файл небольшой и не содержит чувствительных данных, схема проста: загружаете PKG на страницу сервиса, выбираете целевой формат ZIP, дожидаетесь обработки и скачиваете результат. Перед использованием проверьте, что сервис действительно поддерживает xar-пакеты, а не просто переименовывает файл.
⚠️ Внимание: не загружайте в онлайн-конвертеры установщики с лицензионными ключами, корпоративными сертификатами или персональными данными. Для таких файлов используйте только локальные способы — pkgutil или архиватор.
Сравнение способов конвертации
Выбор метода зависит от вашей платформы, размера файла и того, насколько глубоко нужно разобрать пакет. Сводная таблица поможет определиться:
| Способ | Платформа | Сложность | Ограничения |
|---|---|---|---|
| pkgutil --expand-full | macOS | Низкая | Требует Терминал |
| 7-Zip | Windows | Средняя | Многослойная распаковка вручную |
| Keka / The Unarchiver | macOS | Низкая | Нужна установка программы |
| Онлайн-конвертер | Любая | Низкая | Лимит размера, риски приватности |
На Mac оптимален pkgutil: он штатный, быстрый и корректно обрабатывает все слои пакета. На Windows без альтернатив остаётся 7-Zip — просто будьте готовы открыть архив два-три раза подряд, пока не доберётесь до файлов.
Типичные проблемы и их решения
Самая частая жалоба — «архиватор не открывает PKG». Возможная причина: файл повреждён при скачивании. Проверьте его размер и, если известна контрольная сумма от источника, сверьте её. На Mac это делается командой shasum -a 256 файл.pkg. Несовпадение суммы означает, что пакет нужно скачать заново.
Вторая ситуация — после распаковки видны только служебные файлы, а самой программы нет. Это значит, что вы развернули внешний слой, но не Payload. Найдите в результате файл с именем Payload (без расширения) и распакуйте его как архив — именно там лежат данные.
- 🔍 Ошибка «не удаётся открыть» — проверьте целостность файла через контрольную сумму
- 📄 Видны только Scripts и PackageInfo — распакуйте вложенный Payload отдельно
- 🔒 pkgutil сообщает о проблемах с подписью — используйте
--expand-full, он не проверяет подпись при распаковке - 💾 Не хватает места — развёрнутый пакет может занимать заметно больше исходного PKG
Что находится внутри PKG-файла
Помимо Payload с данными, в пакете лежат: PackageInfo (манифест с метаданными), Bom (список файлов с правами доступа), Scripts (скрипты preinstall/postinstall), а иногда Resources с локализациями и изображениями установщика. Для извлечения программы нужен только Payload.
Когда распаковка PKG действительно нужна
Извлечение содержимого установщика оправдано в нескольких сценариях: анализ пакета перед установкой (проверка, какие файлы и куда будут записаны), извлечение драйвера или отдельного компонента без полной инсталляции, восстановление файлов из старого установщика, когда разработчик прекратил поддержку. Также распаковку используют системные администраторы при подготовке пакетов к развёртыванию.
Если же ваша цель — просто установить программу, распаковывать ничего не нужно: дважды кликните по PKG и следуйте штатному мастеру установки macOS. Конвертация в ZIP имеет смысл только для доступа к внутренностям пакета или передачи его содержимого в удобном виде.
Часто задаваемые вопросы
Можно ли просто переименовать .pkg в .zip?
Нет. PKG построен на формате xar, а ZIP — это отдельный формат архивации. Переименование не меняет внутреннюю структуру файла, и архиватор не сможет его открыть. Нужна именно распаковка с последующим сжатием содержимого в ZIP.
Как открыть PKG на Windows?
Установите бесплатный 7-Zip, кликните по файлу правой кнопкой и выберите «Открыть архив». Внутри найдите Payload и извлеките его — возможно, придётся открыть вложенные слои gzip и cpio по очереди, пока не появятся обычные файлы.
Запустится ли программа, извлечённая из PKG вручную?
Не гарантированно. Распаковка не выполняет установочные скрипты, не создаёт необходимые связи и не выставляет права так, как это делает установщик. Приложение может запуститься, а может потребовать полноценной установки.
Чем посмотреть содержимое PKG без распаковки?
На Mac выполните в Терминале команду pkgutil --payload-files путь_к_файлу.pkg — она выведет полный список файлов внутри пакета, ничего не извлекая на диск.
Безопасно ли загружать PKG в онлайн-конвертер?
Для публичных установщиков без чувствительных данных — допустимо, если размер файла укладывается в лимиты сервиса. Для корпоративных пакетов, инсталляторов с сертификатами или лицензионными данными используйте только локальные инструменты: pkgutil, Keka или 7-Zip.