데비안 패키징으로 업스트림 소스 아카이브에서 두 개의 패키지를 생성하는 방법은 무엇입니까? 개의 패키지를 생성하는 것이 좋습니다. 꾸러미 패키지-

PPA를 위해 포장하고 있습니다. 업스트림 소스는 .tar.gzMakefile 기반 의 아카이브입니다.

이 패키지는 상당한 양의 아키텍처 독립적 데이터를 가지므로 빌드 스크립트가 두 개의 패키지를 생성하는 것이 좋습니다.

  • 꾸러미
  • 패키지- 데이터

이것을 어떻게 설정할 수 있습니까? 데비안 control파일을 편집 하여 두 개의 패키지를 생성했지만 올바른 파일을 올바른 패키지로 가져 오는 방법을 모릅니다.

데이터 파일은 현재 Makefile을 통해 모두 설치되어 있기 때문에 여기서 잃어 버렸습니다.



답변

이것은 항상 문서가 부족하다는 것을 알게 된 곳입니다. 다른 패키지에서 어떻게 수행되는지 살펴보면 이것이 어떻게 작동하는지 배웠습니다. 데비안 패키징의 대부분의 경우와 같이 몇 가지 방법이 있습니다. 가장 간단한 방법은 debian/package.install파일 을 사용 하는 것입니다. 다음은 내가 작업 한 패키지의 예입니다 (상상력 (bzr branch)) .

먼저에서 패키지를 만들어야합니다 debian/control. 3 개의 스탠자가 있습니다. 소스 패키지와 바이너리 패키지마다 하나씩. foo-data 패키지는이어야합니다 Architecture: all. 또한 상상력에 따라 다릅니다 imagination-common (= ${source:Version}).

다음으로 debian/imagination.install파일 을 만듭니다 . 여기에는 상상력 패키지에서 끝내려는 특정 파일 또는 경로가 포함됩니다. 이 패키지에는 모든 아키텍처 종속 파일이 필요합니다. 데스크탑 파일은 Exec:라인 에서 호출하는 이진 파일과 함께 말할 필요가 있으므로 포함됩니다 .

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

debian/imagination-common.install파일 을 만들어야 합니다. 여기에는 모든 아키텍처 독립 파일, 이미지, 번역, 문서 등이 포함됩니다.

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install 실제로 여기에서 일어나는 일을 설명합니다.

여러 바이너리 패키지를 빌드하는 큰 패키지가있을 수 있습니다. 업스트림 Makefile을 사용하여 모든 파일을 debian / tmp에 설치 한 다음 dh_install을 사용하여 디렉토리와 파일을 적절한 패키지 빌드 디렉토리에 복사 할 수 있습니다.

“적절한 패키지 빌드 디렉토리”의 의미는 빌드 프로세스가 끝날 때 결과에있는 모든 것이에서 foo.deb발견된다는 것입니다 src/debian/foo. 끝나는 파일은에서 foo-data.deb찾을 수 있습니다 src/debian/foo-data. 마찬가지로 debian/rules본질적으로 단지 메이크, 당신은 동일한 결과를 가져 오는 그래서 다른 방법을 상상하기 시작할 수 있습니다.