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

Kev*_*ack 58 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
Run Code Online (Sandbox Code Playgroud)

...但它不存在/usr/bin并尝试使用which monoreturn nothing 查找其可执行文件.

Jef*_*Neo 94

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

export PATH=/Library/Frameworks/Mono.framework/Versions/Current/bin/:${PATH}
Run Code Online (Sandbox Code Playgroud)

  • 如果您不希望每次打开终端时都输入该内容,请将该行添加到主目录中的`.bash_profile`.这假设您仍在使用bash,如果您更改了shell,那么您已经足够了解如何设置新shell. (4认同)

Sus*_*ver 35

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

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

/Library/Frameworks/Mono.framework/Versions/Current/Commands
Run Code Online (Sandbox Code Playgroud)

所以/usr/local/bin不再使用......

原版的

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

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

export PATH=/usr/local/bin:${PATH}
which mono
which mcs
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我安装了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 "$@"
Run Code Online (Sandbox Code Playgroud)

  • 结果证明这是非常正确的.我的机器上根本不存在usr/local/bin.创建它并在usr/local上调用chmod 777,然后重新安装mono来处理它.以前,mono尝试安装到usr/local/bin,并且在无法找到目标目录时无声地失败.谢谢! (2认同)

Agn*_*oia 13

最好使用下一个导出:

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

  1. 不修改以前的PATH 顺序(非常重要!)
  2. 您将使用当前版本(更新版本时无需更改变量PATH)

另一个选项(最佳选项)是在文件/ etc/paths的末尾添加一个新行,内容为:/Library/Frameworks/Mono.framework/Versions/Current/bin

在这种情况下,该路径将可供系统上的所有用户使用.


Jac*_*ski 11

在第一次使用Mono Framework安装后brew cask我发现它brew本身提供Mono(!)

我首先卸载了Mono.

$ brew cask uninstall mono-mdk
Run Code Online (Sandbox Code Playgroud)

并使用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
Run Code Online (Sandbox Code Playgroud)

我第一次用来brew cask安装Mono Framework并且不得不添加/Library/Frameworks/Mono.framework/Home/binPATH环境变量中.

$ 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!
Run Code Online (Sandbox Code Playgroud)

由于我使用哦,我-的zsh我定义MONO_HOME~/.zshrc,并调整PATH相应:

export MONO_HOME=/Library/Frameworks/Mono.framework/Home
export PATH=$MONO_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

随着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
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

export PATH=/Library/Frameworks/Mono.framework/Versions/4.2.0/bin/:${PATH}
Run Code Online (Sandbox Code Playgroud)

由于我不是程序员或编码员(至少不是很长时间而且从不在OS X上),这使我能够使用单声道运行Duplicati(这就是为什么我首先想要它),但我不是确定这是解决这个问题的正确方法,还是应该完全解决这个问题.有实际编程经验的任何人发表评论或澄清?

  • 我们能够通过创建mono命令的符号链接来使其工作.`ln -s /Library/Frameworks/Mono.framework/Versions/Current/bin/mono/usr/local/bin/mono` (5认同)