Mac OS X 如何验证安装了特定软件包

Til*_*lia 8 command-line osx shell-script package-management

在bash脚本我需要检查gcc, g++, cpp, make, libpng devel, zlib devel, git, Java(包括devel的文件),ant并且pkg-config还可以在Mac OS X,如果没有,我需要提示用户安装它们。

这在 Linux 上很容易,因为它具有包管理工具,但我不知道如何在 Mac OS X shell 中执行此操作。例如,在 openSUSE 上,我可以使用rpm -qzypper in,od 基于 Debian 的发行版dpkg-queryapt-get install. 但是如何在 Mac 上做到这一点呢?

fd0*_*fd0 9

苹果的包管理系统经常受到批评。该实用程序pkgutil可用于列出和查询包裹收据。

列出使用 Apple 安装程序安装的所有软件包

     pkgutil --pkgs
Run Code Online (Sandbox Code Playgroud)

包 ID 的正则表达式

    pkgutil --pkgs=.\+Xcode.\+
Run Code Online (Sandbox Code Playgroud)

列出包 id 中的所有文件

    pkgutil --only-files --files com.apple.pkg.update.devtools.3.2.6.XcodeUpdate
Run Code Online (Sandbox Code Playgroud)

然后你可以再次使用lsbom和读取 /var/db/receipts 中的 bom 文件

用户还安装其他包管理系统,例如 MacPorts、fink 或 Homebrew。或者在任何前缀中编译自己的。pkgutil不会列出通过这些方法安装的软件包。

如果您的目标操作系统是 OS X10.9 或 OS X 10.10 那么

    gcc --version
Run Code Online (Sandbox Code Playgroud)

该命令将输出 gcc 版本,或者系统会提示您安装 XCode 命令行工具。gcc, g++, cpp, make, and git将与其他工具一起安装。Java 包由 Oracle 提供。您可以进行测试,java --version但您需要熟悉 Apple 的框架、插件和包来搜索头文件。pkgutil将是这个过程的一个很好的候选人。

您提到的其他软件包可能会在 shell 脚本中编译,或者编译并放入 Apple 安装程序包中,然后通过 shell 脚本安装。没有简单的方法。