Skip to content

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

sudo apt install mono-devel

패키지 목록

  • 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 컴파일러를 사용하여 컴파일 한다:

csc hello.cs

hello.exe 파일이 생성되면 mono명령으로 실행한다.

mono hello.exe

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로 설치하였다. 그 후, 재설치하여 성공하였다.

See also

Favorite site