
Přidání Sandboxingu do macOS přidalo do operačního systému předdefinované složky aplikací. Zde je návod, jak odstranit některé z těch složek, které pravděpodobně nepotřebujete, a získat zpět místo na disku.
Před více než deseti lety Apple představil sandboxing pro macOS. Sandboxing je v podstatě bezpečnostní opatření, které omezuje, ke kterým částem souborového systému macOS má aplikace přístup.
Když vývojáři vytvářejí aplikace s Xcode od Apple pro macOS, mohou pro každou aplikaci nastavit oprávnění sandbox změnou nastavení v Xcode.
V závislosti na úrovních oprávnění nastavených v projektu Xcode cílová sestavení, aplikace vytvořená pomocí Xcode může přistupovat k celému systému souborů, pouze k určitým definovaným souborům a složkám, k síti nebo k ničemu.
Cíle v Xcode
Xcode cílová je jednoduše definovaná sada hodnot uvnitř projektu Xcode představující jeden kus softwaru, který má být vytvořen. Projekt Xcode může mít jeden nebo více cílů.
Cíl Xcode – v tomto případě s názvem „TestApp1“.
Některé cíle jsou prázdné a obsahují pouze pravidla pro stavbu dalších cílů. Do projektu Xcode můžete přidat nové cíle výběrem Nový pak cílová od Xcode’s Soubor menu v liště menu.
Pokud pak kliknete na jiný v novém listu cílové šablony v Xcode uvidíte dva možné metacíle: Agregát a Externí sestavovací systém. Výběr Agregát vytvoří nový cíl pro sestavení všech ostatních existujících cílů v projektu Xcode.
Vytvoření cíle Aggregate v Xcode.
Sandbox Entitlements
Když je vytvořena aplikace pro macOS, Xcode ukládá tato nastavení, tzv nároky v souboru uvnitř aplikace svazek s příponou „.nároky“. Soubor .entitlements můžete otevřít v Xcode a zobrazit jeho nastavení jako hierarchický seznam s poli, na která můžete kliknout – nebo si můžete soubor .entitlements prohlédnout v libovolném textovém editoru a zobrazit jeho obsah jako soubor XML.
Obsah souborů .entitlements je uložen jako páry klíč-hodnota, které představují nastavení (klíče) a každou z jejich hodnot.
Balíček je pouze speciální složka se značkami nastavenými tak, aby macOS věděl, že obsahuje kód, prostředky nebo soubory, které lze použít za běhu. Většina aplikací pro Mac jsou balíčky, stejně jako mnoho rámců kódu.
Můžete kliknout se stisknutou klávesou Ctrl na libovolný balíček v macOS Finder a vybrat Zobrazit obsah balení z vyskakovací nabídky jej otevřete jako složku.
Soubor Entitlements.
Stále můžete také vytvářet aplikace pro macOS bez jakéhokoli sandboxingu tím, že vypnete přepínač sandboxing cíle v nastavení projektu Xcode pod Nastavení sestavení nebo přímou úpravou souboru Entitlements.
Některé další informace o karanténě aplikace jsou uloženy v jiném souboru s názvem Info.plist uvnitř balíčku aplikace v době sestavení. Soubor s příponou „.plist“ je a seznam nemovitostí soubor – což je také pouze soubor XML naplněný nastaveními aplikace nebo vlastnostmi – a jejich odpovídajícími hodnotami.
Zapnutí nebo vypnutí sandboxingu v Xcode.
Když vytvoříte aplikaci v Xcode, vygeneruje soubor Info.plist z nastavení projektu a poté uloží soubor do balíčku vaší sestavené aplikace. Zkopíruje také soubor .entitlements do balíčku aplikace.
Když spustíte aplikaci pro macOS ve Finderu, macOS načte soubory Info.plist a .entitlements, aby zjistil, jak aplikaci spustit a jaká má oprávnění.
Sandbox kontejnery
Nyní, když víte, jak funguje sandboxing na úrovni aplikace v macOS, je čas mluvit o kontejnerech.
Protože myšlenkou sandboxingu je omezit, k jakým částem aplikací souborového systému macOS mají přístup, Apple také vytvořil novou systémovou složku ve složce /Library uživatele na Macu s názvem Kontejnery. Když se spustí aplikace v sandboxu, macOS tiše vytvoří složku specifickou pro aplikaci ve složce ~/Library/Containers pro danou aplikaci.
Složka uživatele je v UNIXu obvykle označena znakem ‚~‘.
Ve složce ~/Library/ je také složka „ContainerManager“, které byste se neměli dotýkat – používá ji systém macOS ke správě složky Containers. Změna složky ContainerManager může způsobit nedefinované chování nebo způsobit ztrátu dat na vašem Macu.
Každá složka uvnitř ~/Library/Containers je složka určená pouze pro použití jedné aplikace. Pokud byla aplikace vytvořena se zapnutým sandboxingem, může ukládat všechna svá vlastní data do své složky v adresáři ~/Library/Containers.
Každá složka kontejneru aplikace obvykle obsahuje soubor .plist a složku „Data“.
Složka ~/Library/Containers – se složkou pro každou aplikaci uvnitř.
Nádoby nadýmají
Postupem času, jak je aplikace spuštěna, mohou složky kontejneru narůst do poměrně velké velikosti. Pokud určitou aplikaci již nepoužíváte, můžete bezpečně odstranit její složku aplikace ve složce Kontejnery.
Obecně však platí, že byste neměli mazat žádné složky kontejnerových aplikací pro Apple Software – pokud nepatří k další aplikaci Apple, kterou nikdy nebudete používat. Například GarageBand, Logic nebo Final Cut Pro.
Velikost všech složek kontejneru aplikací v adresáři Containers můžete zobrazit kliknutím na Velikost popisek sloupce záhlaví v horní části okna Kontejnery. Kliknutím na Velikost štítek záhlaví podruhé seřadí složky kontejnerových aplikací podle velikosti v sestupném pořadí – od největší po nejmenší.
Jakmile zjistíte, které aplikace nepoužíváte a které složky kontejneru aplikací již nepotřebujete, můžete je z Macu odebrat tak, že je přesunete do koše a poté vyberete Nálezce pak Prázdný koš z panelu nabídek.
To může uvolnit značné množství místa na disku, pokud používáte mnoho aplikací nebo aplikací, které ukládají velké množství dat.
Uvědomte si, že jakmile smažete složku kontejneru aplikace, všechna data uložená pro danou aplikaci mohou být z vašeho Macu pryč. Pokud aplikaci přeinstalujete a znovu spustíte, začnete s čistým štítem.
Možná budete chtít zálohovat všechny složky kontejneru aplikací, které chcete nejprve odstranit, abyste je mohli později v případě potřeby obnovit.
Celá složka ~/Library/Containers se může po chvíli zvětšit na několik gigabajtů – takže pravidelné mazání složek kontejneru aplikací může uvolnit trochu místa na disku.
Složku Kontejnery budete chtít pravidelně kontrolovat a odstranit všechny složky kontejnerů aplikací, které nepotřebujete.
Zdroj: appleinsider.com