web-dev-qa-db-fra.com

Comment extraire le contenu du fichier 'Payload' dans un Apple package de mise à jour macOS?

J'extrais le package de mise à jour de macOS sierra - macOSUpd10.12.1.pkg en utilisant la commande suivante dans le répertoire/tmp/macosupd.

pkgutil --expand /Volumes/macOS\ Sierra\ Update/macOSUpd10.12.1.pkg /tmp/macosupd 

Je peux voir que les packages suivants sont regroupés dans le métapaquet.

-rwxr-xr-x   1  Distribution
drwxr-xr-x   6  FirmwareUpdate.pkg
drwxr-xr-x   5  FullBundleUpdate.pkg
drwxr-xr-x  36  Resources
drwxr-xr-x   6  macOSUpd10.12.1.pkg

Je ne parviens pas à extraire le contenu du fichier de charge utile. Par exemple, lorsque j'essaie d'extraire la charge utile de macOSUpd10.12.1.pkg, j'obtiens le message d'erreur suivant:

au goudron:

tar -xvf macOSUpd10.12.1.pkg/Payload 
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.

avec xar:

xar -xvf macOSUpd10.12.1.pkg/Payload 
Error opening xar archive: macOSUpd10.12.1.pkg/Payload

Lorsque j'exécute une commande de fichier sur le fichier de charge utile, je reçois un message comme:

file macOSUpd10.12.1.pkg/Payload 
macOSUpd10.12.1.pkg/Payload: data

En voyant les premiers bits du fichier de charge utile à l'aide de la commande xxd, je peux voir que le type de fichier ressemble à pbzx

xxd macOSUpd10.12.1.pkg/Payload 


00000000: 7062 7a78 0000 0000 0100 0000 0000 0000  pbzx............
00000010: 0100 0000 0000 0000 0031 0330 fd37 7a58  .........1.0.7zX
00000020: 5a00 0000 ff12 d941 04c0 f385 c401 8080  Z......A........
00000030: 8008 2101 1600 0000 506a 84e2 e3b8 13ef  ..!.....Pj......
00000040: fe5d 0018 0ddf 07a4 347c 7c50 9853 8031  .]......4||P.S.1
00000050: 2d14 f703 6903 cf69 f214 76b0 93c0 a4c9  -...i..i..v.....
00000060: 774d 6fb0 8b3a 2257 4a55 04ad 289b cc4d  wMo..:"WJU..(..M
00000070: b835 5db7 7e72 f7a8 dc15 7a9c 7755 800c  .5].~r....z.wU..
00000080: 6060 d45f e078 f84f e537 4319 2d89 f72e  ``._.x.O.7C.-...
00000090: 60c4 cdb0 6b54 9326 9321 3339 4a4f 1e75  `...kT.&.!39JO.u
000000a0: 8eb7 991d 8968 5e6f 45d4 24c9 e364 712b  .....h^oE.$..dq+
000000b0: ef4e 9abc af70 e97a e5a3 1810 7f05 54df  .N...p.z......T.
000000c0: 08d2 3060 9f8a a1e0 edb8 2b10 df23 789d  ..0`......+..#x.
000000d0: 3e52 ee3e d6f0 468a bfee 3366 d39e 28db  >R.>..F...3f..(.

Veuillez suggérer un moyen d'extraire le contenu du fichier Payload. J'ai essayé toutes les méthodes qu'il a suggérées dans link1 et link2 , y compris la méthode suggérée dans ce external-link toujours pas de succès. On dirait que Apple les mises à jour avant Mavericks étaient de purs paquets xar et tar. Avec Mavericks et au-dessus Apple a changé le format de fichier de tar en pbzx (lzma).

veuillez suggérer une méthode simple en ligne de commande pour extraire le contenu du fichier Payload car je dois l'utiliser dans ma configuration d'automatisation.

18
ap1982

Il existe une option non documentée pour pkgutil, --expand-full, qui utilise la même syntaxe que pkgutil --expand.

pkgutil --expand-full [pkg] [dir]

Cela désarchivera complètement un fichier pkg ou mpkg.

40
Geoff Nixon

Depuis OSX 10.10, le Payload dans le .pkg les fichiers sont codés comme pbzx (qui est à son tour compressé par lzma). Il ne peut plus être extrait à l'aide de gunzip. Découvrez le outil pbzx (une fourchette du original qui ne vous permettrait pas d'extraire directement la charge utile mais uniquement en passant le .pkg fichier directement).

Au lieu de

tar -xvf macOSUpd10.12.1.pkg/Payload 

tu peux écrire

pbzx -n macOSUpd10.12.1.pkg/Payload | cpio -i
11
Niklas R