Frequently Asked Questions
A: Same as "monkey."
A: Nope. Just a fun name that evokes "helper monkeys."
A: Munki supports the following formats:
* Must be wrapped in a disk image file (.dmg).
A: If the path to the application appears in the "installs" array, Munki will first check that path. If the application is found at the given path, its CFBundleShortVersionStrings string is checked. If it matches what's listed in the the manifest, Munki knows the correct version is installed. If the application isn't found at the given path, system_profiler is used to gather a list of all installed applications. If the application is listed with the correct version number, Munki knows the correct version is installed. If it's not listed, or it has an earlier version number, Munki knows the application must be installed. To speed up searching for applications, Munki caches the list of applications returned by system_profiler.
A: On average, once an hour. The exact time between checks is randomized somewhat to prevent every client from hitting the Munki server all at once. A launchd job defined at /Library/LaunchDaemons/com.googlecode.munki.managedsoftwareupdate-check.plist runs once an hour. It, in turn, calls /usr/local/munki/updatecheckhelper, which sleeps a random time between 0 and 60 minutes before checking with the server. This means that the time between any two Munki runs can vary from a few minutes to almost two hours.
A: An application named "Managed Software Update", which looks very much like Apple's Software Update application, will open and display available updates. Like with Apple's Software Update, the user can then choose to install the updates now, or wait until later. Unlike with Apple's Software Update, the user cannot pick and choose among the updates. Those are managed by the Munki administrator. If any update requires a logout or restart, Managed Software Update triggers a logout before proceeding. Otherwise, the user can choose to update without logging out.
Q: What happens if the user chooses to update without logging out, but some of the updates are for applications that are currently open?
A: Munki can check for certain applications and notify the user to quit them before proceeding. See BlockingApplications for more info on this feature.
A: Munki will install available updates if there is no user logged in and the machine has been idle for 10 seconds or longer. A status window is displayed, and the loginwindow is hidden so that no-one can login while updates are occurring.
A: Yes. See AppleSoftwareUpdatesWithMunki for more information.
A: Most likely the disk image containing Foo-1.0 is a read/write disk image. Possible solutions:
Q: I keep seeing warnings like WARNING: Could not process item Office2011_update-14.4.2 for update. No pkginfo found in catalogs: production, yet there is definitely an item named "Office2011_update-14.4.2" in the production catalog. What is happening?
A: A name followed by a hyphen and a version number (or a number!) has special meaning: it means NAME-VERSION. So Munki is actually looking for an item named "Office2011_update" with a version of "14.4.2". It is NOT looking for an item with the name "Office2011_update-14.4.2". To avoid this type of confusion, don't put versions into names. It's rarely good practice to do so. If you must, don't precede the version with a hyphen. (Any number preceded by a hyphen is likely to be interpreted as a version number.)
A: The most likely explanation is that the install has failed. On the next run, Munki sees the item is not installed, and tries again. If the item actually is installed, see the next question...
Q: Munki successfully installed some software, but now each time Munki runs, it wants to install the software again. Why is this?
A: Munki uses one of two arrays in the pkginfo to determine if an item is installed. If the "installs" array exists, each item in the array is checked; if it does not exist or the currently installed version is older than the one described in the pkginfo, Munki will attempt to install the item. If there is no "installs" array, Munki will use the "receipts" array, again installing if any receipt is missing or is an older version that that described in the pkginfo.
A: In most cases, yes. See App Store Apps
Q: Why does does the munkitools.mpkg/launchd.pkg require a restart? This prevents an unattended upgrade of the Munki tools!
A: It is non-trivial to load launchd jobs, especially user-level LaunchAgents, in the correct Mach context from a package postinstall script in all possible execution contexts in which a package can be installed. But more importantly, the launchd jobs control Munki itself, and so Munki could not unload and reload these jobs without killing itself during the unload. So for maximum reliability, we require a restart so we ensure the jobs are loaded in the correct context and that Munki can actually complete the task!