Dpkg dh_install: debian/tmp 디렉터리 대신 빌드 디렉터리에서 파일을 복사하시겠습니까?

Dpkg dh_install: debian/tmp 디렉터리 대신 빌드 디렉터리에서 파일을 복사하시겠습니까?

다음과 같은 데비안 패키지 셸이 있다고 가정해 보겠습니다.

project_pkg/
  .git
  project_0.0-1/
     debian/
        install
        ...
     project (git submodule with tagged commit)

다음 설치 파일을 사용하십시오.

// .../debian/install
#!/usr/bin/env bash
find $(pwd)/project/path/to/binaries -type f -executable -printf "$(pwd)/project/path/to/binaries/%f usr/bin\n"

예를 들어 프로젝트에는 패키징하는 데 필요한 모든 파일을 생성하는 make진입점이 있습니다.make -C project build

이제 전체 패키징 프로세스의 제작/빌드 구성 요소가 제대로 작동합니다. 그러나 이상적으로는 설치 폴더에서 설치해야 하는 모든 필수 파일을 찾을 수 있습니다.

이제 프로젝트의 바이너리를 외부 debian/tmp/또는 ./debian/debian/rules

하지만 이를 수행할 수 있는 방법이 있다면 dh_install프로젝트에서 파일을 가져오도록 쉽게 설정할 수 있습니다.

dh_installA) 프로젝트에서 파일을 가져올 수 있는 방법이 있나요 ?

B) 두 개의 명령을 실행 find하고 바이너리를 debian/tmp디렉터리에 복사하는 것이 가능합니까?

C) 해킹해서 printffind 명령을 설치하기 위해 접두사를 추가해야 할까요?../..

답변1

  1. dh_install일반적으로 패키지의 최상위 디렉터리인 현재 디렉터리에 대한 상대 경로를 가져옵니다. 귀하의 경우에는 project_0.0-1호출 find이 출력되어야 합니다 project/path/to/....

  2. 예, 그것도 작동합니다. 내가 추천했다는 것을 알고 있지만 dh_install첫 번째 규칙 debhelper은 여전히 ​​자신에게 적합한 도구라는 것입니다. 건너뛰기가 더 쉽다면 다음을 수행하는 것이 좋습니다.

    override_dh_install:
            install -d debian/package/usr/bin
            find project/path/to/binaries -type f -executable -exec install -t debian/package/usr/bin {} + \;
    
  3. 나는 이것이 작동하지 않을 것이라고 생각합니다.

(대부분의 경우 메인 빌드가 특정 대상에 바이너리를 설치할 수 있을 것으로 기대하지만 이는 또 다른 논의입니다.)

관련 정보