데비안 패키지를 빌드할 때 bash 명령을 넣을 위치

데비안 패키지를 빌드할 때 bash 명령을 넣을 위치

을 사용하여 데비안 패키지를 빌드해야 합니다 sbuild. 패키지에 자동으로 해결될 수 없는 종속성이 있습니다. 특히 종속성은 이미 사용 가능한 새 버전이 있는 버전을 가리키지만 이전 버전을 고수해야 합니다. 결과적으로 이러한 종속성 설치가 실패하고 전체 빌드가 실패합니다. debian/control거기에 필요한 버전을 표시하여 문제를 해결할 수 없다는 말을 들었습니다 (참조:https://askubuntu.com/questions/1379523/install-specific-package-version-through-meta-package).

나는 manual 을 사용하여 이러한 종속성을 계속 설치할 수 있다는 것을 알았습니다. apt-get install dep1=x.y.z따라서 올바른 버전의 종속성을 설치하지 못하게 하는 것은 패키지 빌드 중 종속성 해결 메커니즘일 뿐입니다. apt-get종속성을 구문 분석하고 해결하기 전에 필요한 버전에 종속성을 설치하는 사용자 정의 bash 명령을 삽입하려면 어떻게 해야 합니까 ? debian/control재정의하려고 생각 중인데 debian/rules이러한 사용자 정의를 위해 파일에 다른 위치가 있는 것이 아닐까요?debian/*

답변1

결정한 대로 엄격한 버전 종속성은 debian/control여기서 도움이 되지 않습니다.

제목의 일반적인 질문에 대답하기 위해 데비안 패키지 빌드의 셸 명령은 debian/rules파일로 이동하거나 거기에서 호출됩니다. 예를 들어 debian/rules(스타일 사용 dh) 에서는 다음과 같습니다 .

override_dh_auto_build:
        # your shell commands here ...
        dh_auto_build
        # ... or here

이제 다양한 오버레이 스타일 등을 사용할 수 있습니다 execute_after_....

그러나 이 경우에도 도움이 되지 않습니다. 패키지 빌드가 빌드 중에 다른 패키지를 설치(또는 제거)하는 것이 허용되지 않기 때문입니다. debian/control(또는 소스 패키지의 처리 결과 debian/control)은 빌드 종속성을 완전히 지정해야 하며, 그러면 빌드 도구( pbuilder등)가 이를 충족할 수 있습니다 sbuild.그 다음에빌드가 시작됩니다. 패키지에 있는 어떤 것이든 명령을 실행할 기회가 생기면 너무 늦습니다.

내가 아는 한, 별도의 패키지로 장면을 처리하는 유일한 방법은저장소필요한 패키지의 특정 버전을 포함시킨 다음 빌드 컨텍스트에서 사용할 수 있도록 만드세요. 이는 또한 결과 바이너리 패키지를 설치하는 데 필요한 런타임 종속성을 제공합니다.

또 다른 방법은 종속성을 제공하는 것입니다.그들의콘텐츠소스 패키지에 추가하고 빌드를 적절하게 조정하세요.

관련 정보