Intro to creating OS X PackagesSat, May 16, 2015 2 minutes
For years I’ve used tools like The Luggage and Whitebox Packages to package scripts and deploy files to end user machines. The Luggage is cumbersome, and I’m a bit averse to GUI tools that I can’t easily version control and automate. I’ve expressed this frustration in ##osx-server a couple weeks ago, and Tim Sutton replied with
tvsutton > mkdir "root"; <put stuff in root>; pkgbuild --root root --identifier foo.pkg --version 1.2.3 my-output.pkg
As it turns out, this oneliner is about as difficult it gets to create a new package. Let’s take a look at a real example:
Bootstrap munki by placing the file
# create the root folder for our package. It can be named anything. $ mkdir pkgroot # create the Users/Shared directory inside our package root. $ mkdir -p pkgroot/Users/Shared # create the empty file $ touch pkgroot/Users/Shared/.com.googlecode.munki.checkandinstallatstartup # build our package $ pkgbuild --root pkgroot --identifier org.myorg.munkikickstart --version 1.0.0 ~/Desktop/munki_kickstart.pkg
And that’s it! We have a package that we can deploy.
What if we wanted to add a pre or postinstall script to our package? Well that’s simple too.
First, we’ll create a folder called
scripts and place our scripts there. Then, we just add –scripts /path/to/scripts/folder when calling pkgbuild.
Here’s another example of a package that I use to add a certificate to my keychain. It uses a postinstall script.
I hope that’s enough to get you started as well.