Mono
모노(Mono)는 C# 컴파일러와 공통 언어 런타임을 필두로 하는 Ecma 표준 및 닷넷 프레임워크 호환 도구를 개발하는 자유 및 오픈 소스 계획으로 현재 노벨에서 이 계획을 지휘하고 있다. 모노는 리눅스, BSD, Mac OS X, 오픈솔라리스를 필두로 하는 다양한 유닉스 계 운영체제에서 이용할 수 있으며 윈도에서도 이용할 수 있다.
사실 마이크로소프트에서 이미 FreeBSD와 Mac OS X에서 실행할 수 있는 Shared Source CLI(코드명 Rotor)라는 .NET 호환 오픈 소스 툴을 내놓은 바 있으나 마이크로소프트에서 이 툴에 적용한 허가서에 상업적 사용을 금한다는 조항이 있어 이 툴은 오픈 소스이기는 하나 자유 소프트웨어는 아니다.
저장소 등록
Ubuntu 20.04 (amd64, armhf, arm64, ppc64el)
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
설치
Install Mono
패키지 목록
-
mono-devel
패키지는 코드를 컴파일하려면 필요하다. -
mono-complete
패키지는 모든 것을 설치한다. 이는 "어셈블리를 찾을 수 없음 (assembly not found)" 오류의 대부분의 경우를 커버해야 합니다. -
mono-dbg
패키지는 프레임워크 라이브러리에 대한 디버깅 기호를 가져오려면 필요하다. 이를 통해 스택 추적에서 줄 번호를 얻을 수 있습니다. -
referenceassemblies-pcl
패키지는 PCL 컴파일 지원을 위해 필요하다. 이렇게 하면 소프트웨어 컴파일 중 "프레임워크가 설치되지 않음: .NETPortable (Framework not installed: .NETPortable)" 오류가 대부분 해결됩니다. -
ca-certificates-mono
패키지는 HTTPS 연결을 위한 SSL 인증서를 얻으려면 필요하다. HTTPS 연결에 문제가 있는 경우 이 패키지를 설치하십시오. -
mono-xsp4
패키지는 ASP.NET 응용 프로그램을 실행 하려면 필요하다.
Mono Basics
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine ("Hello Mono World");
}
}
csc 컴파일러를 사용하여 컴파일 한다:
hello.exe
파일이 생성되면 mono명령으로 실행한다.
Troubleshooting
Gateway Timeout
Ubuntu 20.04 에서 저장소 등록 후 sudo apt install mono-devel
명령으로 설치하다 다음과 같은 문제가 발생했다.
...
0 upgraded, 161 newly installed, 0 to remove and 8 not upgraded.
Need to get 41.4 kB/87.8 MB of archives.
After this operation, 383 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Err:1 https://download.mono-project.com/repo/ubuntu vs-focal/main amd64 libmono-parallel4.0-cil all 6.12.0.122-0xamarin1+ubuntu2004b1
504 Gateway Timeout [IP: 117.18.232.200 443]
E: Failed to fetch https://download.mono-project.com/repo/ubuntu/pool/main/m/mono/libmono-parallel4.0-cil_6.12.0.122-0xamarin1+ubuntu2004b1_all.deb 504 Gateway Timeout [IP: 117.18.232.200 443]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
libmono-parallel4.0-cil_6.12.0.122-0xamarin1+ubuntu2004b1_all.deb
파일만 게이트웨이 타임아웃이 발생하여, 해당 패키지만 직접 받은 후, dpkg로 설치하였다. 그 후, 재설치하여 성공하였다.