우분투 포장 가이드

선적 서류 비치

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 가 작업을 수행하도록 할 것입니다. 소스 폴더의 이름을 바꾸려면 - 형식으로되어 있어야하며 여기서 packagename은 소문자 여야합니다. 이 경우, 타르볼을 푸는 것만으로 올바르게 명명 된 소스 디렉토리가 생기므로 다음 디렉토리로 이동할 수 있습니다 :

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 프로그램은 그다지 복잡하지는 않습니다. "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 , copyrightrules 파일 만 있어야합니다. "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- hellohello로 대체하고 이름을 debhelper (> = 4.0.0) 를 소스 패키지의 Build-Depends 필드에 추가하는 것입니다. hello-debhelper 용 우분투 패키지는 다음과 같습니다 :

우분투 hello-debhelper 패키지의 저작권 파일과 postinstprerm 스크립트는 "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_installdocsdh_installchangelogs ) 설치 및 빌드 후 정리 ( dh_clean )가 자동으로 처리되는 것과 같은 작업 . hello 보다 훨씬 복잡한 많은 패키지는 debhelper 스크립트가 대부분의 작업을 처리하기 때문에 더 큰 규칙 파일을 가지고 있지 않습니다. debhelper 스크립트의 전체 목록은 " debhelper 스크립트 목록"섹션을 참조하십시오. 그것들은 각각의 페이지에 잘 설명되어 있습니다. 위의 rules 파일에서 사용 된 각 도우미 스크립트에 대한 맨 페이지 (잘 쓰여 있고 길지는 않습니다)를 읽는 것이 좋습니다.