De auteur ontdekte een nieuwe vermelding in de PATH van macOS 27.0: /pkg/env/global/bin. Deze wijziging wordt geïmplementeerd via de path_helper-utility door middel van een nieuw bestand genaamd 10-pmk-global in /etc/paths.d.
Uit onderzoek blijkt dat de /pkg-directory is toegevoegd aan zowel het Data-volume (vanaf macOS 26.4) als het Signed System Volume (vanaf macOS 27.0). De directory bevat de submappen env, etc, inv en var. Hoewel Apple geen officiële uitleg heeft gegeven, wordt er gespeculeerd dat dit onderdeel is van een nieuw pakketbeheersysteem van Apple, mogelijk aangeduid als de "Package Management Kit" (PMK).
Wat is in hemelsnaam /pkg?
Onlangs merkte ik tijdens het oplossen van een PATH-probleem een vermelding op voor /pkg/env/global/bin. In eerste instantie maakte ik me zorgen dat er iets vreselijk mis was gegaan. Het blijkt echter onderdeel te zijn van macOS 27.0… hoewel nog niemand zeker weet waar het precies voor dient.
Achtergrond: path_helper
Om dit te begrijpen is wat achtergrondinformatie nodig. Sinds Mac OS X 10.5 uit 2007 bevat het besturingssysteem een pathhelper-utility. Deze leest vermeldingen uit /etc/paths en uit alle bestanden in de directory /etc/paths.d. Hoewel men theoretisch gebruik zou kunnen maken van dit systeem, beheer ik (en ik vermoed de meeste anderen ook) het toevoegen van nieuwe PATH-vermeldingen via het .zshrc-bestand of iets soortgelijks. De pathhelper-utility lijkt primair door Apple zelf te worden gebruikt.
In macOS 10.15 werd er een vermelding toegevoegd aan /etc/paths.d om de nieuwe locatie van de rvictl-utility te ondersteunen. In macOS 13.3 voegde Apple enkele nieuwe vermeldingen toe ter ondersteuning van Cryptexes. Nu, in macOS 27.0, is er een nieuw bestand genaamd 10-pmk-global [1] dat /pkg/env/global/bin toevoegt aan de PATH-lijst.
De ontdekking van de /pkg-directory
Ik begon pas echt onderzoek te doen toen ik die vermelding opmerkte. Ik nam aan dat er iets mis was gegaan. Toen zag ik dat er inderdaad een /pkg-directory in de root van mijn bestandssysteem stond. Na een korte paniekval doken ik in dit konijnenhol.
In een bericht over de updates van de bootvolume-structuur van macOS legt Howard Oakley uit dat de pkg-directory werd toegevoegd aan het Data-volume in macOS 26.4, maar pas in versie 27.0 werd toegevoegd aan de root van het Signed System Volume. Hij merkt daarbij op dat dit eigenlijk een vrij grote wijziging is.
Het vreemde is dat, voor zover ik kan vaststellen, niemand lijkt te weten waar deze nieuwe directory voor dient. Het is vreemd dat Apple hun bestandssysteemstructuur zou aanpassen en het aan de PATH van iedereen zou toevoegen zonder dat daar een duidelijke reden voor is.
Speculaties over de functie
De /pkg-directory bevat vier subdirectories: env, etc, inv en var. Op basis van de naam en deze subdirectories is het mogelijk dat dit wordt gebruikt voor een aanstaand pakketbeheersysteem (package management system) van Apple zelf — maar dat is een wilde gok. Apple heeft onlangs de Swift Package Index overgenomen, maar dat lijkt hier niet mee samen te hangen. Het is niet duidelijk waarom er een root-level directory nodig zou zijn om te helpen bij project-level dependencies. Ook is het onduidelijk waar de "pmk" in /etc/paths.d/10-pmk-global naar verwijst [2].
Het is te hopen dat we hier op een gegeven moment meer details over krijgen. In de tussentijd helpen deze details wellicht om te voorkomen dat iemand anders in paniek raakt wanneer hij deze vermelding in zijn PATH ziet.
***
Voetnoten
[1] Het "10"-gedeelte van de bestandsnaam dient om de prioriteit te bepalen. Bestanden die beginnen met lagere nummers worden als eerste aan de PATH toegevoegd en hebben daarom voorrang.
[2] Gebruiker oefrha op Hacker News giste dat het "Package Management Kit" zou kunnen zijn, maar wederom… wie weet het zeker.
Wat is in hemelsnaam /pkg?
Onlangs merkte ik tijdens het oplossen van een PATH-probleem een vermelding op voor /pkg/env/global/bin. In eerste instantie maakte ik me zorgen dat er iets vreselijk mis was gegaan. Het blijkt echter onderdeel te zijn van macOS 27.0… hoewel nog niemand zeker weet waar het precies voor dient.
Achtergrond: path_helper
Om dit te begrijpen is wat achtergrondinformatie nodig. Sinds Mac OS X 10.5 uit 2007 bevat het besturingssysteem een pathhelper-utility. Deze leest vermeldingen uit /etc/paths en uit alle bestanden in de directory /etc/paths.d. Hoewel men theoretisch gebruik zou kunnen maken van dit systeem, beheer ik (en ik vermoed de meeste anderen ook) het toevoegen van nieuwe PATH-vermeldingen via het .zshrc-bestand of iets soortgelijks. De pathhelper-utility lijkt primair door Apple zelf te worden gebruikt.
In macOS 10.15 werd er een vermelding toegevoegd aan /etc/paths.d om de nieuwe locatie van de rvictl-utility te ondersteunen. In macOS 13.3 voegde Apple enkele nieuwe vermeldingen toe ter ondersteuning van Cryptexes. Nu, in macOS 27.0, is er een nieuw bestand genaamd 10-pmk-global [1] dat /pkg/env/global/bin toevoegt aan de PATH-lijst.
De ontdekking van de /pkg-directory
Ik begon pas echt onderzoek te doen toen ik die vermelding opmerkte. Ik nam aan dat er iets mis was gegaan. Toen zag ik dat er inderdaad een /pkg-directory in de root van mijn bestandssysteem stond. Na een korte paniekval doken ik in dit konijnenhol.
In een bericht over de updates van de bootvolume-structuur van macOS legt Howard Oakley uit dat de pkg-directory werd toegevoegd aan het Data-volume in macOS 26.4, maar pas in versie 27.0 werd toegevoegd aan de root van het Signed System Volume. Hij merkt daarbij op dat dit eigenlijk een vrij grote wijziging is.
Het vreemde is dat, voor zover ik kan vaststellen, niemand lijkt te weten waar deze nieuwe directory voor dient. Het is vreemd dat Apple hun bestandssysteemstructuur zou aanpassen en het aan de PATH van iedereen zou toevoegen zonder dat daar een duidelijke reden voor is.
Speculaties over de functie
De /pkg-directory bevat vier subdirectories: env, etc, inv en var. Op basis van de naam en deze subdirectories is het mogelijk dat dit wordt gebruikt voor een aanstaand pakketbeheersysteem (package management system) van Apple zelf — maar dat is een wilde gok. Apple heeft onlangs de Swift Package Index overgenomen, maar dat lijkt hier niet mee samen te hangen. Het is niet duidelijk waarom er een root-level directory nodig zou zijn om te helpen bij project-level dependencies. Ook is het onduidelijk waar de "pmk" in /etc/paths.d/10-pmk-global naar verwijst [2].
Het is te hopen dat we hier op een gegeven moment meer details over krijgen. In de tussentijd helpen deze details wellicht om te voorkomen dat iemand anders in paniek raakt wanneer hij deze vermelding in zijn PATH ziet.
***
Voetnoten
[1] Het "10"-gedeelte van de bestandsnaam dient om de prioriteit te bepalen. Bestanden die beginnen met lagere nummers worden als eerste aan de PATH toegevoegd en hebben daarom voorrang.
[2] Gebruiker oefrha op Hacker News giste dat het "Package Management Kit" zou kunnen zijn, maar wederom… wie weet het zeker.