OS/HamoniKR

deb 패키지 기본 파일 - 하모니카 3.0

LukeHan1128 2020. 12. 16. 20:00
반응형

개요

해당 문서는 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 기반의 프로그램 실행 권한을 제어하는 부분도 포함하고 있으므로 루트 권한을 요구하는 데스크탑 프로그램의 예로 참고할 수 있습니다.

deb-source-pkg-example.zip
0.03MB

 

다운로드 받은 파일의 압축을 해제한 뒤 디렉토리 안에서 apt build 를 실행하면 다음과 같이 패키지가 자동으로 생성됩니다.

 

패키지 생성과정에 키 관리자가 비밀번호를 묻는 창이 뜨는데 키가 없는 경우에는 취소를 누르고 진행할 수 있습니다.

 

만약 서명없이 빌드를 하고 싶은 경우에는 아래와 같이 사용할 수도 있습니다.

dpkg-buildpackage -us -uc -ui -i

 

그 외 debmake , debuild 등을 이용한 방법은 www.debian.org/doc/manuals/debmake-doc/ch04.en.html를 참고하시기 바랍니다.

 

 

 

 

패키지 기본 파일

hamonikr-pcchecker.tar.gz
0.05MB

위의 파일은 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 /

 

반응형