Skip to main content

Debian package advanced


패키지의 목적, 구성 언어 등이 다양하기 때문에 패키지를 만드는 방식도 다양합니다. 모든 방법을 알 수는 없지만 debhelper(dh)와 debian/rules의 역할을 통해 흐름을 알 수 있습니다.

debhelper

debhelper는 dh dh_<command> 명령어로 데비안 패키지를 만들어주는 툴입니다.

dh 명령어에 의해 dh_<command> 명령어가 정해진 순서로 실행됩니다.

dh <sequence> [options]
  • <sequence>
    • clean
    • build, build-arch, build-indep
    • binary, binary-arch, binary-indep
    • patch(optional)

패키지를 만들 때 일반적으로 아래와 같은 순으로 진행됩니다.

cd <package>
sudo dh clean
sudo dh build
sudo dh binary

dh_<command>

dh_<command>dh명령에 의해 호출됩니다. dh명령어에 의해 호출되는 명령어의 순서를 확인하기 위해 아래 명령어를 사용하면 됩니다.

dh <command> --no-act
$ dh clean
dh_testdir
dh_auto_clean
make distclean
dh_clean
$ dh build
dh_testdir
dh_update_autotools_config
dh_auto_configure
dh_auto_build
make
dh_auto_test
$ dh binary
dh_testroot
dh_prep
dh_installdirs
dh_auto_install
make install DESTDIR=/<path>/debian/<package>
dh_install
dh_installdocs
dh_installchangelogs
dh_installexamples
dh_installman
dh_installcatalogs
dh_installcron
dh_installdebconf
dh_installemacsen
dh_installifupdown
dh_installinfo
dh_installinit
dh_installmenu
dh_installmime
dh_installmodules
dh_installlogcheck
dh_installlogrotate
dh_installpam
dh_installppp
dh_installudev
dh_installgsettings
dh_bugfiles
dh_ucf
dh_lintian
dh_gconf
dh_icons
dh_perl
dh_usrlocal
dh_link
dh_installwm
dh_installxfonts
dh_strip_nondeterminism
dh_compress
dh_fixperms
dh_missing
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

debian/rules

명령어 실행을 수정하고 싶은 경우 override_dh_<command>를 타겟으로 설정하면 됩니다.

예를 들어 dh_auto_clean을 생략하고 싶은 경우 아래와 같이 작성하면 됩니다.

#!/usr/bin/make -f

%:
dh $@

override_dh_auto_clean:

dpkg

  • dpkg -c <deb file>: contents
  • dpkg -I <deb file>: info
  • sudo dpkg -i <deb file>: install
  • sudo dpkg -P <package>: purge