저는 업스트림 tarball/git 브랜치의 두 부분으로 구성된 패키지를 데비안으로 만들 생각입니다:
- 사용자 공간 바이너리 및 라이브러리, 버전 1.5.0(
foobard
바이너리 패키지) - 커널 모듈, 버전 0.8.5(
foobar-dkms
)
문제는 버전이 다르다는 것입니다. 이 경우 하나의 소스 패키지에서 두 가지 다른 버전의 바이너리 패키지를 빌드하는 합리적이고 올바른 방법이 있습니까?
MODULE_VERSION
가능하다면 두 개의 소스 패키지를 생성하거나 두 패키지를 모두 1.5.0으로 버전화하는 것(모듈이 소스에 올바르게 지정되어 있음에도 불구하고)보다 더 깔끔한 것을 원합니다 .
답변1
데비안의 바이너리 패키지 버전은 다음 요소에 의해 결정됩니다.dpkg-gencontrol
, 결국 바이너리 패키지에 나타나는 최종 제어 파일을 생성합니다. 이 -v
옵션은 버전 번호를 지정합니다. 기본적으로 버전 번호는 에서 가져오지만 debian/changelog
재정의될 수 있습니다.
아카이브에 이에 대한 몇 가지 예가 있습니다. 예를 들어 내 자신을 참조하세요.gcc-mingw-w64
자체(소스) 버전 번호가 있지만 버전이 기본 패키지 gcc-source
(현재) 와 병합된 바이너리 패키지를 생성하는 패키지gcc-7-source
) 버전 번호 및 소스 패키지 번호. 따라서 Debian 9에서 gcc-mingw-w64
버전 19.3은 버전 6.3.0-18+19.3의 바이너리 패키지를 생성합니다.
단일 소스에서 다양한 버전의 다양한 바이너리 패키지를 빌드하려면 이 옵션을 이 옵션(처리할 패키지 지정) -v
과 결합하여 필요한 만큼 여러 번 실행할 수 있습니다 (예: 래퍼 중 하나).-p
dpkg-gencontrol
dh_gencontrol
아카이브에는 이를 보여주는 패키지가 하나 이상 있습니다.android-sdk-meta
android-sdk
두 가지 다른 버전 (소스 버전 사용)과 바이너리 버전이 포함된 네 가지 다른 패키지 로 바이너리 패키지를 빌드합니다.debian/rules
.
데비안 정책제어 필드 장소스 제어 파일과 바이너리 제어 파일의 차이점에 대한 자세한 내용입니다.
답변2
피진 예제를 확인할 수 있습니다. 단일 소스에서 libpurple0, pidgin, pidgin-data, pidgin-dev, pidgin-dbg, finch, finch-dev, libpurple-dev, libpurple-bin 패키지를 생성합니다.
소스 가져오기:
http://packages.debian.org/squeeze/pidgin
[pidgin_2.7.3-1+squeeze2.dsc] [pidgin_2.7.3.orig.tar.bz2] [pidgin_2.7.3-1+squeeze2.debian.tar.gz]
빌드를 제어하는 파일은 debian/rules입니다. 자세한 내용은 다음을 방문하십시오.
http://www.debian.org/doc/debian-policy/ch-source.html
http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.html
답변3
Debian 및 Ubuntu 패키지에서는 버전이 debian/changelog
파일에 지정되어 있으며 소스 패키지에서 생성된 모든 패키지가 정확히 동일한 버전을 갖도록 설계되었습니다.