2009-11-15 2 views
5

저는 MonoDevelop를 사용하여 C#으로 작성된 취미 프로젝트를 가지고 있습니다. 나는 지금 리눅스 패키징에 대해 머리 숙여 노력하고 있었지만, 나는 계속 좌절하고 압도 당했다. 내 프로그램에 의해 생성 된 데이터와 함께 물건을 수행MonoDevelop을 사용하여 Linux 응용 프로그램을 어떻게 패키지화합니까?

  • 라이브러리 프로젝트 ("발전기") :

    내 프로그램으로 구성되어 있습니다.

  • Gtk #을 사용하는 ui ("인터페이스") 프로젝트. 이 프로젝트에는 "glade"(위젯을 만들기 위해 gtk에서 사용하는 xml 파일)와 "book"(내 프로그램에서 사용하는 데이터)이라는 두 개의 하위 디렉토리가 있습니다.
  • 라이브러리 프로젝트와 인터페이스 프로젝트에서 모두 사용되는 유틸리티 프로젝트 ("Utils").
  • 인터페이스를 시작하는 주 프로젝트 ("MyProgramName"). (내 생각) 내가하고 싶은 정말 매우 간단 무엇

(내 생각) :

  • 하는 내 응용 프로그램
  • 복사 한 .exe 및 .dll 파일을 (컴파일/usr/지방에/빈?)
  • 복사 "책"디렉토리 (에/usr/지방/빈?)
  • 복사 "빈 터"디렉토리 (에/usr/지방/빈?)

아, 그리고 이것을 .deb 패키지로하고 싶습니다. 나는 tarball을 작동시킬 수 있다면 .deb 패키지가 너무 곤란하지 않아야한다고 생각하지만 결국 그렇게하고 싶다.

나는 아직도 어떻게하는지 잘 모른다. MonoDevelop를 사용하여 Tarball을 만들었습니다. tarball (./configure, make, sudo checkinstall)을 설치하면 실행 코드를 설치하고 프로그램을 실행하는 명령을 만드는 것처럼 보이지만 "book"및 "glade"디렉토리는 잊어 버릴 수 있습니다.

어떻게해야합니까? 이 질문이 기본/광범위한 질문 인 경우 죄송합니다. 나는 이것에 대해 주변에서 인터넷 검색을 해왔고, 패키징의 기본 사항을 알고 있다고 생각하지 않는 것을 찾지 못하고있다.

답변

4

데비안 패키지는 tar 파일과 비슷합니다. 파일 시스템에는 파일 시스템의 사본이 들어 있습니다. 데비안 패키지를 만들려면 ...

  1. 빌드 디렉토리에 타르볼을 설치하십시오.
  2. 제어 파일과 함께 DEBIAN 디렉토리를 추가하십시오. 나는 this article 도움이 된 것을 발견했다.
  3. dpkg --build으로 패키지를 만듭니다.

나는 GMT의 autotools : autoconf와 automake를 배우기 시작했다. 그들은 빌드 디렉토리에 프로그램을 설치하는 것을 매우 쉽게 만듭니다. 당신은 ./configure을 언급했습니다. 그래서 저는이 프로젝트가 이미 구조를 가지고 있다고 가정합니다. 프로젝트가해야 할 수도 있습니다 같이 설명에서, 그것은 "책"과 "잎"에 파일을 ... configure.in 에서

  • 항목 소리.
  • Makefile."book"과 "glade"에있는 파일.

다음 명령을 실행하면 project.deb이라는 패키지 파일이 생성됩니다.

 
# ./configure --prefix build/usr 
# make && make install 
# dpkg --build build project.deb 
3

아마도 this blog post이 도움이 될 수 있습니다.

그것은 철저하게 다음과 같이있는 뎁 패키지의 구조에 대해 설명합니다

  • : 기본적으로

    <YOUR PACKAGE NAME> 
    └── deb 
        ├── DEBIAN 
        │ ├── conffiles 
        │ ├── control 
        │ └── preinst 
        └── opt 
         └── <YOUR APPLICATION> 
          └── <Your Application Contents> 
    

    을, 당신은 내부에 다음이 개 필수 폴더와 패키지 내부 뎁 폴더가 DEBIAN - deb 패키지 자체를 설명하는 파일을 포함합니다.

  • 패키지 시스템의 대상을 미러링하여 설치합니다. 위의 예에서 패키지는 /opt/<YOUR APPLICATION> 디렉토리에 배포됩니다.

