2016-12-15 166 views
0

我正在解压缩macOS sierra更新软件包 - macOSUpd10.12.1.pkg,使用以下命令到/ tmp/macosupd目录。如何从苹果macOS更新包中的“Payload”文件中提取内容?

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

我可以看到下面的包的元数据包内捆绑在一起。

-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 

我无法提取Payload文件的内容。例如,当我尝试提取macOSUpd10.12.1.pkg的有效载荷,我得到以下错误信息:

与焦油

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

与XAR:

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

当我运行文件命令在有效载荷文件上,我收到一条消息:

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

通过查看使用012的Payload文件的起始位命令,我可以看到的文件类型看起来像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..(. 

请建议如何提取Payload文件的内容的方式。我已经尝试了他在link1link2中建议的所有方法,其中包括在此external-link中建议的方法仍然没有成功。看起来像小牛之前的苹果更新是纯xar和tar包。随着Mavericks及以上苹果将文件格式从tar改为pbzx(lzma)。

请建议一个简单的命令行方式来提取Payload文件的内容,因为我必须在自动化设置中使用它。

回答

2

由于OSX 10.10,.pkg文件中的Payload被编码为pbzx(它又被lzma压缩)。它不能再使用gunzip提取。查看pbzx tooloriginal的分支,它不允许您直接提取有效负载,但只能通过直接传递.pkg文件)。

而不是

tar -xvf macOSUpd10.12.1.pkg/Payload 

你可以写

pbzx -n macOSUpd10.12.1.pkg/Payload | cpio -i 
+0

感谢您的回答,它帮助。 – ap1982

相关问题