Папка Packages в macOS¶
Packages — служебная папка в файловой системе macOS (и iOS), расположенная в корне системного тома /System/Library/ или в корне пользовательского домена, в которой операционная система хранит установленные пакеты программного обеспечения в формате .pkg. Папка является частью механизма управления пакетами Apple (Apple Installer / BOM), позволяющего отслеживать, какие файлы какого программного обеспечения были установлены в систему, и обеспечивать корректное удаление или обновление приложений.
¶Назначение
Папка Packages выполняет две основные функции:
- Учёт установленных пакетов. Каждый установщик macOS, запускаемый через Installer.app, формирует список всех файлов, которые он размещает в системе, и сохраняет эту информацию в виде пакета (
.pkgили метаданных в/var/db/receipts/). - Обеспечение обратимости установки. Благодаря сохранённым данным система может корректно удалять программное обеспечение, обновлять его до новых версий и разрешать конфликты между пакетами.
¶Расположение и структура
В разных версиях macOS папка Packages может находиться в нескольких местах:
| Путь | Назначение |
|---|---|
/System/Library/ | Системные пакеты, поставляемые вместе с ОС |
/Library/ | Пакеты, установленные администратором для всех пользователей |
~/Library/ | Пакеты, установленные отдельным пользователем |
Внутри папки хранятся файлы с расширениями .pkg, .mpkg, а также служебные файлы в формате BOM (Bill of Materials) и расписания установки (.plist), которые описывают содержимое каждого пакета.
¶Связь с Installer.app
Installer.app — стандартное приложение macOS для установки программного обеспечения. При запуске .pkg-файла Installer:
- Распаковывает содержимое пакета во временную папку.
- Проверяет цифровую подпись и целостность файлов.
- Копирует файлы в целевые каталоги.
- Записывает информацию об установленных файлах в папку Packages и
/var/db/receipts/.
Команда pkgutil --pkgs в терминале позволяет получить список всех зарегистрированных пакетов, а pkgutil --files <package-id> — перечень файлов, входящих в конкретный пакет.
¶Удаление пакетов
Стандартный способ удаления программного обеспечения в macOS — перемещение приложения в Корзину. Однако для пакетов, установленных через Installer, этого недостаточно, так как остаются служебные файлы. Полное удаление выполняется командами:
sudo pkgutil --forget <package-id>— удаляет запись о пакете из системы.- Ручное удаление файлов, перечисленных в выводе
pkgutil --files.
¶Роль в обновлениях системы
При обновлении macOS через Мастер обновления (Software Update) система загружает пакеты обновлений, устанавливает их и обновляет содержимое папки Packages. Это позволяет откатывать обновления при сбоях и восстанавливать целостность системных компонентов.
¶Особенности в iOS
В iOS папка Packages аналогична macOS, но доступ к ней ограничен из-за песочницы (sandbox) приложений. Системные пакеты в iOS хранятся в зашифрованном виде, и прямой доступ к ним возможен только на устройствах с разрешённой загрузкой (jailbreak).
¶Интересные факты
- Идентификаторы пакетов в macOS часто начинаются с
com.apple., что указывает на принадлежность к системным компонентам. - Папка Packages тесно связана с технологией Apple Silicon, где обновления системы поставляются в виде пакетов с подписью Apple.
- В macOS Big Sur и новее системные пакеты хранятся в защищённом системном томе (System Volume), что делает их неизменяемыми для пользователя.
¶Источники
- Apple Developer Documentation — Installer Packages
- Apple Support — About macOS Installer
man pkgutil— macOS Manual Pages
