Um meine Software zu verteilen nutze ich Munki. Damit die enthaltenen Pakete auch immer aktuell sind und ich nicht jede einzelne Herstellerseite absurfen muss, kommt AutoPKG zum Einsatz. Diese Software lädt die Pakete von diversen Websites runter, fügt noch ggf. Installscripte hinzu und kopiert sie in das Munki-Repo. Nun muss ich also nur regelmäßig ein Script starten und das tut den Rest. Eine Installationsanleitung ist bei Github zu finden.
Für jede Software gibt es Recipes, also Rezepte (u.a. für den Download). Um diese den eigenen Bedürfnissen anzupassen, kann man Overrides erstellen.
$ autopkg search QuickLookCSV Name Repo Path ---- ---- ---- QuickLookCSV.pkg.recipe jps3-recipes QuickLookCSV/QuickLookCSV.pkg.recipe QuickLookCSV.download.recipe jps3-recipes QuickLookCSV/QuickLookCSV.download.recipe QuickLookCSV.munki.recipe jps3-recipes QuickLookCSV/QuickLookCSV.munki.recipe To add a new recipe repo, use 'autopkg repo-add <repo name>' $ autopkg repo-add jps3-recipes Attempting git clone... Adding /Users/admin/Library/AutoPkg/RecipeRepos/com.github.autopkg.jps3-recipes to RECIPE_SEARCH_DIRS... Updated search path: '.' '~/Library/AutoPkg/Recipes' '/Library/AutoPkg/Recipes' [...] $ autopkg make-override QuickLookCSV.munki.recipe Override file saved to /Users/admin/Library/AutoPkg/RecipeOverrides/QuickLookCSV.munki.recipe
Um nun alle Recipes auszuführen, führe ich folgenden Befehl aus:
$ autopkg run /Users/admin/Library/AutoPkg/RecipeOverrides/*.recipe MakeCatalogs.munki
Wenn ich nun die AutoPKG-Installation zu einem neuen Rechner migieren möchte, kopieren ich nur die RecipeOverrides auf den neuen Rechner und führe danach folgendes Script aus:
#!/bin/sh autopkg repo-add "recipes" for recipe in ~/Library/AutoPkg/RecipeOverrides/* do repo=$(cat "${recipe}" | grep ParentRecipe -A 1 | tail -n 1 | tr -d "[:blank:]" | sed "s/<string>(.*)</string>/1/" | sed "s/.*.github.(.*)..*..*/1/") repoarray+=("${repo}") done IFS=$'n' repoarray=($(sort <<<"${repoarray[*]}")) IFS=$'n' repoarray=($(uniq <<<"${repoarray[*]}")) for repo in "${repoarray[@]}" do echo "${repo}" autopkg repo-add "${repo}-recipes" done
Das Script liest aus jeder Override-Datei das Parent-Recipe und dessen Repository aus und fügt es per autopkg repo-add xxx hinzu. So wird auch automatisch ein Update des bisherigen Repos durchgeführt.