Что такое формат файла PKG?
Расширение .pkg используется, помимо прочего, в операционной системе macOS, разработанной Apple. Файлы .pkg содержат пакеты сжатых файлов установщика во внутреннем формате XAR, целью которых является установка приложения на компьютеры Mac. Файлы .pkg на самом деле представляют собой архивы XAR с другим расширением и строго определенной иерархией файлов: оглавление в XML, сжатая полезная нагрузка CPIO с файлами приложения и дополнительные сценарии установки.
Целью проекта XAR является создание легко расширяемого архивного формата, что делает .pkg гибким средством доставки программного обеспечения для macOS. При разработке формата .pkg основной целью было создание механизма, облегчающего работу в процессе установки - и этот приоритет был достигнут. Установка и обновление с использованием файлов .pkg могут быть легко выполнены через встроенное приложение macOS Installer или команду installer в Terminal. Установка программного обеспечения может выполняться индивидуально или вместе с пред- или постустановочным скриптом, отвечающим за такой процесс.
Текущий плоский формат .pkg был представлен в Mac OS X 10.5 Leopard (2007). Современные пакеты должны быть подписаны сертификатом Apple Developer и нотариально заверены для распространения за пределами Mac App Store.
Файлы .pkg в настоящее время используются следующим образом:
- в качестве установочных пакетов в системах Apple - как на компьютерах под управлением macOS, так и на iPhone (распространяются через MDM или Apple Configurator)
- компанией Sony для установки программного обеспечения и приложений на консоли PlayStation 3, PlayStation 4 и PlayStation 5
- исторически в системах Symbian для хранения конфигурационной информации внутри установочных пакетов
Связанные форматы включают образы дисков .DMG, используемые для распространения приложений, мета-пакеты .MPKG, объединяющие несколько установщиков .pkg, и подписанные архивы .XIP, используемые Xcode.
Безопасность и защита
РИСК: MEDIUMПакет macOS .pkg может запускать сценарии preinstall/postinstall с повышенными привилегиями, поэтому он более опасен, чем приложение, устанавливаемое перетаскиванием в Applications - вредоносное и рекламное ПО часто распространялось в виде установщиков .pkg. Запускайте пакеты только из доверенных источников; macOS Gatekeeper предупреждает о неподписанных/ненотариально заверенных пакетах, и к этому следует прислушаться. Проверяйте все сомнительное с помощью Suspicious Package (он показывает скрипты и подписавшую сторону) перед установкой.
Детали формата
в двух словах- PlayStation Package - Зашифрованный пакет игры/DLC/обновления для конкретной консоли PS3/PS4/PS5/Vita; устанавливается только на соответствующую консоль, а не на компьютер.
- Symbian Installer Script (.pkg) - Устаревший текстовый скрипт сборки, использовавшийся старым упаковщиком Symbian/Nokia SIS.
- Apple Newton Package - Редкий, устаревший формат пакетов для прекращенной платформы Apple Newton (старое название базы данных для этого расширения).
Программы, открывающие файлы PKG
Технические подробности
глубокая спецификация| Внутренний формат | Бинарный архив XAR (eXtensible ARchive) |
| Магические байты | `78 61 72 21` (`xar!`) со смещением 0; идентифицирует современный плоский пакет - старые пакеты-бандлы представляют собой каталоги без единой сигнатуры файла |
| MIME-тип | `application/x-xar` |
| Оглавление (TOC) | Документ XML, хранящийся в несжатом виде внутри заголовка XAR, индексирующий контрольную сумму каждого файла, метод сжатия и метаданные |
| Формат полезной нагрузки | Архив CPIO, сжатый с помощью gzip, bzip2 или lzma внутри контейнера XAR |
| Ведомость материалов (BOM) | Файл `Bom` внутри пакета, содержащий список установленных путей, владельцев файлов, прав доступа и размеров |
| Сценарии установки | Шелл-скрипты `preinstall` и `postinstall`, выполняемые от имени root до и после установки полезной нагрузки |
| Подпись кода | Подписано сертификатом Apple Developer ID Installer; подпись проверяется macOS Gatekeeper при запуске |
| Нотариальное заверение | Требуется нотариальное заверение Apple для пакетов, распространяемых за пределами Mac App Store в macOS 10.15 и более поздних версиях |
| Варианты пакетов | Плоский `.pkg` - это один файл XAR; устаревший пакет-бандл `.pkg` (до 10.5) - это структура каталогов; оба имеют одинаковое расширение |
| Установка из командной строки | `sudo installer -pkg file.pkg -target /` |
| Извлечение без установки | `xar -xf file.pkg` распаковывает архив в текущий каталог без запуска сценариев установки |
| Distribution XML | Необязательный файл `Distribution` в корне архива продукта управляет установкой с несколькими вариантами выбора или несколькими пакетами с помощью встроенной логики JavaScript |
| Компонентный архив против архива продукта | `.pkg` может быть простым компонентным пакетом или архивом продукта, объединяющим несколько компонентных пакетов в один установщик |
| Выпущен | macOS flat .pkg (XAR-based) since Mac OS X 10.5 Leopard (2007); earlier bundle .pkg since NeXTSTEP/Mac OS X 10.0 |
| Открыть стандартное | Да · без роялти |
| Спецификация | github.com |
Конвертации PKG
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PKG.