面对苹果的静默更新强加的最近的Java kerfuffle ,我正在寻找一个解决scheme来安装特定于操作系统版本的.pkg文件。
苹果继续为10.6提供Java更新,但是对于10.7+,我们需要从Oracle获取文件。 苹果终于在周五发布了10.6版的Java更新,但该软件在通过操作系统的软件更新部分显示为软件更新之前是可用的。
对于10.6,我们最终可能会等待Apple推送软件更新并使用ARD来运行这些软件更新,但是当使用Oracle提供的.pkg文件通过ARD推出Java更新时,我想以确保我们只是试图安装在10.7+以上的机器上,而不是以上。
问题:我想知道ARD Software Distribution是否具有基于客户端操作系统版本进行安装的能力,我不想试图在我们的任何10.6客户端上安装适用于10.7+以上的机器的Oracle Java。 我似乎无法在网上find任何文档或讨论。 任何/所有的帮助表示赞赏。
我制定了答案(以下答案提供了很大的帮助,只是想给那些仍然挠头的人提供一个最终结果):
#!/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
说明:
softwareupdate ,即使在select特定的PackageName时也会出现太多的其他问题。 我希望这有助于他人,感谢您的意见和指导。
Apple Remote Desktop的“复制项目和安装包”function没有特定的过滤function,但可以通过智能列表通过两个简单的步骤完成:
或者,如果要运行“软件更新”或同时在所有机器上安装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
一旦你build立了一个正确的你想要的脚本,那么你可以在ARD中select所有的机器,然后你可以做Manage – > Run UNIX Command …(或者点击Send UNIX Commandbutton)并粘贴脚本。
我想你要找的是sw_vers 。 您可以创build一个脚本来调用它并分析输出。 如果匹配(或不匹配),则调用包安装程序。
示例输出:
Marks-MacBook-Pro:~ mark$ sw_vers ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60