Skip to main content

Добавление Apple песочницы в macOS добавило в операционную систему предопределенные папки приложений. Вот как удалить некоторые из тех папок, которые вам, вероятно, не нужны, и вернуть место на диске.

Более десяти лет назад Apple представила песочницу в macOS. Песочница — это, по сути, мера безопасности, которая ограничивает доступ приложения к частям файловой системы macOS.

Когда разработчики создают приложения с помощью Apple Xcode для macOS, они могут устанавливать разрешения песочницы для каждого приложения, изменяя настройки в Xcode.

В зависимости от уровней разрешений, установленных в настройках целевой сборки проекта Xcode, приложение, созданное с помощью Xcode, может получить доступ ко всей файловой системе, только к определенным определенным файлам и папкам, к сети или ни к чему.

Файл проекта Xcode.

Цели в Xcode

Цель Xcode — это просто определенный набор значений внутри проекта Xcode, представляющий одну часть программного обеспечения, которую необходимо создать. Проект Xcode может иметь одну или несколько целей.

Цель Xcode – в данном случае с именем

Цель Xcode — в данном случае с именем «TestApp1».

Некоторые цели пусты и содержат только правила построения других целей. Вы можете добавить новые цели в проект Xcode, выбрав «Создать», а затем «Цель» в меню «Файл» Xcode в строке меню.

Если затем вы нажмете «Другое» на новом листе целевого шаблона в Xcode, вы увидите две возможные метацели: агрегатную и внешнюю систему сборки. Выбор Aggregate создает новую цель для построения всех остальных существующих целей в проекте Xcode.

Создание цели Aggregate в Xcode.

Создание цели Aggregate в Xcode.

Права на песочницу

При создании приложения macOS Xcode сохраняет эти настройки, называемые правами, в файле внутри пакета приложения с расширением «.entitlements». Вы можете открыть файл .entitlements в Xcode и просмотреть его настройки в виде иерархического списка с полями, которые вы можете щелкнуть, или вы можете просмотреть файл .entitlements в любом текстовом редакторе, чтобы отобразить его содержимое в виде XML-файла.

Содержимое файлов .entitlements хранится в виде пар «ключ-значение», которые представляют настройки (ключи) и каждое из их значений.

Пакет — это просто специальная папка с установленными маркерами, поэтому macOS знает, что она содержит код, ресурсы или файлы, которые будут использоваться во время выполнения. Большинство приложений Mac представляют собой пакеты, как и многие платформы кода.

Вы можете нажать любой пакет в MacOS Finder, удерживая клавишу Control, и выбрать «Показать содержимое пакета» во всплывающем меню, чтобы открыть его как папку.

Файл прав.

Файл прав.

Вы также можете создавать приложения macOS вообще без какой-либо изолированной программной среды, отключив переключатель целевой изолированной программной среды в настройках проекта Xcode на вкладке «Настройки сборки» или отредактировав файл «Разрешения» напрямую.

Некоторая дополнительная информация об изолированной программной среде приложения хранится в другом файле Info.plist внутри пакета приложения во время сборки. Файл с расширением «.plist» представляет собой файл списка свойств, который также представляет собой просто XML-файл, заполненный настройками или свойствами приложения, и их соответствующими значениями.

Включение или выключение песочницы в Xcode.

Включение или выключение песочницы в Xcode.

Когда вы создаете приложение в Xcode, оно генерирует файл Info.plist из настроек проекта, а затем сохраняет этот файл в пакете вашего созданного приложения. Он также копирует файл .entitlements в пакет приложения.

Когда вы запускаете приложение macOS в Finder, macOS считывает файлы Info.plist и .entitlements, чтобы определить, как запустить приложение и какие разрешения оно имеет.

Контейнеры-песочницы

Теперь, когда вы знаете, как работает «песочница» на уровне приложения в macOS, пришло время поговорить о контейнерах.

Поскольку идея песочницы заключается в ограничении доступа к частям файловой системы macOS, Apple также создала новую системную папку в папке пользователя /Library на Mac под названием «Контейнеры». Когда запускается изолированное приложение, macOS автоматически создает папку для конкретного приложения внутри папки ~/Library/Containers для этого приложения.

Папка пользователя обычно обозначается в UNIX знаком «~».

В папке ~/Library/ также есть папка «ContainerManager», которую не следует трогать — она используется macOS для управления папкой «Контейнеры». Изменение папки ContainerManager может привести к неопределенному поведению или потере данных на вашем Mac.

Каждая папка внутри ~/Library/Containers представляет собой папку, предназначенную для использования только одним приложением. Если приложение было создано с включенной песочницей, оно может хранить все свои данные внутри своей папки в каталоге ~/Library/Containers.

Каждая папка-контейнер приложения обычно содержит файл .plist и папку «Данные».

Папка ~/Library/Containers — внутри нее находится папка для каждого приложения.

Папка ~/Library/Containers — внутри нее находится папка для каждого приложения.

Контейнеры раздуваются

Со временем, когда приложение работает, папки-контейнеры могут вырасти до довольно большого размера. Если вы больше не используете определенное приложение, вы можете безопасно удалить папку его приложения в папке «Контейнеры».

Но в целом вам не следует удалять какие-либо папки приложений-контейнеров для программного обеспечения Apple, если только они не принадлежат дополнительному приложению Apple, которое вы никогда не будете использовать. Например, GarageBand, Logic или Final Cut Pro.

Вы можете просмотреть размер всех папок контейнеров приложений в каталоге «Контейнеры», щелкнув метку столбца заголовка «Размер» в верхней части окна «Контейнеры». При повторном нажатии на метку заголовка «Размер» папки приложения-контейнера будут отсортированы по размеру в порядке убывания — от большего к меньшему.

Определив, какие приложения вы не используете и какие папки-контейнеры приложений вам больше не нужны, вы можете удалить их со своего Mac, переместив их в корзину, а затем выбрав Finder, а затем «Очистить корзину» в строке меню.

Это может освободить изрядное количество дискового пространства, если вы используете много приложений или приложений, хранящих много данных.

Имейте в виду, что как только вы удалите папку-контейнер приложения, все данные, хранящиеся в этом приложении, могут исчезнуть с вашего Mac. Если вы переустановите и повторно запустите приложение, вы начнете с чистого листа.

Возможно, вы захотите создать резервную копию всех папок контейнеров приложений, которые вы собираетесь удалить в первую очередь, чтобы при необходимости восстановить их позже.

Вся папка ~/Library/Containers через некоторое время может вырасти до нескольких гигабайт, поэтому периодическое удаление папок-контейнеров приложений может освободить немного дискового пространства.

Вам необходимо периодически проверять папку «Контейнеры» и удалять все ненужные папки-контейнеры приложений.