dpkg .deb 파일 이름 생성

dpkg .deb 파일 이름 생성

우리는 데비안 패키지로 출시하는 소프트웨어 프로젝트를 가지고 있습니다. 프로젝트에는 가 포함된 debian/ 폴더가 있습니다 changelog compat control copyright rules. 다음 명령을 사용하여 debian 패키지를 만듭니다.

dpkg-buildpackage -us -uc -b --changes-option=-u./dist

출력 스트림을 인쇄합니다. 프로세스의 다음 단계에서 우리가 알아야 할 것은 생성된 .deb 파일의 이름뿐입니다.

나는 데비안이 예측 가능한 파일 이름 구조를 가지고 있다는 것을 알고 있지만 [package name]_[version]_[architecture].deb어쨌든 이러한 매개변수를 얻을 수 있는 방법이 없습니다.

debian 폴더를 검색하여 가능한 패키지 이름을 생성할 수 있는 또 다른 dpkg 명령이 있어야 합니까?

답변1

지적하신 대로 생성된 .deb파일은 모두 공통 형식인 ${package}_${version}_${arch}.deb.

패키지 이름은 Package:;의 항목에서 유래합니다. debian/control전체 빌드의 경우 각 항목에 대해 하나의 파일이 .deb생성됩니다 . Package:다음을 사용하여 값을 검색할 수 있습니다.

awk '/^Package:/ { print $2 }' debian/control

버전의 기본값은 debian/changelog에 지정된 값입니다. 다음을 사용하여 추출할 수 있습니다.

dpkg-parsechangelog -S version

(빌드는 다른 버전을 지정할 수 있지만 이는 일반적이지 않습니다.)

결국 아키텍처는 all( Architecture: all패키지의 경우) 또는 빌드 시스템의 기본 아키텍처(다른 경우에는 Architecture:일반적 으로 Architecture: any)가 됩니다. 다음을 사용하여 빌드 시스템의 아키텍처를 결정할 수 있습니다.

dpkg-architecture -qDEB_BUILD_ARCH

(엄밀히 말하면 이어야 -qDEB_HOST_ARCH하지만 일반적으로 BUILD와 는 HOST동일합니다. 여기서도 크로스 컴파일을 무시합니다. 문제가 되면 DEB_TARGET_ARCH대신 을 사용하세요 DEB_BUILD_ARCH.)

control따라서 완전히 일반적인 솔루션의 경우 어떤 패키지가 어떤 아키텍처에 적용되는지 확인하기 위해 파일을 구문 분석해야 합니다 . control파일이 하나의 패키지만 빌드하는 경우에는 이것이 필요하지 않습니다.

dpkg-parsechangelog포장으로 dpkg-architecture제공됩니다 dpkg-dev.

답변2

이것은dpkg 이름:

$dpkg-name foo.deb
dpkg-name: info: moved 'foo.deb' to './feature-dev_1.4.177_armhf.deb'

fooDEBIAN/ 상위 디렉토리에서 가져온 원래 이름

관련 정보