Debconf
Debconf는 데비안 패키지 설정 관리 시스템입니다. 패키지는 Debconf를 이용해 패키지를 설치할 때 질문을 합니다.
Categories
Non interactive mode
DEBIAN_FRONTEND=noninteractive
환경변수를 지정하면 된다.
How to use
우선, 빌드할 파일을 모아놓을 디렉토리 및 파일 구조를 만든다.
# 빌드할 대상을 모아놓을 작업 디렉토리:
mkdir pkg-build-essential
# 데비안 패키지 설정 디렉토리 및 파일들:
mkdir pkg-build-essential/DEBIAN
touch pkg-build-essential/DEBIAN/control
touch pkg-build-essential/DEBIAN/preinst
touch pkg-build-essential/DEBIAN/postinst
# 위에서 작성한 DEBIAN 디렉토리 외의 모든 디렉토리는 패키지 설치시 root 디렉토리 밑에 그대로 복사된다.
mkdir pkg-build-essential/usr
mkdir pkg-build-essential/usr/local
mkdir pkg-build-essential/usr/local/bin
mkdir pkg-build-essential/usr/local/lib
mkdir pkg-build-essential/usr/local/include
dh_make를 사용하면 데비안 패키징을 위한 디렉토리 생성을 대화식으로 진행할 수 있다.
control
파일을 작성한다.
Package: pkg-build-essential
Version: 1.3.4
Section: devel
Priority: optional
Architecture: all
Depends: build-essential, subversion, openjdk-7-jdk, libmysqlclient-dev, libmysql++-dev,
libcurl4-openssl-dev,libjson0, libjson0-dev, libjsoncpp0, libjsoncpp-dev, python-twisted-core,
flex, cmake
Recommends: libjson0-dbg, python-mysqldb
Maintainer: Developers <[email protected]>
Homepage: http://kukuta.tistory.com
Description: Server Development base library install package
1.0.1 : bug fetch..#1
1.1.1 : bug fetch..#2
1.2.0 : bug fetch..#3
여러 줄에 걸쳐 내용을 적어야 할 때는 두번째 줄부터 tab이나 space같은 공백 문자가 라인의 가장 앞에 있어야 한다.
패키징 작업은 dpkg명령을 사용하면 된다.
작업이 완료되면 pkg-build-essential.deb
파일이 생성된다.
설치는 dpkg -i {패키지경로}
를 사용하면 된다. 하지만 Depends
에 기술된 패키지를 자동으로 다운로드 해주지 않고 그런 패키지가 필요하지만 설치가 안되었다고 에러를 낸다. 의존 관계를 가진 패키지들을 자동으로 설치 되게 하기 위해 gdebi를 사용하면 된다.
아니면 편하게 apt-get으로 그냥 설치하자.
Basic install step
최초 설치시:
$ sudo apt-get install ./answer-pack_1.0.0.deb
Preparing to unpack .../c2pack/answer-pack_1.0.0.deb ...
[new-preinst] install(old-version=1.0.0,new-version=1.0.0)
Unpacking answer-pack (1.0.0) ...
Setting up answer-pack (1.0.0) ...
[postinst] configure(old-version=1.0.0)
업데이트시:
$ sudo apt-get install ./answer-pack_1.0.1.deb
Preparing to unpack .../c2pack/answer-pack_1.0.1.deb ...
[old-prerm] upgrade(new-version=1.0.1)
[new-preinst] upgrade(old-version=1.0.0,new-version=1.0.1)
Unpacking answer-pack (1.0.1) over (1.0.0) ...
[old-postrm] upgrade(new-version=1.0.1)
Setting up answer-pack (1.0.1) ...
[postinst] configure(old-version=1.0.0)
제거시:
$ sudo apt-get remove answer-pack
Removing answer-pack (1.0.1) ...
[prerm] remove()
[postrm] remove()
Troubleshooting
만약 debconf 패키지를 잘못 설정한 경우엔 다음과 같이 재설정할 수 있습니다 :
See also
- gdebi
- apt-get
Favorite site
- 우분투(Ubuntu) 패키지 만들기
- Creating a custom Debian package
- Ubuntu Manpage: debconf - developers guide
- Package: debconf (1.5.73)
- KT한의 정보창고 :: (우분투) 데비안(debian) 패키지(package)- 장고(django) 어플리케이션을 아파치(apache)에서 구동시키기
- Create a Debian package for your Django application