如何在macOS上安装Mono,以便单声道在终端上工作?

时间:2015-09-12 18:54:11

标签: macos mono

我试图在Mac上运行Mono安装(OS X版本10.10.5),虽然安装说明它已成功完成,但我无法呼叫来自终端的单声道。

要安装它,我以root身份运行uninstallMono.sh以确保我们没有任何遗留物,然后运行MonoFramework-MDK-4.0.4.1.macos10.xamarin.x86.pkg。安装程序似乎成功完成,但尝试调用mono返回

  

-bash:mono:未找到命令

单声道框架似乎已安装:

Lees-Mac-Pro:Downloads kevinmack$ cd /Volumes/Macintosh\ HD/Library/Frameworks/
Lees-Mac-Pro:Frameworks kevinmack$ ls -l
total 32
lrwxr-xr-x  1 root  wheel   71 Jan 20  2015 AEProfiling.framework -> ../../Applications/Motion.app/Contents/Frameworks/AEProfiling.framework
lrwxr-xr-x  1 root  wheel   74 Jan 20  2015 AERegistration.framework -> ../../Applications/Motion.app/Contents/Frameworks/AERegistration.framework
lrwxr-xr-x  1 root  wheel   74 Jan 20  2015 AudioMixEngine.framework -> ../../Applications/Motion.app/Contents/Frameworks/AudioMixEngine.framework
drwxr-xr-x  8 root  admin  272 Sep 12 11:24 Mono.framework
lrwxr-xr-x  1 root  wheel   60 Sep  9 22:16 NyxAudioAnalysis.framework -> /System/Library/PrivateFrameworks/NyxAudioAnalysis.framework
drwxr-xr-x  5 root  wheel  170 Jan 20  2015 PluginManager.framework
drwxr-xr-x  8 root  wheel  272 Sep  9 22:19 iTunesLibrary.framework

...但它不会出现在/usr/bin中并尝试使用which mono查找其可执行文件。

9 个答案:

答案 0 :(得分:92)

在OS X El Capitan中,在终端中运行以下内容以支持mono命令

export PATH=/Library/Frameworks/Mono.framework/Versions/Current/bin/:${PATH}

答案 1 :(得分:30)

更新(因为这仍然会在两年后获得视图):

最新版本的Mono(5.x)安装过程会在mono-commands中创建一个文件(/etc/paths.d),其中包含以下路径:

/Library/Frameworks/Mono.framework/Versions/Current/Commands

因此不再使用/usr/local/bin ......

原始

较新版本的单声道符合“El Capitan”要求,即不在 / usr / bin 中安装任何内容,因此现在使用 / usr / local / bin 。我不确定哪个单声道4.x版本开始......

但我会假设你的路径中没有/ usr / local / bin(?),试试:

export PATH=/usr/local/bin:${PATH}
which mono
which mcs

在我的情况下,我安装了4.2.0:

$ which mono
/usr/local/bin/mono
$ which mcs
/usr/local/bin/mcs
$ mono --version
Mono JIT compiler version 4.2.0 (explicit/2701b19 Mon Aug 31 09:57:28 EDT 2015)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
$ cat `which mcs`
#!/bin/sh
export PATH=$PATH:/Library/Frameworks/Mono.framework/Versions/4.2.0/bin
export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/External/pkgconfig:/Library/Frameworks/Mono.framework/Versions/4.2.0/lib/pkgconfig:/Library/Frameworks/Mono.framework/Versions/4.2.0/share/pkgconfig:$PKG_CONFIG_PATH
exec /Library/Frameworks/Mono.framework/Versions/4.2.0/bin/mono $MONO_OPTIONS /Library/Frameworks/Mono.framework/Versions/4.2.0/lib/mono/4.5/mcs.exe "$@"

答案 2 :(得分:13)

最好使用下一个导出:

export PATH = $ PATH:/Library/Frameworks/Mono.framework/Versions/Current/bin /

  1. 没有修改PATH的先前订单(它非常 重要!!)
  2. 您将使用当前版本(更新时) 改变变量PATH所必需的版本
  3. 另一个选项( 最佳选项 )是在文件 / etc / paths 的末尾添加一个新行,其中包含以下内容: /Library/Frameworks/Mono.framework/Versions/Current/bin

    在这种情况下,系统上的所有用户

答案 3 :(得分:9)

使用brew cask首次安装Mono Framework后,我发现brew本身提供Mono(!)

我首先卸载了Mono。

$ brew cask uninstall mono-mdk

使用brew install mono安装并删除了~/.zshrc中的所有配置更改。

看起来好多了:

$ type mono
mono is /usr/local/bin/mono

$ mono --version
Mono JIT compiler version 4.6.2 (Stable 4.6.2.7/08fd525 Tue Nov 22 22:05:18 GMT 2016)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           normal
    SIGSEGV:       altstack
    Notification:  kqueue
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug
    LLVM:          supported, not enabled.
    GC:            sgen

我首先使用brew cask安装Mono Framework,并且必须将/Library/Frameworks/Mono.framework/Home/bin添加到PATH环境变量。

$ brew cask info mono-mdk
mono-mdk: 4.6.2.7
http://www.mono-project.com/
Not installed
From: https://github.com/caskroom/homebrew-cask/blob/master/Casks/mono-mdk.rb
==> Name
Mono
==> Artifacts
MonoFramework-MDK-4.6.2.7.macos10.xamarin.universal.pkg (pkg)
➜  kafunk git:(master) brew cask install mono-mdk
==> Downloading https://download.mono-project.com/archive/4.6.2/macos-10-universal/MonoFramework-MDK-4.6.2.7.macos10.xamarin.universal.pkg
######################################################################## 100,0%
==> Verifying checksum for Cask mono-mdk
==> Running installer for mono-mdk; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
==> installer: Package name is Mono Framework
==> installer: Installing at base path /
==> installer: The install was successful.
  mono-mdk was successfully installed!

