for - ¿Cómo instalar Mono en macOS para que mono funcione en la terminal?
mono project (8)
Actualización (ya que esto sigue recibiendo vistas dos años más tarde):
Las últimas versiones del proceso de instalación de Mono (5.x) crean un archivo (
/etc/paths.d
) en
/etc/paths.d
que contiene la ruta de:
/Library/Frameworks/Mono.framework/Versions/Current/Commands
Entonces
/usr/local/bin
ya no se usa ...
Original
Las versiones más nuevas de mono cumplen con los requisitos de "El Capitan" de no instalar nada en / usr / bin y, por lo tanto, ahora se usa / usr / local / bin . No estoy seguro de qué versión mono 4.x que comenzó en ...
Pero supongo que no tiene / usr / local / bin en su ruta (?), Intente:
export PATH=/usr/local/bin:${PATH}
which mono
which mcs
En mi caso, tengo 4.2.0 instalado:
$ 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 "$@"
Estoy tratando de hacer que una instalación Mono se ejecute en una Mac (OS X versión 10.10.5), y aunque la instalación indica que se completó con éxito, no puedo llamar a mono desde el terminal.
Para instalarlo, ejecuté uninstallMono.sh como root para asegurarme de que no teníamos restos de restos, luego ejecuté MonoFramework-MDK-4.0.4.1.macos10.xamarin.x86.pkg. El instalador pareció completarse con éxito, pero un intento de llamar a mono regresa
-bash: mono: comando no encontrado
El marco mono parece estar instalado:
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
... pero no está presente en
/usr/bin
e intenta encontrar su ejecutable usando
which mono
no devuelve nada.
Después de la primera instalación de Mono Framework con
brew cask
descubrí que
brew
sí ofrece Mono (!)
Desinstalé Mono primero.
$ brew cask uninstall mono-mdk
Y lo instalé usando
brew install mono
y
~/.zshrc
todos los cambios de configuración en
~/.zshrc
.
Parece que es mucho mejor:
$ 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
Primero utilicé
brew cask
para instalar Mono Framework y tuve que agregar
/Library/Frameworks/Mono.framework/Home/bin
a la variable de entorno
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!
Como uso
oh-my-zsh
,
MONO_HOME
en
~/.zshrc
y
~/.zshrc
PATH
consecuencia:
export MONO_HOME=/Library/Frameworks/Mono.framework/Home
export PATH=$MONO_HOME/bin:$PATH
Con ese
mono
está disponible:
$ 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
El Capitan ahora protege ciertos directorios del sistema en modo "sin raíz" (también conocido como Protección de integridad del sistema). Si ejecuta el comando ls -lO / System / Library / LaunchDaemons, verá que los directorios y archivos que se encuentran allí ahora están marcados como "restringidos".
Puede deshabilitar el modo sin raíz de esta manera:
- Reiniciar en modo de recuperación (reiniciar y mantener presionado Cmd-R)
- Abrir una terminal
- Use este comando: csrutil disable
Reinicie y ejecute el comando que funcionó antes de El Capitan
- Instala la última versión de Mono.
Cuando haya terminado, es muy recomendable que vuelva a habilitar SIP siguiendo los mismos pasos, pero usando csrutil enable en el paso 3.
Me encontré con un problema con la misma causa raíz al intentar instalar los módulos pear / pecl y las aplicaciones macports / homebrew. Esos normalmente necesitan instalar archivos en / usr / include y / usr / lib, que ahora también están restringidos.
Nota: Las respuestas anteriores en Internet sobre este problema le dan instrucciones para modificar la configuración de NVRAM, pero Apple declaró que el método NVRAM dejaría de funcionar con el lanzamiento público de El Capitan. La versión de GM ya ha deshabilitado la solución de NVRAM, por lo que esta respuesta debería brindarle lo que necesita para avanzar.
En OS X El Capitan, ejecute lo siguiente en
Terminal
para admitir el comando
mono
export PATH=/Library/Frameworks/Mono.framework/Versions/Current/bin/:${PATH}
Es mejor usar la próxima exportación:
RUTA de exportación = $ RUTA: /Library/Frameworks/Mono.framework/Versions/Current/bin/
- No modificas el orden anterior de PATH (¡es muy importante!)
- Utilizará la versión actual (cuando actualice la versión no es necesario cambiar la variable RUTA)
Otra opción (la mejor opción ) es incluir una nueva línea al final del archivo / etc / caminos con el contenido: /Library/Frameworks/Mono.framework/Versions/Current/bin
En este caso, la ruta estará disponible para todos los usuarios del sistema.
Estuve viendo esta página porque yo también tuve problemas con la instalación de Mono (por primera vez) en El Capitan. Encontré que el marco estaba instalado pero los comandos no se pusieron en / usr / local / bin. No parecía que los enlaces simbólicos funcionaran porque obtendría errores al intentar usar el comando mono y estaba buscando bibliotecas en el lugar equivocado.
Lo que finalmente encontré que funcionó (por prueba y error) fue configurar $ PATH en el marco Mono usando el comando en la terminal:
export PATH=/Library/Frameworks/Mono.framework/Versions/4.2.0/bin/:${PATH}
Como no soy programador ni programador (al menos no por mucho tiempo y nunca en OS X), esto me permitió ejecutar Duplicati usando mono (que era el motivo por el que lo quería en primer lugar), pero no Seguro si esta es la forma correcta de resolver esto o incluso si esto debería hacerse en absoluto. ¿Alguien con experiencia en programación real para comentar o aclarar?
Resumen rápido: Atm, el instalador de mono framework solo funciona correctamente si lo instala en la raíz.
Agregará automáticamente
/Library/Frameworks/Mono.framework/Versions/Current/Commands
a
$PATH
, pero no sé si necesitará agregar
/Library/Frameworks/Mono.framework/Versions/Current/bin/
by mano o si todo simplemente funciona.
(Los
Commands
son un enlace simbólico a
bin
, pero aún puede no funcionar)
Más en profundidad: recientemente instalé mono de
MonoFramework-MDK-4.8.0.520.macos10.xamarin.universal.pkg
.
Lo instalé en
/Volumes/osxapps/
lugar de root, pero la instalación aún esperaba que todo estuviera en root.
Agregó
/Library/Frameworks/Mono.framework/Versions/Current/Commands
a
$PATH
pero todo en
/Library/Frameworks/Mono.framework/
era solo directorios vacíos.
Todos los archivos residían en
/Volumes/osxapps/Library/Frameworks/Mono.framework/.
Además, mucho de lo que estaba en
/Volumes/osxapps/Library/Frameworks/Mono.framework/
incluidos los
Commands
, no eran carpetas, sino enlaces simbólicos que no funcionaban porque esperaban que las carpetas estuvieran en la raíz.
Por ejemplo: si todo se instaló en raíz,
/Library/Frameworks/Mono.framework/Versions/Current/Commands
es un enlace simbólico a
/Library/Frameworks/Mono.framework/Versions/Current/bin
y
/Library/Frameworks/Mono.framework/Versions/Current/
también es un enlace simbólico.
Yo añadí:
export PATH="/Volumes/osxapps/Library/Frameworks/Mono.framework/Versions/4.8.0/bin:$PATH"
a
.bash_profile
, en
~/
, que me permitió ejecutar los comandos / ejecutables, pero todos murieron con errores porque todavía esperaban que las cosas estuvieran en la raíz.
Así que copié la carpeta de
/Volumes/osxapps/Library/Frameworks
a
/Library/Frameworks/
y eso resolvió todos los errores y las cosas funcionan correctamente, pero ahora tengo dos copias de Mono.framework y no quería instalarlo en root en primer lugar, porque root está en un ssd y el espacio es limitado.
Una mejor solución sería desinstalar mono de acuerdo con las instrucciones al final de esta página y luego reinstalarlo en la raíz.
Sin embargo, aún sería mejor, para mí, instalar en
/Volumes/osxapps/
, pero no sé la mejor manera de hacerlo.
(Probablemente podría recrear un montón de enlaces simbólicos).
Iba a decirle al proyecto mono que su instalador estropea todo si no lo instala en la raíz, pero tampoco estoy seguro de la mejor manera de hacerlo.
Entonces, en cambio, he publicado aquí, con lo que he aprendido hasta ahora, con la esperanza de que pueda ayudar a alguien más.
intente instalar la versión anterior. 3.4.0 está funcionando para mí OSX (10.10.5) ..
http://origin-download.mono-project.com/archive/3.4.0/macos-10-x86/