리눅스에서 닷넷하기: MonoDevelop의 Packaging 기능

MonoDevelop를 이용하여 새로운 프로젝트를 만들 때 Packaging 기능을 이용하여 소스 코드를 재배포하거나, 바이너리를 재배포하는 작업을 편리하게 할 수 있다는 것을 지난번 강좌를 통하여 확인하였습니다. 그런데 Packaging 옵션이 굉장히 다양한 것을 볼 수 있었는데 이들 옵션이 실제로 어떻게 적용되는지 살펴볼 필요가 생겼습니다.


사용자 삽입 이미지


지난 번과 마찬가지로 새 프로젝트를 만들어보기로 합니다. 기존 솔루션에 새로운 프로젝트를 추가하는 방법도 좋습니다. 양쪽 모두 Packaging을 비롯한 추가 옵션을 묻는 대화 상자가 나타나도록 되어있습니다.


사용자 삽입 이미지


각각의 특성을 알아보기 위하여 Packaging 옵션으로 선택할 수 있는 모든 것들을 다 선택해보겠습니다. 다른 부분들은 체크하지 마시고 OK 버튼을 클릭하시면 Packaging 프로젝트와 함께 새로운 C# 프로젝트가 생성될 것입니다.


사용자 삽입 이미지


위의 그림에서 보듯이 오른쪽 화면의 솔루션 트리뷰에 Packages라는 이름의 Packaging 프로젝트가 새로 생성된 것을 보실 수 있습니다. 이름이 정형화되어있어서 마치 예약된 기능처럼 보여지지만 Packaging 프로젝트는 같은 솔루션 안에서 개수의 제한 없이 얼마든지 추가할 수 있습니다. 그리고 이 프로젝트 아래에 다양한 Sub Item들이 추가된 것을 볼 수 있습니다. 이제 이 각각의 아이템들을 살펴보기로 합니다.


사용자 삽입 이미지


Linux Binaries 항목을 오른쪽 버튼으로 클릭하고 속성을 살펴보니 위와 같은 대화 상자가 나타납니다. 프로젝트가 생성하는 EXE나 DLL 파일 (Visual Studio에서는 이것을 프로젝트 출력 (Project Output)이라는 말로 표현하고 있었습니다.)을 플랫폼 별로 구분하여 배포할 수 있게 한 것이 보입니다.


사용자 삽입 이미지


여기서 선택한 대상 플랫폼이 현재 버전의 Mono나 MonoDevelop에서 정확한 의미를 가지는 것은 아닙니다. 하지만 향후 개발 계획에 따라서 Mono나 MonoDevelop가 특정 OS에만 국한되는 내용이 들어있지는 않은지 판정하거나 하는 데 이용될 수 있습니다. 그리고 현 시점에서 우리는 특정 OS에만 국한되는 내용을 걸러내기 위한 목적으로 이러한 기준들을 이용하고 프로젝트에서 선택할 수 있습니다.


사용자 삽입 이미지


이제 그 옆에 있는 프로젝트 선택 탭을 클릭해 보기로 하겠습니다. C#이나 다른 프로젝트를 여기서 추가할 수 있는데, 같이 배포하기를 희망하는 프로젝트 노드 앞에 체크 박스를 클릭하면 됩니다.


사용자 삽입 이미지


마지막으로 파일 탭을 클릭해보기로 합니다. 앞서 선택한 프로젝트 내에 속하는 파일들 중 실제로 포함할 파일들만 선택적으로 여기서 다시 설정할 수 있습니다. Linux와 Windows 플랫폼을 나누어서 배포해야 한다면, 이 탭을 이용하여 리눅스 버전에서만 사용할 수 있는 C# 모듈이나 라이브러리 따로, Windows 버전에서만 사용할 수 있는 C# 모듈이나 라이브러리 따로 관리하도록 하면 됩니다.


사용자 삽입 이미지


실제로 다른 프로젝트를 추가해보기로 하겠습니다. 파일 탭에 선택한 내용이 나타날까요?


사용자 삽입 이미지


잘 보이는군요. 🙂


사용자 삽입 이미지


이번엔 Source Packaging 항목을 살펴보기로 하겠습니다. File Format을 클릭하니 크게 세 가지 형식을 고를 수 있도록 되어있습니다. 우선, MonoDevelop IDE (지금 우리가 사용하고 있는 IDE입니다.) 파일 포맷을 선택할 수 있습니다. 그리고 Windows 환경에서 Visual Studio를 대신하여 널리 사용되는 오픈 소스 기반 .NET IDE인 SharpDevelop용 파일 포맷이 보입니다. 마지막으로, Visual Studio용 Solution 파일 포맷도 됩니다. 이전에 언급한대로 Visual Studio용 Solution 파일 포맷의 경우 msbuild에서도 로드하여 사용할 수 있다고 하였습니다.


사용자 삽입 이미지


소스를 묶어서 압축 파일로 만들 때 사용할 포맷도 지정할 수 있습니다. tar, tar.gz, tar.bz2, zip 포맷이 지원되는 것을 볼 수 있습니다.


사용자 삽입 이미지


그리고 마지막으로 Tarball 파일을 보기로 합니다. Tarball 파일은, 자동화된 것은 아니나, Windows 환경에서 사용하는 MSI 파일이나 CAB 파일과 마찬가지로 Linux 환경에서 소스 코드를 빌드하고 시스템에 설치할 수 있도록 도움을 주는 고유한 Installer입니다. 소스까지 같이 제공하므로 오픈 소스 정신에도 가까운 것입니다. Tarball 파일 안에 들어갈 Makefile에 대한 설정을 지정할 수 있는데, 일단 디버그 빌드와 릴리즈 빌드 중에서 선택이 가능합니다. 그리고 Autotools 기반인지, 편집하기에 용이한 일반 Makefile을 만들것인지도 선택할 수 있습니다.


사용자 삽입 이미지 


새로운 패키지를 생성하거나 추가할 때 위와 같은 단계별 마법사 대화 상자를 볼 수 있습니다. 그리고 각 패키지 별로 세부 설정을 마법사 수준에서 마찬가지로 지정할 수 있으므로 패키지 설정의 어려움은 없을 것입니다.


다음번에는 Unix Integration이 어떻게 동작하는지에 대한 내용과 Translation을 위하여 사용하는 i18n을 위한 Portable Object 파일을 프로그래밍 방식으로 접근하는 방법에 대해서 살펴보기로 하겠습니다.

댓글 남기기