面对最近的 Java 混乱由于 Apple 的静默更新而导致的,我正在寻找一种解决方案来安装特定于操作系统版本的 .pkg 文件。
Apple 继续为 10.6 提供 Java 更新,但对于 10.7+,我们需要从 Oracle 获取文件。Apple 最终于周五发布了 10.6 的 Java 更新,但该软件在通过操作系统的“软件更新”部分显示为“软件更新”之前就已经可用。
对于 10.6,我们可能最终只能等待 Apple 通过其软件更新来推送它并使用 ARD 来运行这些软件更新,但是当使用 Oracle 提供的 .pkg 文件通过 ARD 推送 Java 更新时,我想确保我们只尝试安装在版本 10.7+ 的机器上,而不是安装在版本低于 10.7 的机器上。
问题:我想知道ARD 软件分发具有基于客户端操作系统版本进行安装的功能,我不想尝试在任何 10.6 客户端上安装适用于 10.7+ 机器的 Oracle Java。我似乎无法在线找到任何文档或讨论。任何/所有帮助都值得感谢。
我制定的答案(以下答案很有帮助,只是想为那些可能仍在挠头的人提供一个最终结果):
#!/bin/bash
os_ver_maj=$(sw_vers -productVersion | cut -d . -f 2)
if [ $os_ver_maj -ge 7 ]; then
mkdir /Volumes/ARD && mount_afp afp://ardservername.localdomain/ARD_pkgs /Volumes/ARD && installer -pkg /Volumes/ARD/jre-7u13-macosx-x64.pkg -target /
else
mkdir /Volumes/ARD && mount_afp afp://ardservername.localdomain/ARD_pkgs /Volumes/ARD && installer -pkg /Volumes/ARD/Java6u12OSX10.6.pkg -target /
fi
umount /Volumes/ARD
解释:
- 我选择直接在 ARD 服务器上托管文件,从 Oracle 下载几乎是不可能的,而且我确信它会在没有任何警告的情况下发生变化。
- 我还选择不使用
softwareupdate
10.6,即使在选择特定的 PackageName 时也出现了太多其他问题。 - 当新的 Java 更新发布时,我们将从 .dmg 中下载并提取 .pkg,将其放在 ARD 服务器上的 ARD_pkgs 目录中,并更新脚本以反映软件包版本的变化。
我希望这对其他人有所帮助,感谢您的意见和指导。
答案1
Apple Remote Desktop 的复制项目和安装包功能没有特定的过滤能力,但你可以使用智能列表通过两个简单的步骤来完成:
- 单击远程桌面窗口左下角的“+”按钮,然后选择“新建智能列表……”
- 将新的“智能列表”命名为“Mac OS 版本”大于“10.7”(如果愿意,您可以添加其他过滤器)然后单击“确定”。
- 从源列表中选择新的智能列表。
- 选择该列表中的所有计算机。
- 单击“安装包”按钮(或选择“管理”->“安装包...”)继续将 Oracle Java 包安装到选定的 Mac 上。
或者,如果您想要同时在所有机器上运行软件更新或安装 Oracle Java 包,您可以编写一个 shell 脚本来检查操作系统版本。以下是示例bash
:
os_ver_maj=$(sw_vers -productVersion | cut -d . -f 2) # get the major OS version
if [ $os_ver_maj -ge 7 ]; then
# download & install the Oracle Java package
else
# run software update
fi
一旦您构建了一个可以正确执行所需操作的脚本,那么您可以选择 ARD 中的所有机器,然后您可以执行管理 -> 运行 UNIX 命令...(或单击发送 UNIX 命令按钮)并粘贴脚本。
答案2
我认为您要找的是sw_vers
。您可以创建一个脚本来调用它并解析输出。如果匹配(或不匹配),则调用包安装程序。
示例输出:
Marks-MacBook-Pro:~ mark$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.8.2
BuildVersion: 12C60