선적 서류 비치
Debhelper로 포장하기
[중대한]
요구 사항 : "처음부터 패키징"이라는 섹션의 요구 사항과 debhelper 및 dh-make
꾸러미 (packager)로서 이전 섹션에서했던 것처럼 처음부터 꾸러미를 만드는 일은 거의 없을 것입니다. 상상할 수 있듯이 rules 파일의 많은 작업과 정보는 패키지와 공통입니다. 패키징을보다 쉽고 효율적으로 수행하려면 debhelper 를 사용하여 이러한 작업을 수행 할 수 있습니다. Debhelper는 패키지 빌드 프로세스를 자동화하는 Perl 스크립트 세트 ( dh_ 접두사)입니다. 이 스크립트를 사용하면 데비안 패키지를 만드는 것이 아주 간단 해집니다.
이 예제에서는 GNU Hello 패키지를 다시 빌드 하겠지만 이번에는 우분투 hello-debhelper 패키지 와 비교할 것입니다. 다시 작업 할 디렉토리를 만듭니다.
mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir 우분투 cd 우분투
그런 다음 우분투 소스 패키지를 얻으십시오.
apt-get 소스 hello-debhelper cd ..
앞의 예제와 마찬가지로, 우리가해야 할 첫 번째 일은 원래 (업스트림) 타르볼을 푸는 것입니다.
tar -xzvf hello-2.1.1.tar.gz
이전 예제에서와 같이 상류 타르볼을 hello_2.1.1.orig.tar.gz 에 복사하는 대신 dh_make 가 작업을 수행하도록 할 것입니다. 소스 폴더의 이름을 바꾸려면
cd hello-2.1.1
소스의 초기 "데비안 화"를 만들기 위해 dh_make 를 사용할 것입니다.
dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz
dh_make는 일련의 질문을합니다.
패키지 유형 : 단일 바이너리, 다중 바이너리, 라이브러리, 커널 모듈 또는 cdbs? [s / m / l / k / b] s
유지 관리자 이름 : Captain Packager 전자 메일 주소 : packager@coolness.com 날짜 : 2006 년 4 월 6 일 10:07:19 -0700 패키지 이름 : hello 버전 : 2.1.1 라이센스 : 비어 있음 패키지 유형 : 단일확인 : Enter
[주의]
dh_make -e를 한 번만 실행하십시오. 처음 실행 한 후에 다시 실행하면 제대로 작동하지 않습니다. 변경하거나 실수를하려면 원본 디렉토리를 제거하고 업스트림 타볼을 새로 압축 해제하십시오. 그런 다음 원본 디렉터리로 마이그레이션하고 다시 시도 할 수 있습니다.
dh_make -e를 실행하면 다음 두 가지 작업을 수행합니다.
- 상위 디렉토리에 hello_2.1.1.orig.tar.gz 파일을 작성하고,
- debian / 과 필요한 많은 템플릿 파일 (.ex)에 필요한 기본 파일을 만듭니다.
Hello 프로그램은 그다지 복잡하지는 않습니다. "Packaging From Scratch"섹션에서 보았 듯이 패키징에는 기본 파일을 훨씬 넘는 패키지가 필요하지 않습니다. 따라서 .ex 파일을 제거합시다.
cd debian rm * .ex * .EX
안녕하세요 .
* 라이센스
README.Debian (프로그램의 README가 아닌 특정 데비안 문제에 대한 README 파일), dir ( dh_installdirs 가 필요한 디렉토리를 만드는 데 사용), docs (프로그램 설명서를 설치하기 위해 dh_installdocs 에서 사용) 또는 info ( dh_installinfo 에서 정보를 설치하는 데 사용) 파일) 파일을 debian 디렉토리에 복사 합니다. 이러한 파일에 대한 자세한 내용은 "dh_make 예제 파일"을 참조하십시오.
이 시점에서 debian 디렉토리에 changelog , compat , control , copyright 및 rules 파일 만 있어야합니다. "Packaging From Scratch"섹션에서 새로운 파일은 compat 입니다.이 파일은 debhelper 버전 (이 경우 4)이 포함 된 파일입니다.
이 패키지의 이름이 hello가 아닌 hello-debhelper 라는 것을 반영하기 위해이 경우 changelog를 약간 조정해야합니다.
hello-debhelper (2.1.1-1) dapper; 긴급함 = 낮음 * 초기 배포 - Captain Packager목, 2006 년 4 월 6 일 10:07:19 -0700
debhelper 를 사용하면, 우리가 제어 할 필요가있는 것은 hello- hello 를 hello로 대체하고 이름을 debhelper (> = 4.0.0) 를 소스 패키지의 Build-Depends 필드에 추가하는 것입니다. hello-debhelper 용 우분투 패키지는 다음과 같습니다 :
우분투 hello-debhelper 패키지의 저작권 파일과 postinst 및 prerm 스크립트는 "Packaging From Scratch"섹션 이후로 변경되지 않았으므로 복사 할 수 있습니다. rules 파일을 검사하여 검사 할 수도 있습니다.
cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.
마지막으로 살펴 봐야 할 파일은 규칙입니다 . 여기서 debhelper 스크립트의 힘을 볼 수 있습니다. debhelper 버전의 규칙 은 다소 작습니다 ( "rules"섹션의 버전에서 72 행과 반대되는 54 행).
debhelper 버전은 다음과 같습니다.
CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean : dh_testdir dh_clean rm -f 빌드 - $ distclean install : 빌드 dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (패키지) / usr \ mandir = $ (CURDIR) / debian / $ (패키지) / usr / share / info \ install build : / usr / share / man / infodir = $ (CURDIR) / debian / (CC) "CFLAGS ="$ (CFLAGS) "
touch build binary-indep : install #이 패키지에 의해 생성 된 # 파일은 아키텍처 독립적 인 파일이 아닙니다. 어떤 것이 있다면 여기에 # 할 것입니다. binary-arch : install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a 변경 로그 dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binary : binary-indep binary- arch .PHONY : 바이너리 바이너리 - 아치 바이너리 - 독립 clean checkroot
올바른 디렉토리 ( dh_testdir )에 있는지 테스트하고, 루트 권한 ( dh_testroot )을 사용하여 패키지를 빌드하고, 문서 ( dh_installdocs 및 dh_installchangelogs ) 설치 및 빌드 후 정리 ( dh_clean )가 자동으로 처리되는 것과 같은 작업 . hello 보다 훨씬 복잡한 많은 패키지는 debhelper 스크립트가 대부분의 작업을 처리하기 때문에 더 큰 규칙 파일을 가지고 있지 않습니다. debhelper 스크립트의 전체 목록은 " debhelper 스크립트 목록"섹션을 참조하십시오. 그것들은 각각의 맨 페이지에 잘 설명되어 있습니다. 위의 rules 파일에서 사용 된 각 도우미 스크립트에 대한 맨 페이지 (잘 쓰여 있고 길지는 않습니다)를 읽는 것이 좋습니다.