【问题标题】:Install dmg package on MAC OS from Terminal从终端在 MAC OS 上安装 dmg 包
【发布时间】:2014-04-08 10:19:43
【问题描述】:

我想通过终端在我的 MAC OS 中安装 dmg java 包

我尝试使用这个命令:

sudo installer -package jdk-7u51-macos-x64.dmg -target /

但我收到此错误:

installer: Error the package path specified was invalid: 'jdk-7u51-macos-x64.dmg' 

【问题讨论】:

  • 您似乎在错误的目录中 - 即不是包所在的位置。输入“ls”,看看能不能看到目录下的包。
  • 如果您需要将目录更改为桌面,请键入“cd Desktop”然后安装。
  • 我和我的文件在同一个文件夹中
  • 如果我提取 pkg 包,那么我的命令运行良好。但我想找到一种直接做的方法......
  • 我认为安装程序需要一个以“.pkg”结尾的文件,而不是一个以“.dmg”结尾的磁盘映像。我认为你必须先双击它来挂载磁盘映像。

标签: macos terminal installation dmg


【解决方案1】:

试试这个:

MOUNTDIR=$(echo `hdiutil mount jdk-7u51-macos-x64.dmg | tail -1 \
| awk '{$1=$2=""; print $0}'` | xargs -0 echo) \
&& sudo installer -pkg "${MOUNTDIR}/"*.pkg -target / 

【讨论】:

  • @SebMa 我已经安装了10.13.5 Beta (17F45c),这个awk 仍然对我有用,即使安装目录中有空格。
  • 当你的awk 命令没有空间时,它是否也会返回你的挂载目录?
  • 因为在我的情况下$2 等于Apple_HFS。完整输出:/dev/disk2s2 Apple_HFS /Volumes/Lemur Installer
  • 这是一个useless echo in backticks,还有一些令人讨厌的过度复杂化。您只需要MOUNTDIR=$(hdiutil mount jdk-7u51-macos-x64.dmg | awk 'END {$1=$2=""; print $0}')(尽管您也应该适当地避免对私有变量使用全部大写)。
【解决方案2】:

dmgFilePath 成为包含dmg 文件路径的变量。

那你可以试试这个:

$ MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')
$ MOUNTDIR="$(mount | grep $MOUNTDEV | awk '{$1=$2="";sub(" [(].*","");sub("^  ","");print}')"
$ sudo installer -pkg "${MOUNTDIR}/"*.pkg -target /
$ hdiutil unmount "$MOUNTDIR"

在 macOS High Sierra 上测试,即使 "$MOUNTDIR" 包含一个空格。

【讨论】:

  • 如果挂载的目录有空格就不行,例如:/Volumes/Lamur Installer。我得到了Installer
  • @MateuszSzlosek 我忘了提到我根据您的评论编辑它的那一天,我已经解决了空间问题。它应该使用挂载目录中的空间
【解决方案3】:

我遇到了完全相同的问题并找到了根本原因。 如果您尝试安装安装程序无权访问该目录的软件包,您将收到奇怪的错误。

osascript -e {'do shell script "installer -allowUntrusted  -pkg ~/Download/OpenJDK8U-jdk_x64_mac_hotspot_8u275b01.pkg  -target /tmp/ " with administrator privileges'}

1:150: execution error: installer: Error - the package path specified was invalid: '/Users/user-x/Download/OpenJDK8U-jdk_x64_mac_hotspot_8u275b01.pkg'. (1)

通过将包移动到 /tmp/ 或更改目录权限,以便 applescript 或安装程序命令可以访问该文件。

osascript -e {'do shell script "installer -allowUntrusted  -pkg /tmp/OpenJDK8U-jdk_x64_mac_hotspot_8u275b01.pkg  -target /tmp/ " with administrator privileges'}     
installer: The upgrade was successful.K

【讨论】:

    【解决方案4】:

    感谢 Mateusz Szlosek,

    对我来说:

    $ MOUNTDIR=$(echo `hdiutil mount /Users/valorisa/Downloads/VirtualBox\ 5.0.14\ Build\ 105127
    /VirtualBox-5.0.14-105127-OSX.dmg | tail -1 | awk '{$1=$2=""; print $0}'` | xargs -0 echo) 
    && sudo installer -pkg "${MOUNTDIR}/"*.pkg -target /
    
    Password:
    installer: Package name is Oracle VM VirtualBox
    installer: Upgrading at base path /
    installer: The upgrade was successful.
    

    瓦洛里萨

    【讨论】:

    • 请解释更多
    猜你喜欢
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2020-02-22
    • 2020-01-10
    • 2018-10-16
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多