web-dev-qa-db-ja.com

macOSにMonoをインストールして、ターミナルでmonoが動作するようにする方法は?

Mac(OS Xバージョン10.10.5)でMonoのインストールを実行しようとしていますが、インストールが正常に完了したと表示している間、ターミナルからmonoを呼び出すことができません。

それをインストールするには、uninstallMono.shをrootとして実行して、残り物が残っていないことを確認してから、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を使用して実行可能ファイルを見つけようとしても何も返されません。

58
Kevin Mack

更新(これは2年以上後でもまだビューを取得しているため):

Mono(5.x)インストールプロセスの最新バージョンは、次のパスを含むファイル(mono-commands)を/etc/paths.dに作成します。

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

/usr/local/binは使用されなくなりました...

元の

Monoの新しいバージョンは、/ usr/binに何もインストールしないという「El Capitan」の要件に準拠しているため、現在は/ usr/local/binが使用されています。どのmono 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 "$@"
35
SushiHangover

OS X El Capitanでは、Terminalで次を実行してmonoコマンドをサポートします

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

次のエクスポートを使用することをお勧めします。

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

  1. 前の順序を変更しないでください PATH(非常に重要です!!)
  2. 現在のバージョンを使用します(バージョンを更新する場合、変数PATHを変更する必要はありません)

別のオプション(best option)は、ファイルの最後に新しい行を含めることです/ etc/paths内容:/Library/Frameworks/Mono.framework/Versions/Current/bin

この場合、パスはシステム上のすべてのユーザーが利用可能になります。

13
Agnoia

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/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!

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
9
Jacek Laskowski

私もEl CapitanにMonoをインストールするのに問題があったので、このページを見てきました。フレームワークはインストールされましたが、コマンドは/ usr/local/binに入れられませんでした。 monoコマンドを使用しようとするとエラーが発生し、間違った場所でライブラリを探していたため、シンボリックリンクが機能しないようでした。

(試行錯誤によって)最終的に機能することがわかったのは、ターミナルのコマンドを使用して$ PATHをMonoフレームワークに設定することでした。

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

私はプログラマーでもコーダーでもないので(少なくとも長い間OS Xでは使用していません)、これにより、モノを使用してDuplicatiを実行することができました(最初にそれが欲しかった理由です)これがこれを解決する正しい方法であるかどうか、またはこれをまったく行う必要があるかどうかを確認してください。実際のプログラミングの経験がある人は、コメントしたり明確にしたりできますか?

6
fredgeorge

El Capitanは、特定のシステムディレクトリを「ルートレス」モードで保護するようになりました(別名、システム整合性保護)。コマンドls -lO/System/Library/LaunchDaemonsを実行すると、その下のディレクトリとファイルが「制限付き」としてマークされていることがわかります。

次のようにルートレスモードを無効にできます。

  1. 復旧モードで再起動します(再起動してCmd-Rを押し続けます)
  2. ターミナルを開く
  3. 次のコマンドを使用します:csrutil disable

再起動して、El Capitanより前に機能していたコマンドを実行します

  1. Mono最新バージョンをインストールします。

完了したら、同じ手順に従ってSIPを再度有効にすることを強くお勧めしますが、手順3でcsrutil enableを使用します。

Pear/peclモジュールとmacports/homebrewアプリをインストールしようとしたときに、同じ根本原因で問題が発生しました。通常、これらのファイルは/ usr/includeおよび/ usr/libにインストールする必要がありますが、これらも制限されています。

注:この問題についてのインターネットに関する以前の回答では、NVRAM設定を変更する方法を説明していますが、AppleはEl CapitanのパブリックリリースでNVRAM方式が機能しなくなると述べました。 GMリリースではすでにNVRAMの回避策が無効になっているため、この回答により、前進するために必要なものが得られるはずです。

3
anilreddy

クイックサマリー:Atm、モノフレームワークインストーラーは、rootにインストールした場合にのみ正しく機能します。 /Library/Frameworks/Mono.framework/Versions/Current/Commands$PATHに自動的に追加しますが、/Library/Frameworks/Mono.framework/Versions/Current/bin/を手動で追加する必要があるかどうか、またはすべてが正常に機能するかどうかはわかりません。 (Commandsbinへのシンボリックリンクですが、それでも動作しない場合があります)

さらに詳しく:最近、MonoFramework-MDK-4.8.0.520.macos10.xamarin.universal.pkgからmonoをインストールしました。ルートの代わりに/Volumes/osxapps/にインストールしましたが、インストールはすべてがルートにあることを期待していました。 /Library/Frameworks/Mono.framework/Versions/Current/Commands$PATHに追加しましたが、/Library/Frameworks/Mono.framework/のすべては空のディレクトリでした。すべてのファイルは/Volumes/osxapps/Library/Frameworks/Mono.framework/.にありました

さらに、Commandsを含む/Volumes/osxapps/Library/Frameworks/Mono.framework/にあるものの多くは、フォルダーではなくシンボリックリンクであり、フォルダーがルートにあると予想されるため機能しませんでした。例:すべてがルートにインストールされている場合、/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~/で、コマンド/実行可能ファイルを実行できましたが、ルートにあることを期待しているため、すべてエラーで終了しました。

フォルダーを/Volumes/osxapps/Library/Frameworksから/Library/Frameworks/にコピーしました。これですべてのエラーが解決し、正常に機能していますが、Mono.frameworkのコピーが2つあり、ルートにインストールしたくありませんでした。なぜなら、ルートはssd上にあり、スペースが限られているためです。

より良い解決策は、 このページ の下部にある指示に従ってmonoをアンインストールしてから、rootに再インストールすることです。

ただし、/Volumes/osxapps/にインストールすることをお勧めしますが、それを実行する最善の方法はわかりません。 (おそらくシンボリックリンクの束を再作成できます)。ルートにインストールしないと、インストーラーがすべてをマックアップすることをモノプロジェクトに伝えるつもりでしたが、それを行う最善の方法はわかりません。そのため、代わりに、私がここで学んだことをここに投稿しました。

1
FragmentalStew

古いバージョンをインストールしてみてください。 3.4.0はOSX(10.10.5)で動作します。

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

0
anilreddy