我有一个元包文件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 /