다양한 Debian 기반 배포판에 대해 동일한 소스 코드 패키지 빌드

다양한 Debian 기반 배포판에 대해 동일한 소스 코드 패키지 빌드

동일한 소스에서 다양한 버전과 배포판에 대한 여러 .deb 패키지를 빌드하고 싶습니다. 소스코드가 완전히 동일하더라도 종속성 및 배포판 이름이 다르기 때문에 debian 폴더의 일부 파일을 공유할 수 없습니다.

그래서 각 버전/릴리스에 대해 여러 개의 "debian" 디렉터리를 만들고 패키지를 빌드할 때 검색할 위치를 지정하고 싶습니다. 가능합니까?

참고로 저는 debuild 명령을 사용하여 .deb 패키지를 빌드하고 있습니다.

답변1

다른 브랜치를 사용하는 것도 하나의 접근 방식이며, 적절한 경우 @mestia의 답변에 대한 편집을 제안할 수 있습니다(하지만 계속 읽어보시기 바랍니다...).

또 다른 방법은 서로 다른 파일을 나란히 저장하는 것입니다.태양광예를 들어.

그러나 두 방법 모두 중요한 단점이 있습니다. 즉, Debian이나 Ubuntu(또는 기타 파생 제품)의 패키지에서는 작동하지 않습니다. 나중에 배포판에 패키지를 설치할 계획이라면 동일한 파일 세트가 다양한 배포판에서 올바른 결과를 생성하는 방식으로 패키지해야 합니다.

이에 대한 예는 다음을 참조하세요.Solar의 데비안 패키징(전체 공개: 포장은 내가 만들었습니다.)

일반적인 아이디어는 dpkg-vendorDebian과 Ubuntu에서 서로 다른 종속성을 갖는 debian/rulesSolar 의 경우 배포가 무엇인지 묻는 것입니다.

derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no")

그리고 dh_gencontrol필요에 따라 "substvars"를 채우기 위해 더 아래로 재정의합니다.

override_dh_gencontrol:
ifeq ($(derives_from_ubuntu),yes)
        dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme-full | oxygen-icon-theme-complete' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme-full
else
        dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme | oxygen-icon-theme' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme
endif

그러면 적절한 변수가 채워집니다 debian/control.

Package: solaar
Architecture: all
Depends: ${misc:Depends}, ${debconf:Depends}, udev (>= 175), passwd | adduser,
 ${python:Depends}, python-pyudev (>= 0.13), python-gi (>= 3.2), gir1.2-gtk-3.0 (>= 3.4),
 ${solaar:Desktop-Icon-Theme}

그리고

Package: solaar-gnome3
Architecture: all
Section: gnome
Depends: ${misc:Depends}, solaar (= ${source:Version}),
 gir1.2-appindicator3-0.1, gnome-shell (>= 3.4) | unity (>= 5.10),
 ${solaar:Gnome-Icon-Theme}

테스트를 사용하면 debian/rulesmakefile에서 수행할 수 있는 모든 작업을 제어할 수 있습니다. 즉, makefile을 대체 파일과 결합할 수 있습니다(예: 패키지 빌드에서 해당 파일을 사용하기 전에 해당 파일을 연결).

답변2

어쩌면 git-buildpackage다른 지점에 다른 데비안 디렉토리를 유지할 수도 있습니다.

관련 정보