在安裝 Apple 樣式套件時,您可以在機器上產生回條。Metapackage 會產生多個回條。VMware AirWatch Admin Assistant 會在套件 pkginfo 中的回條陣列中新增這些回條的名稱與版本。

以下是 Avid LE QuickTime 轉碼器版本 2.3.4 的回條陣列。

        <key>receipts</key>
        <array>
        
          <dict>
           <key>filename</key> <string>AvidCodecsLE.pkg</string> <key>installed_size</key> <integer>1188</integer> <key>name</key> <string>AvidCodecsLE</string> <key>packageid</key> <string>com.avid.avidcodecsle</string> <key>version</key> <string>2.3.4</string> 
          </dict>
        
        </array>
      

如果 Munki 使用回條陣列來決定安裝狀態,它會確認陣列中每個回條是否存在以及其版本。如果任何回條遺失,或版本編號舊於回條陣列所指定的版本,該項目會被視為未安裝。只有在每個回條存在,且所有版本都與 pkginfo 中的版本相同 (或更新) 的情況下,該項目才會被視為已安裝。若要疑難排解問題,使用 pkgutil 工具來檢查已安裝的回條。

        # pkgutil --pkg-info com.avid.avidcodecsle
        No receipt for 'com.avid.avidcodecsle' found at '/'.
      

在此情況下,Avid LE QuickTime 轉碼器的回條在此機器上找不到。回條常見的複雜狀況是,使用許多 metapackage 時,安裝邏輯會造成僅安裝了子套件的子集。一般而言,回條清單會包含 metapackage 中每個子套件的回條 (如果 Munki 被要求根據套件回條移除軟體項目,則會需要此資訊)。但如果未安裝每個子套件是正常且預期中的狀況,Munki 則會將項目標記為目前未安裝,並重複提議安裝。此問題的其中一個解決方案是,將具有 True 值的選用金鑰新增至選擇性安裝的回條。Munki 在判斷安裝狀態時不會考量這些回條。

        <key>receipts</key>
        <array>
        
          <dict>
           <key>filename</key> <string>mandatory.pkg</string> <key>installed_size</key> <integer>1188</integer> <key>name</key> <string>Mandatory</string> <key>packageid</key> <string>com.foo.mandatory</string> <key>version</key> <string>1.0</string> 
          </dict>
          <dict>
           <key>filename</key> <string>optional.pkg</string> <key>installed_size</key> <integer>1188</integer> <key>name</key> <string>Optional</string> <key>optional</key> <true/> <key>packageid</key> <string>com.foo.optional</string> <key>version</key> <string>1.0</string> 
          </dict>
        
        </array>
      

這種情況的另一個解決方案,就是提供列有套件安裝項目的安裝陣列。如此 Munki 在判定安裝狀態時,就可以使用安裝陣列資訊而不需回條。