Как установить Mono на macOS, так моно работает в терминале?
Я пытаюсь установить Mono, установленную на Mac (OS X версии 10.10.5), и, хотя установка устанавливает, что она выполнена успешно, я не могу вызывать моно из терминала.
Чтобы установить его, я запустил 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
ничего не возвращает.
Ответы
Ответ 1
Новые версии mono соответствуют требованиям "El Capitan", которые не устанавливают ничего в /usr/bin, и теперь используется /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 "[email protected]"
Обновить (так как это все еще получает просмотры спустя два года):
Последние версии процесса установки Mono (5.x) создают файл mono-commands
) в /etc/paths.d
, который содержит путь:
/Library/Frameworks/Mono.framework/Versions/Current/Commands
Итак, /usr/local/bin
больше не используется...
Ответ 2
В OS X El Capitan запустите следующую команду Terminal для поддержки команды mono
export PATH=/Library/Frameworks/Mono.framework/Versions/Current/bin/:${PATH}
Ответ 3
Лучше использовать следующий экспорт:
export PATH = $PATH:/Library/Frameworks/Mono.framework/Versions/Current/bin/
- Вы не изменяете предыдущий порядок PATH (он очень
важно!!)
- Вы будете использовать текущую версию (при обновлении
в версии нет необходимости изменять переменную PATH)
Другим вариантом (лучший вариант) является включение новой строки в конец файла /etc/paths с содержимым:
/Library/Frameworks/Mono.framework/Versions/Current/bin
В этом случае путь будет доступен для всех пользователей в системе.
Ответ 4
Я смотрел эту страницу, потому что у меня тоже были проблемы с установкой Mono (впервые) на El Capitan. Я обнаружил, что фреймворк установлен, но команды не были помещены в /usr/local/bin. Символирование их, похоже, не сработало, потому что я получал ошибки при попытке использовать команду mono и искал библиотеки в неположенном месте.
Что я, наконец, нашел работаемым (методом проб и ошибок), установил $PATH в среду Mono с помощью команды в терминале:
export PATH=/Library/Frameworks/Mono.framework/Versions/4.2.0/bin/:${PATH}
Так как я не программист или кодер (по крайней мере, не надолго и никогда не на OS X), это позволило мне запустить Duplicati с помощью моно (именно поэтому я и хотел его в первую очередь), но я Не уверен, что это правильный способ решить эту проблему или даже если это вообще нужно сделать. Кто-нибудь, у кого есть опыт программирования, чтобы прокомментировать или уточнить?
Ответ 5
El Capitan теперь защищает определенные системные каталоги в режиме "без корней" (защита целостности системы a.k.a.). Если вы запустите команду ls -lO/System/Library/LaunchDaemons, вы увидите, что находящиеся там каталоги и файлы теперь помечены как "ограниченные".
Вы можете отключить режим без rootless, например:
- Перезагрузитесь в режим восстановления (перезагрузите и удерживайте Cmd-R)
- Откройте терминал
- Используйте эту команду: csrutil disable
Перезагрузите и запустите команду, которая работала до El Capitan
- Установите последнюю версию Mono.
Когда вы закончите, настоятельно рекомендуется повторно включить SIP, выполнив те же действия, но используя csrutil enable на шаге 3.
У меня возникла проблема с одной и той же первопричиной, пытаясь получить модули pear/pecl и приложения macports/homebrew. Обычно требуется установить файлы в /usr/include и/usr/lib, которые также теперь ограничены.
Примечание. Предыдущие ответы в Интернете об этой проблеме дают инструкции по изменению настроек NVRAM, но Apple заявила, что метод NVRAM перестанет работать с публичной версией El Capitan. Релиз GM уже отключил обходной путь NVRAM, поэтому этот ответ должен помочь вам в продвижении вперед.
Ответ 6
После первой установки Mono Framework с помощью brew cask
я обнаружил, что 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
Ответ 7
Краткое описание:
Atm, установщик mono framework работает правильно, если вы установите его в root. Он автоматически добавит /Library/Frameworks/Mono.framework/Versions/Current/Commands
в $PATH
, но я не знаю, нужно ли вам добавить /Library/Frameworks/Mono.framework/Versions/Current/bin/
вручную или если все просто работает. (Commands
является символической ссылкой на bin
, но она все еще может не работать)
Более подробно:
Недавно я установил mono из MonoFramework-MDK-4.8.0.520.macos10.xamarin.universal.pkg
. Я установил его вместо /Volumes/osxapps/
вместо 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
, не было папками, а символическими ссылками, которые не работали, потому что они ожидали, что папки будут в корне. Например: если все было установлено в корне,
/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, и я не хотел, чтобы она была установлена в корневом каталоге в первом потому что root находится на ssd, а пространство ограничено.
Лучшим решением было бы удалить моно в соответствии с инструкциями внизу на этой странице, а затем переустановить на root.
Однако мне все же было бы лучше установить на /Volumes/osxapps/
, но я не знаю, как лучше это сделать. (Возможно, я мог бы просто воссоздать кучу символических ссылок). Я собирался рассказать о монопроекте, который их установщик заманивает, если вы не устанавливаете его на root, но я не уверен, что это лучший способ сделать это. Итак, вместо этого я разместил здесь, с тем, что я узнал до сих пор, в надежде, что он может помочь кому-то другому.
Ответ 8
попробуйте установить более старую версию.
3.4.0 работает для меня OSX (10.10.5)..
http://origin-download.mono-project.com/archive/3.4.0/macos-10-x86/