다음과 같은 데비안 패키지 셸이 있다고 가정해 보겠습니다.
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_install
A) 프로젝트에서 파일을 가져올 수 있는 방법이 있나요 ?
B) 두 개의 명령을 실행 find
하고 바이너리를 debian/tmp
디렉터리에 복사하는 것이 가능합니까?
C) 해킹해서 printf
find 명령을 설치하기 위해 접두사를 추가해야 할까요?../..
답변1
dh_install
일반적으로 패키지의 최상위 디렉터리인 현재 디렉터리에 대한 상대 경로를 가져옵니다. 귀하의 경우에는project_0.0-1
호출find
이 출력되어야 합니다project/path/to/...
.예, 그것도 작동합니다. 내가 추천했다는 것을 알고 있지만
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 {} + \;
나는 이것이 작동하지 않을 것이라고 생각합니다.
(대부분의 경우 메인 빌드가 특정 대상에 바이너리를 설치할 수 있을 것으로 기대하지만 이는 또 다른 논의입니다.)