如何在 Mac OS X 中通过命令行从元包安装单个包?

如何在 Mac OS X 中通过命令行从元包安装单个包?

我有一个元包文件program.mpkg。我使用 Mac OS Xinstaller命令通过命令行安装.pkg文件,.mpkg通常如下:

$ sudo installer -pkg program.mpkg -tgt  /

元包内容:

$ installer -pkg program.mpkg -pkginfo`
program
prog-command-line
GUI-front-end

默认情况下,program.mpkg 内的所有这三个包都将被安装,但我需要GUI-front-end仅使用命令行从该元包中安装一个包。

编辑:

我使用过以下-config选项:

$ installer -pkg ~/Documents/program.pkg -target / -config > /tmp/prog.plist

并得到了程序清单

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Package</key>
    <string>program.mpkg</string>
    <key>Target</key>
    <string>/</string>
</dict>
</plist> 

我应该如何更改它以便仅安装GUI-front-end包而不是安装 .mpkg 中的所有三个可用包?

编辑:

我尝试使用以下命令取消扁平化元包:

$ pkgutil --expand /Volumes/Prog/program.mpkg ~/Desktop/folder

但得到:

Could not open package for expansion: /Volumes/Prog/program.mpkg

所有文件和文件夹都存在...有什么想法吗?

答案1

尝试使用-config安装程序选项。以下是手册页对此选项的说明

-配置

格式化命令行安装参数以供稍后使用。输出将发送到 stdout,但可以重定向到文件以创建配置文件。指定此选项时,实际上并未执行安装。此配置文件可以作为 -file 参数的参数提供,而不必键入一长串安装参数。配置文件可用于执行多个相同的安装。您可以按如下方式创建配置文件:

installer -pkg ~/Documents/Foo.pkg -target / -config > /tmp/configfile.plist

如果您按照示例操作,则可以编辑生成的.plist文件,然后使用-file /tmp/configfile.plist它来实际运行具有您指定的选项的安装。这种方法对于我们为企业客户创建可重复安装的人来说很常见。但请提前知道并非所有安装程序都写得一样。您可能需要在测试虚拟机或机器上测试您的安装,以确保您只获得所需的选项。GL

答案2

其实解决办法非常简单 - 当你通过 shell 查看时,.mpkg 文件看起来就像一个简单的目录,因此只需cd在里面找到你的 .pkg 并用它做任何你想做的事情...例如:

cp metapkg.mpkg/some.pkg /tmp/some.pkg
sudo installer -pkg /tmp/some.pkg -tgt /

相关内容