FreeBSD 에 mono 5.20 설치

This entry is part 48 of 48 in the series FreeNAS 서버 만들기

이것은 레거시입니다!

mono6.8 이라는 mono 6.8 버전 패키지가 등록되었습니다. mono 에 종속성이 있는 패키지들은 여전히 mono 5.10 패키지인 mono 를 요구하지만, mono 6.8 을 설치하고 mono에 런타임 종속성이 있는 프로그램들을 수동으로 설치해 주면 정상적으로 동작합니다.

미디어서버 1부 : 개념설명과 환경 구성

이 부분을 참고하시길 바랍니다.

이 글은 레거시와 패치 컴파일에 대한 내용 설명을 위해 남겨두지만, 설치 지침은 더 이상 유효하지 않습니다.


 

FreeBSD 의 mono 포트가 신선하지 않습니다!

FreeBSD 의 mono 에 문제가 있습니다. freshport.org 에 따르면 어떤 이유에서인지 mono 가 2020-03-24 19:54:57 이후로 단 한번도 업데이트 되지 않아 latest 와 quarterly 모두 5.10.1.57_3 에 머물러 있는 상황입니다. mono release note 에 따르면 5.x 최신 버전은  5.20.1.19 인데 말입니다!

이에 따라, mono 를 사용하는 여러 프로그램 (sonarr, radarr, jackett, Technitium DNS 등등) 에서 문제가 발생하고 있습니다. 그 중 jackettTechnitium DNS 의 경우는 아예 작동을 하지 않는 상황입니다.

FreeBSD 에 mono 5.20 설치

이를 해결하기 위한 방법은 mono 를 5.20 으로 업데이트 해 주는 것입니다만, port 가 관리되지 않는 상황에서 이를 해결하기 위해서는 좀더 어려운 방법으로 설치를 해야 합니다. 바로 패치를 하는 것이죠.

porttree 업데이트

portsnap fetch extract

포트 트리를 받아오고 압축을 풉니다.

mono 포트로 이동

cd /usr/ports/lang/mono

패치 다운로드 밎 적용

현재 버그질라에 freebsd 의 mono 문제가 올라가 있는 상태입니다. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238089

위 링크에 접속해 제일 위의 패치 (Patch for port of lang/mono 5.20.1.19) 를 받아 줍니다. 현재 시점에서는 이 패치가 가장 최신이나, 이후 달라질 수 있다는 점을 염두에 두시길 바랍니다.

fetch "https://bugs.freebsd.org/bugzilla/attachment.cgi?id=204600" -o mono-patch-5.20.1.19

mono-patch-5.20.1.19 라는 이름으로 패치를 다운로드 받았습니다.

patch -E < mono-patch-5.20.1.19

패치를 적용하였습니다.

Makefile 수정

이대로 컴파일 하면 버전 오류를 띄우며 설치가 되지 않습니다. Makefile 에서 버전을 수정해주도록 합시다.

PORTVERSION= 5.10.1.57

위 문구를 찾아 (5번째 줄에 있을 것입니다.)

PORTVERSION= 5.20.1.19

으로 수정해 줍니다. 버전명은 패치에 따라 바뀔 수 있다는 점 유의하시길 바랍니다.

컴파일을 위한 패키지 설치

컴파일에 필요한 종속성이 무지하게 많아서 그냥 컴파일하면 하루종일 걸립니다. 자기 전에 컴파일을 해 놓으시면 크게 문제가 되지 않는 사항이긴 합니다만, 시간과 전기요금은 중요한 사항이니 필요한 것들을 미리 패키지로 설치해 주도록 합시다.

freshport 에 따르면 아래의 패키지가 필요하다 합니다.

p5-XML-Parser bash cmake bison gmake python3.7 msgfmt Xvfb 8x13O.pcf.gz fonts.alias base xkbcomp autoconf automake libtoolize perl5 py37-pillow ca_root_nss python3.7 libinotify.so libiconv.so libintl.so

이걸 죄다 컴파일 하려고 하면 진짜 한세월 걸립니다.

pkg install p5-XML-Parser bash cmake bison gmake python37 gettext-tools xorg-vfbserver xorg-fonts-miscbitmaps font-alias xkeyboard-config xkbcomp autoconf automake libtool perl5 py37-pillow ca_root_nss libinotify libiconv gettext-runtime

설치해 줍니다. 워낙 많으니 패키지로 설치해도 오래 걸립니다. 커피 한잔 내리고 옵시다.

컴파일

make -DBATCH install clean BATCH="YES"

컴파일을 시작합니다. 위에서 종속성을 설치해 주었으니 보다 빨리 됩니다.

make -DBATCH deinstall reinstall

이전에 설치된 mono 5.10 을 제거하고 mono 5.20 을 재설치 해 줍니다.

패키지 잠금

pkg lock mono

mono 패키지를 잠궜습니다. 이후 mono 를 업데이트하거나 제거할 일이 있다면 unlock 을 해 주고 작업해야 합니다.

마치면서

이렇게 수동으로 처리하는 방법이 현재 유일합니다. 포트가 다시 신선해지기 전까지는 업데이트도 이렇게 수동으로 처리해야 할 듯 합니다.

버그 질라에 이 문제가 올라가 있는 것을 보면, 그리고 패치가 올라가는 것을 보면 이 문제를관리자들이 인지를 하고 있는 상황으로 보입니다. 하지만 정식으로 포트에 적용하는데 애를 먹고 있는 것으로 보입니다. 이는 유지보수 인력이 너무 부족하기 때문으로 보입니다.

그러니 이 이후에도 freebsd 의 mono 포트가 신선해 질 때 까지는 이 글을 대충 1달 간격으로 지속적으로 업데이트 할 것입니다.

참고한 사이트

첫 번째 사이트에서 해답을 얻었습니다.

https://www.truenas.com/community/threads/how-to-manually-upgrade-mono-from-5-10-to-5-20-in-a-freenas-jail.78871/page-4

https://www.freshports.org/lang/mono/

https://www.mono-project.com/docs/about-mono/releases/

시리즈 네비게이션<< InfluxDB 와 Grafana 를 이용한 FreeNAS 모니터링

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다