deb 패키지 기본 파일 - 하모니카 3.0
개요
해당 문서는 apt 저장소에 올릴 수 있는 deb 패키지 최소버전을 공유하기 위한 문서입니다.
데비안 소스 패키지 제작
소스 패키지는 아래와 같이 바이너리 패키지와는 다른 디렉토리 구조로 구성됩니다.
그림과 같이 최상위 디렉토리에 debian 디렉토리가 있고 그 안에 배포에 필요한 설정 파일들이 존재하고, 실제 사용자에게 배포하고 싶은 프로그램은 최상위 디렉토리에 준비합니다.
각 파일의 설명은 다음과 같습니다.
- debian/source/format : 소스 패키지의 원하는 형식 (현재 하모니카 에서는 3.0 (native) 또는 3.0 (quilt) 를 사용) - https://www.debian.org/doc/manuals/maint-guide/dother.en.html#sourcef
- debian/changelog : 프로그램의 변경된 이력을 기록 (date -R 명령어의 결과를 파일 내 수정된 시간으로 사용합니다) - https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#changelog
- debian/compat : debhelper 버전을 설정 (하모니카 SUN 에서는 10를 사용)
- debian/control : 패키지에 대한 메타 데이터 (의존성이 요구되는 패키지, 프로그램 설명 등)
- debian/copyright : 프로그램 배포 라이선스
- debian/install : 최상위 디렉토리에서 사용자에게 배포하기 위하여 복사 될 디렉토리를 정의합니다. (아래 이미지의 경우 usr, etc 를 입력)
- debian/postinst : 패키지 설치 후 해야할 일을 정의
- debian/rules : deb 패키징 순서에 따라 사용되는 파일. (실행권한 필요)
- 프로그램 디렉토리 : 사용자에게 배포하고 싶은 프로그램 (현재 디렉토리를 설치할 사용자의 / 로 생각하고 그 하위 디렉토리를 포함하여 구성),
- 이 때 실행 프로그램은 usr/local 디렉토리가 아닌 다른 구조에 실행할 파일을 구성해야 합니다
보다 자세한 내용은 아래 예제 프로젝트를 다운로드 받아서 참고하시기 바랍니다.
이 예제는 윈도우 시작메뉴에 프로그램으로 등록되는 형태의 데비안 소스 패키지의 구성을 포함하고 있으며
또한 polikit 기반의 프로그램 실행 권한을 제어하는 부분도 포함하고 있으므로 루트 권한을 요구하는 데스크탑 프로그램의 예로 참고할 수 있습니다.
다운로드 받은 파일의 압축을 해제한 뒤 디렉토리 안에서 apt build 를 실행하면 다음과 같이 패키지가 자동으로 생성됩니다.
패키지 생성과정에 키 관리자가 비밀번호를 묻는 창이 뜨는데 키가 없는 경우에는 취소를 누르고 진행할 수 있습니다.
만약 서명없이 빌드를 하고 싶은 경우에는 아래와 같이 사용할 수도 있습니다.
dpkg-buildpackage -us -uc -ui -i
그 외 debmake , debuild 등을 이용한 방법은 www.debian.org/doc/manuals/debmake-doc/ch04.en.html를 참고하시기 바랍니다.
패키지 기본 파일
위의 파일은 deb 패키지 빌드를 위한 최소한의 요구조건에 부합하는 패키지 파일 입니다.
해당 파일을 다운 받은 뒤 압축을 해제합니다.
해당 문서는 hamonikr-pcchecker 패키지를 기반으로 하고 있습니다.
패키지 폴더 내에서 아래의 명령어를 입력하면 deb 패키지가 생성 됩니다.
# 빌드하기
apt build
# output
dpkg-buildpackage: info: 원본 패키지 hamonikr-pcchecker
dpkg-buildpackage: info: 원본 버전 0.0.1
dpkg-buildpackage: info: source distribution bionic
dpkg-buildpackage: info: 다음에 의해 원본 변경되었습니다 HamoniKR <pkg@hamonikr.org>
dpkg-buildpackage: info: 호스트 아키텍처 amd64
dpkg-source --before-build hamonikr-pcchecker
fakeroot debian/rules clean
dh clean
dh_clean
dpkg-source -b hamonikr-pcchecker
dpkg-source: info: using source format '3.0 (native)'
dpkg-source: info: building hamonikr-pcchecker in hamonikr-pcchecker_0.0.1.tar.xz
dpkg-source: info: building hamonikr-pcchecker in hamonikr-pcchecker_0.0.1.dsc
debian/rules build
dh build
dh_update_autotools_config
fakeroot debian/rules binary
dh binary
dh_testroot
dh_prep
dh_install
dh_installdocs
dh_installchangelogs
dh_perl
dh_link
dh_strip_nondeterminism
dh_compress
dh_fixperms
dh_missing
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package 'hamonikr-pcchecker' in '../hamonikr-pcchecker_0.0.1_all.deb'.
dpkg-genbuildinfo
dpkg-genchanges >../hamonikr-pcchecker_0.0.1_amd64.changes
dpkg-genchanges: info: including full source code in upload
dpkg-source --after-build hamonikr-pcchecker
dpkg-buildpackage: info: full upload; Debian-native package (full source is included)
signfile hamonikr-pcchecker_0.0.1.dsc
gpg: keybox '/home/ji/.gnupg/pubring.kbx' created
gpg: skipped "HamoniKR <pkg@hamonikr.org>": No secret key
gpg: dpkg-sign.U66M9i73/hamonikr-pcchecker_0.0.1.dsc: clear-sign failed: No secret key
dpkg-buildpackage: error: failed to sign .dsc file
※ dpkg-buildpackage: error: failed to sign .dsc file 에러는 개발을 위한 싸인 키가 등록되지 않아서 발생합니다.
테스트 빌드 후 생긴 파일을 확인 후 삭제합니다.
# debian 폴더 안에 생긴 파일 삭제
rm -r debian/.debhelper/
rm -r debian/hamonikr-pcchecker
rm debian/hamonikr-pcchecker.substvars
rm debian/debhelper-build-stamp
rm debian/files
# build 파일 확인
ls
# output
hamonikr-pcchecker hamonikr-pcchecker_0.0.1.tar.xz hamonikr-pcchecker_0.0.1_amd64.buildinfo
hamonikr-pcchecker_0.0.1.dsc hamonikr-pcchecker_0.0.1_all.deb hamonikr-pcchecker_0.0.1_amd64.changes
# 삭제
rm ./*
# output
rm: './hamonikr-pcchecker'를 지울 수 없음: 디렉터리입니다
# 확인
ls
# output
hamonikr-pcchecker
패키지명 변경하기
# 변경 필요한 파일
vi debian/changelog
vi debian/control
# 폴더가 추가된 경우 수정할 파일 - var 폴더가 추가되었다고 가정
vi debian/install
# 추가내용
# ex) 설치할폴더 설치할 경로
var /