Spuštěno
launchd je open source init systém macOS vytvořený jako náhrada za SysVinit a SystemStarter . Spuštěný proces má PID 1 a je zodpovědný za spouštění dalších procesů a jejich restart, pokud selže, tj. provádí init funkce (v novějších verzích Linux systemd ). Nahrazuje také cron . Procesy, které běží po spuštění systému před přihlášením, se zapisují do adresáře /Library/LaunchDaemons. Procesy, které se spouštějí po přihlášení, jsou umístěny v adresáři /Library/LaunchAgents. V těchto adresářích se vytvářejí soubory s obsahem xml, které řídí spouštění procesů. Byly pokusy o port spuštěn na FreeBSD a odvozené systémy.
Komponenty
V launchd jsou dva hlavní programy: launchd a launchctl.
launchd spravuje démony na systémové i uživatelské úrovni. Stejně jako xinetd může launchd spouštět démony na vyžádání. Stejně jako watchdogd může launchd monitorovat démony, aby se ujistil, že stále běží.
launchctl je aplikace příkazového řádku, která přistupuje k launchd pomocí IPC a ví, jak analyzovat soubory používané k popisu úloh ke spuštění a serializovat je pomocí specializovaného slovníkového protokolu, kterému launchd rozumí. launchctl lze použít k načítání a uvolňování démonů, spouštění a zastavování spouštěných monitorovaných úloh, získávání statistik využití systému pro spouštěné a jeho podřízené procesy a konfiguraci nastavení prostředí.
spuštěno
launchd má dva hlavní úkoly. Prvním je zavedení systému a druhým načtení a údržba služeb. Zde je zjednodušený pohled na provoz systému Mac OS X Tiger na PowerPC .
- Open Firmware se aktivuje, inicializuje hardware a poté načte BootX.
- BootX zavede jádro a nahraje všechna potřebná rozšíření jádra (kexty).
- Spustilo se načítání jádra. launchd spouští různé skripty, které skenují složku LaunchDaemons voláním launchctl k inicializaci démonů. Poté launchd spustí přihlašovací okno.
- Spouštěcí skripty hledají v několika různých adresářích pro spouštění úloh. Kontrolují se dva různé adresáře: Adresáře LaunchDaemons obsahují položky, které budou spuštěny jako root, obvykle procesy na pozadí. Adresáře LaunchAgents obsahují úlohy, nazývané aplikace agentů, které poběží jako uživatel nebo v kontextu uživatelského prostoru. Mohou to být skripty nebo jiné prvky popředí a mohou dokonce obsahovat uživatelské rozhraní. Všechny tyto adresáře jsou uloženy v typických adresářích knihovny macOS.
launchd se velmi liší od SystemStarter v tom, že nemusí spustit všechny démony při bootování. Klíčem ke spuštění, stejně jako xinetd, je spouštění démonů na vyžádání. Když launchctl vypíše úlohy při spouštění, požádá launchd, aby rezervoval a naslouchal na všech portech požadovaných těmito úlohami. Pokud je to specifikováno v listu pomocí klávesy "OnDemand", není démon aktuálně načten. Launchd spíše naslouchá na portu, spustí démona, když je potřeba, a vypne ho, když už není potřeba. Jakmile je démon načten, launchd jej bude sledovat a v případě potřeby se ujistí, že běží. Tímto způsobem je podobný watchdogd a sdílí požadavek watchdogd, aby se procesy nepokoušely rozvětvovat nebo démonizovat. Pokud proces přejde na pozadí, launchd jej ztratí a pokusí se jej restartovat. Mac OS X Tiger se proto načítá mnohem rychleji než předchozí verze. Systém zaregistruje pouze démony, které by měly být spuštěny, a ve skutečnosti je nespustí, dokud nejsou potřeba. Ve skutečnosti je ukazatel průběhu, který se objeví během načítání, jen placebo jménem WaitingForLoginWindow [1] , které ve skutečnosti neukazuje nic jiného než čas. Nejobtížnější součástí správy během spouštění jsou závislosti. SystemStarter má velmi jednoduchý systém závislostí, který používá klíče Uses, Requires a Provides v seznamu položek po spuštění. Při vytváření závislostí pro spuštění na Tigeru existují dvě hlavní strategie: IPC umožňuje démonům hovořit mezi sebou, aby zjistili závislosti, nebo se démoni mohou dívat na soubory nebo měnit cesty. SystemStarter byl stále podporován před OS X Mountain Lion , ale byl odstraněn v OS X Yosemite .
launchctl
V launchd je správa služeb centralizovaná v aplikaci launchctl. Launchctl může sám o sobě přijímat příkazy z příkazového řádku, ze standardního vstupu nebo spouštět interaktivně. S oprávněními superuživatele lze launchctl použít k provádění globálních změn. launchctl komunikuje s launchd prostřednictvím mechanismu IPC specifického
pro Mach .
Seznam vlastností
Seznam vlastností (plist) je typ souboru, který launchd používá ke konfiguraci programu. Když launchd prohledá složku nebo je úloha odeslána pomocí launchctl, přečte soubor plist, který popisuje, jak by měl být program spuštěn.
Seznam běžně používaných kláves je uveden níže. Všechny klíče jsou volitelné, pokud není uvedeno jinak. Úplný seznam najdete na manuálové stránce Apple launchd.plist [2] .
Klíče
|
Typ
|
Poznámka
|
Label
|
Čára
|
Pracovní pozice. Podle konvence je označení úlohy stejné jako název souboru plist, bez přípony .plist. Požadované.
|
Program
|
Čára
|
Cesta ke spustitelnému souboru. Užitečné pro jednoduché spouštění. Je vyžadován alespoň jeden klíč Program nebo ProgramArguments.
|
ProgramArguments
|
Pole strun
|
Pole řetězců představujících příkaz UNIX. První řádek je obvykle cesta ke spustitelnému souboru, zatímco poslední řádky obsahují možnosti nebo parametry. Je vyžadován alespoň jeden klíč Program nebo ProgramArguments.
|
UserName
|
čára
(výchozí root nebo aktuální uživatel)
|
Úloha bude spuštěna jako daný uživatel, což může nebo nemusí být uživatel, který ji odeslal ke spuštění.
|
OnDemand
(Zastaralé od 10.5)
|
logický
(výchozí ANO)
|
Zastaralé od 10.5 s výkonnější možností KeepAlive. Booleovský příznak, který určuje, zda úloha běží nepřetržitě nebo ne.
|
RunAtLoad
|
logický
(výchozí NE)
|
Booleovský příznak, který určuje, zda je úloha spuštěna ihned po načtení úlohy do spuštění.
|
StartOnMount
|
logický
(výchozí NE)
|
Booleovský příznak, který určuje, zda se úloha spustí při připojení nového systému souborů.
|
QueueDirectories
|
Pole strun
|
Hledá v adresáři nové soubory. Adresář musí být na začátku prázdný a musí se vrátit do prázdného stavu, než QueueDirectories znovu spustí svou úlohu.
|
WatchPaths
|
Pole strun
|
Vyhledá změny v cestě systému souborů. Může to být soubor nebo složka.
|
StartInterval
|
celé číslo
|
Naplánuje spuštění úlohy podle opakujícího se plánu. Určuje počet sekund čekání mezi spuštěními.
|
StartCalendarInterval
|
Slovník celých čísel
nebo
Pole celočíselných slovníků
|
Plánování práce. Syntaxe je podobná Cron
|
RootDirectory
|
Čára
|
Úloha bude před spuštěním umístěna do tohoto adresáře.
|
WorkingDirectory
|
Čára
|
Úloha bude před provedením přenesena do tohoto adresáře.
|
StandardInPath..
StandardOutPath_
StandardErrorPath
|
Čára
|
Klíče pro specifikaci vstupních a výstupních souborů pro běžící proces.
|
LowPriorityIO
|
logický
|
Říká jádru, že tato úloha má nízkou prioritu pro I/O souborového systému.
|
AbandonProcessGroup
|
logický
(výchozí NE)
|
Booleovský příznak, který určuje, zda podprocesy spuštěné z úlohy spuštěné příkazem launchd budou po skončení úlohy ukončeny. Užitečné, když krátkodobý úkol spustí dlouhodobý dílčí úkol, ale může vést k zombie procesům.
|
SessionCreate
|
logický
(výchozí NE)
|
Booleovský příznak, který určuje, zda bude pro úlohu a její podprocesy vytvořena relace zabezpečení.
|
Zásuvky
Název každého klíče v sekci Sockets bude umístěn do prostředí úlohy při jejím spuštění a deskriptor souboru tohoto soketu bude dostupný v dané proměnné prostředí. To se liší od aktivace soketu systemd v tom, že název definice soketu v konfiguraci úlohy je pevně zakódován do aplikace. Tento protokol je méně flexibilní, i když stejně jako systemd nevyžaduje, aby démon napevno zakódoval počáteční deskriptor souboru (3 [3] od roku 2014 ).
Historie
Software navrhl a napsal Dave Zarzhitsky ve společnosti Apple . Společnost plánovala nahradit všechny následující v prostředí macOS -
Většina z těchto věcí byla vypuštěna, když byl spuštěn s Mac OS X v10.4 (Tiger).
V roce 2005 R. Tyler Croy odložil spuštění FreeBSD v rámci projektu Google Summer of Code. Nelze jej spustit jako PID 1 (pouze inicializace relace) a na této platformě se běžně nepoužívá. [čtyři]
V roce 2006 se uvažovalo o distribuci Linuxu Ubuntu pomocí launchd. Tato možnost byla zamítnuta, protože zdrojový kód byl pod Apple Public License – popisován jako „nevyhnutelný licenční problém“ [5] . Místo toho vývojáři Ubuntu vyvinuli a přešli na svůj vlastní nástroj pro správu služeb Upstart .
V srpnu 2006 Apple znovu uvedl na trh pod licencí Apache verze 2.0, aby usnadnil přijetí jinými open source vývojáři [6] . Většina distribucí Linuxu používá systemd nebo Upstart nebo nadále používá Init a systémy podobné BSD také nadále používají Init .
V prosinci 2013 R. Tyler Croy oznámil svůj záměr obnovit práci na své verzi spuštěné pro FreeBSD a jeho „openlaunchd“ úložiště Github se následně stalo aktivním [7] .
V roce 2014, počínaje OS X 10.10 a iOS 8 , Apple přesunul kód tak, aby běžel do uzavřeného zdroje libxpc [8]
.
V srpnu 2015 Jordan Hubbard a Kip Macy oznámili spuštění NextBSD , které je založeno na jádře FreeBSD-CURRENT a přidali do Mach IPC, Libdispatch, notifyd, asld, launchd a další komponenty odvozené z Darwinu , které se skládá z open source pro macOS . .
spuštěna historie vydání
Viz také
Odkazy
Poznámky
- ↑ http://daringfireball.net/misc/2005/04/tiger_details#waitingforloginwindow Archivováno 23. dubna 2007 na Wayback Machine Daring Fireball: Tiger Details
- ↑ Manuální stránka Mac OS X pro launchd.plist(5) . Získáno 15. prosince 2019. Archivováno z originálu dne 26. srpna 2009. (neurčitý)
- ↑ malý-velký-h. node-launchd . Získáno 10. dubna 2014. Archivováno z originálu 13. dubna 2014. (neurčitý)
- ↑ Spuštěno . Wiki FreeBSD . Získáno 8. prosince 2013. Archivováno z originálu 14. prosince 2013. (neurčitý)
- ↑ ReplacementInit . UbuntuWiki. Získáno 2. července 2007. Archivováno z originálu dne 4. června 2011. (neurčitý)
- ↑ Prabhakar, Ernest Apple se otevírá: jádro, Mac OS Forge, iCal Server, Bonjour, spuštěno (stahování) (7. srpna 2006). Získáno 2. července 2007. Archivováno z originálu dne 20. srpna 2011. (neurčitý)
- ↑ Croy, R Tyler Nejdrsnější vousy na krk nebo FreeBSD na mém Thinkpadu X200 . neetický blogger.com . Získáno 8. prosince 2013. Archivováno z originálu 13. prosince 2013. (neurčitý)
- ↑ Levin, Jonathan spuštěn – k vašim službám! (PDF) 32 (2014). - "... 10.10: přesunuto na libxpc 559 (560 v iOS 8) - Zdroj zatím není k dispozici - a možná nikdy nebude - Libxpc je uzavřený zdrojový projekt ...". Získáno 3. září 2016. Archivováno z originálu 7. února 2016. (neurčitý)
- ↑ spustil licenční soubor 106 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.4 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ Mac OS X 10.4.1 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spuštěn licenční soubor 106.3 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.4.2 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.3 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ Mac OS X 10.4.4.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 17. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.5.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spuštěn licenční soubor 106.10 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.4.4.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.5.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ spuštěn licenční soubor 106.13 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.4.6.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 10. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.6.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spuštěn licenční soubor 106.14 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.4.7.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.7.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ Mac OS X 10.4.8.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.9.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ Mac OS X 10.4.10.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.11.ppc – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spuštěn licenční soubor 106.20 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.4.8.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.9.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.4.10.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ Mac OS X 10.4.11.x86 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 152 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ spustil licenční soubor 257 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.5.1 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 258.1 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5.2 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ spuštěn licenční soubor 258.12 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5.3 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.5.4 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 258.18 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5.5 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 258.19 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5.6 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ spustil licenční soubor 258.22 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5.7 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 258.25 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.5.8 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu 11. října 2019. (neurčitý)
- ↑ spustil licenční soubor 328 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.6 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.6.1 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ Mac OS X 10.6.2 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 329.3 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.6.3 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 329.3.1 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.6.4 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ spuštěn licenční soubor 329.3.2 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.6.5 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ spuštěn licenční soubor 329.3.3 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.6.6 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.6.7 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.6.8 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ spustil licenční soubor 392.18 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.7 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.7.1 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 392.35 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.7.2 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 392.36 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.7.3 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 392.38 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.7.4 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ spustil licenční soubor 392.39 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.7.5 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ hlavička licence ve spuštěném zdrojovém kódu 442.21 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.8 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.8.1 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ hlavička licence ve spuštěném zdrojovém kódu 442.26.2 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ Mac OS X 10.8.2 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.8.3 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.8.4 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ Mac OS X 10.8.5 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ hlavička licence ve spouštěném zdrojovém kódu 842.1.4 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ OS X 10.9 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ OS X 10.9.1 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ hlavička licence ve zdrojovém kódu spuštěného 842.90.1 . Staženo 13. prosince 2019. Archivováno z originálu 13. prosince 2019. (neurčitý)
- ↑ OS X 10.9.2 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ OS X 10.9.3 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)
- ↑ hlavička licence ve spouštěném zdrojovém kódu 842.92.1 . Získáno 13. prosince 2019. Archivováno z originálu dne 24. září 2018. (neurčitý)
- ↑ OS X 10.9.4 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 21. září 2020. (neurčitý)
- ↑ OS X 10.9.5 – Zdroj . Získáno 13. prosince 2019. Archivováno z originálu dne 20. října 2020. (neurčitý)