DEBIAN 디렉토리에서 일반 텍스트 인 control 파일이 있어야합니다. 링크 된 페이지에 자세히 설명 된 특정 형식의 항목을 포함해야합니다.

Package:packagingmono 
Version:1.0 
Maintainer:Mikael Chudinov <[email protected]> 
Architecture:amd64 
Section:net 
Description:Template for Debian packaged Mono application. 
Depends:mono-complete (>=3) 
  • Package이 패키지 이름이어야합니다 : 다음은 샘플 제어 파일 (거기에서 촬영) 단순한 예입니다. 허용되는 것은 위/아래 라틴 문자, 숫자 및 -입니다.
  • Version - 패키지 버전 해당 필드에 어셈블리 버전을 사용하는 것이 좋습니다.
  • Maintainer - 패키지 개발자 이름 및 연락처 정보.
  • Architecture - i386 또는 amd64입니다. x86 및 x64 용으로 최적화 된 응용 프로그램을 플랫폼 당 별도의 실행 파일로 배포하려면 (AnyCPU를 사용하지 않고 x64 또는 x86 용으로 명시 적으로 빌드 된 것을 의미 함) 각각에 대해 별도의 .deb 패키지를 생성하고 Architecture 필드를 적절하게 설정해야합니다. 나머지 필드는 여전히 동일 할 수 있습니다.
  • Section - 선택 사항은 debian 시스템에서 allowed package categories 일 수 있습니다.
  • Description. 두 개의 토큰으로 구성됩니다 - 짧은 설명 (새 행 기호 앞의 첫 번째 항목)과 선택적으로 더 긴 항목 (첫 번째 새 행 뒤의 텍스트).
  • Depends - 패키지에 대한 종속성 목록입니다. 이 예는 3

    중요한 것은이 DEB 패키지에 대해 알고

는 당신이 실제로 (전체 응용 프로그램을 넣을 수 있다는 것입니다 모노 런타임에 대한 패키지 이름입니다 mono-complete을 명시하고, 더 나아가 버전으로 높거나 같도록 제한 bin 폴더의 내용)을 하나의 패키지에 저장합니다. 참조 된 라이브러리를 별도의 패키지에 넣고이를 종속성으로 표시 할 필요가 없습니다. 동일한 라이브러리에 의존하는 다른 응용 프로그램을 설치하려는 경우 후자가 적합합니다. 게다가, 응용 프로그램을 함께 포장 dll - 지옥 문제가 언젠가는 패키지 - 지옥 문제가 될 수 없습니다. 단점은 패키지의 크기가 커질 수 있다는 것입니다.

또한이 기사에서는 패키지를 만드는 데 도움이되는 몇 가지 기본 GNU/Linux 도구를 권장합니다. 예를 들어 xbuild을 사용하면 패키지를 수행 할 MSBuild 파일을 실행할 수 있습니다. 이렇게하면 Windows 개발자가 익숙하게 만들 수 있습니다. lintian 도구는 생성 된 .deb 파일의 문제를 해결하는 데 도움을 줄 수도 있습니다. 나머지 도구는 MSBuild 패키징 프로세스 중에 호출되는 중간 유틸리티입니다.

+0

@ 모그다드, 사실, 당신은 요점이 있습니다. 불행하게도 나는 여행하는 동안 나의 전화에서 대답하고 있었다. 그래서 나는 게시를 풍성하게하는 데 제한된 능력을 가지고 있었다. 나는 지금 그것을 업데이트 했으므로 downvote를 제거 할 수있다. –

+0

내 downvote가 아님; 나는 왜 당신이 그 (것)들을 얻을지 왜 설명하고 있었다 - 그러나 나는 나의 코멘트를 제거 할 것이다, 행동을 취해서 감사. 행운을 빕니다! (추신 : 귀하의 휴대 전화에 7 년 된 질문에 대답하기 위해 서둘러야 할 필요가 없습니다 ... OP가 진행되었습니다.) – Mogsdad

+1

Thanks @ Mogsdad, 그리고 downvote만큼 나쁘다는 증거가 없으므로 유감으로 죄송합니다. 또는 심지어 더. 나는 그 문제의 날짜가 내가 마지막으로 알아 차린 것 중에 하나라는 것을 인정해야한다. 그 전날 데비안 패키지에 들어간 이래로 나는 여전히 과장된 상태에서 대답하기로 결심했다. 관련 정보는 쉽게 찾을 수 있었다. 잘 지내기를 바랍니다. –

관련 문제