自从我使用oh-my-zsh后,我在MONO_HOME中定义了~/.zshrc并相应地调整了PATH

export MONO_HOME=/Library/Frameworks/Mono.framework/Home
export PATH=$MONO_HOME/bin:$PATH

可以使用mono

$ mono --version
Mono JIT compiler version 4.6.2 (mono-4.6.0-branch/08fd525 Thu Nov 10 20:28:28 EST 2016)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           normal
    SIGSEGV:       altstack
    Notification:  kqueue
    Architecture:  x86
    Disabled:      none
    Misc:          softdebug
    LLVM:          yes(3.6.0svn-mono-master/8b1520c)
    GC:            sgen

答案 4 :(得分:6)

我一直在看这个页面,因为我在El Capitan上安装Mono(第一次)也遇到了问题。我发现框架已安装,但命令未放入/ usr / local / bin。 Symlinking它们似乎没有用,因为我在尝试使用mono命令时会遇到错误,而且它正在寻找错误位置的库。

我最终找到的工作(通过反复试验)是使用终端中的命令将$ PATH设置为Mono框架:

export PATH=/Library/Frameworks/Mono.framework/Versions/4.2.0/bin/:${PATH}

由于我不是程序员或编码员(至少不是很长时间而且从不在OS X上),这使我能够使用mono运行Duplicati(这就是我首先想要它的原因),但我不确定这是否是解决这个问题的正确方法,或者即使这样做也是如此。有实际编程经验的人可以评论或澄清吗?

答案 5 :(得分:3)

El Capitan现在保护"无根"中的某些系统目录。模式(a.k.a.系统完整性保护)。如果运行命令ls -lO / System / Library / LaunchDaemons,您将看到其下的目录和文件现在标记为"受限制。"

您可以像这样禁用无根模式:

  1. 重新启动进入恢复模式(重启并按住Cmd-R)
  2. 打开终端
  3. 使用此命令:csrutil disable
  4. 重新启动并运行在El Capitan之前有效的命令

    1. 安装Mono最新版本。
    2. 完成后,强烈建议您按照相同的步骤重新启用SIP,但在步骤3中使用csrutil enable。

      在尝试安装pear / pecl模块和macports / homebrew应用程序时遇到了同样根本原因的问题。那些通常需要将文件安装到/ usr / include和/ usr / lib中,这些文件现在也受到限制。

      注意:互联网上有关此问题的先前答案为您提供了修改NVRAM设置的说明,但Apple表示NVRAM方法将停止使用El Capitan的公开发布。 GM版本已经禁用了NVRAM的解决方法,因此这个答案应该可以帮助您实现前进的目标。

答案 6 :(得分:1)

快速摘要: atm,单声道框架安装程序只有在您将它安装到root时才能正常工作。它会自动将/Library/Frameworks/Mono.framework/Versions/Current/Commands添加到$PATH,但我不知道您是否需要手动添加/Library/Frameworks/Mono.framework/Versions/Current/bin/或者一切正常。 (Commands是指向bin的符号链接,但仍可能不起作用)

更深入: 我最近从MonoFramework-MDK-4.8.0.520.macos10.xamarin.universal.pkg安装了单声道。我将它安装到/Volumes/osxapps/而不是root,但安装仍然期望一切都在root中。它将/Library/Frameworks/Mono.framework/Versions/Current/Commands添加到$PATH,但/Library/Frameworks/Mono.framework/中的所有内容都只是空目录。所有文件都位于/Volumes/osxapps/Library/Frameworks/Mono.framework/.

此外,包括/Volumes/osxapps/Library/Frameworks/Mono.framework/在内的Commands中的很多内容都不是文件夹,而是因为他们希望文件夹位于root中而无效的符号链接。例如:如果所有内容都安装在root中, /Library/Frameworks/Mono.framework/Versions/Current/Commands/Library/Frameworks/Mono.framework/Versions/Current/bin的符号链接,/Library/Frameworks/Mono.framework/Versions/Current/也是符号链接。

我补充说:

export PATH="/Volumes/osxapps/Library/Frameworks/Mono.framework/Versions/4.8.0/bin:$PATH"

.bash_profile,在~/中,它允许我运行命令/可执行文件,但它们都因错误而死亡,因为他们仍然希望事情在root中。

所以我将文件夹从/Volumes/osxapps/Library/Frameworks复制到/Library/Frameworks/并且解决了所有错误并且工作正常但现在我有两个Mono.framework副本,我不希望它安装在首先是root,因为root在ssd上,而且空间有限。

更好的解决方案是根据this page底部的说明卸载mono,然后在root上重新安装。

但是,对我来说,安装/Volumes/osxapps/仍然会更好,但我不知道最好的方法。 (我可能只是重新创建一堆符号链接)。我打算告诉单项目,如果你没有安装到root,他们的安装程序会把所有东西搞得一团糟,但我不确定这样做的最佳方法。所以,相反,我已经发布了迄今为止我所学到的内容,希望它可以帮助其他人。

答案 7 :(得分:0)

尝试安装旧版本。 3.4.0正在为我OSX(10.10.5)工作..

http://origin-download.mono-project.com/archive/3.4.0/macos-10-x86/

答案 8 :(得分:0)

  1. 打开 .bash_profile

  2. 添加export PATH=$PATH:/Library/Frameworks/Mono.framework/Versions/Current/Commands

  3. 完成了! enter image description here