Skip to content

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명령을 사용하면 된다.

$ dpkg -b pkg-build-essential

작업이 완료되면 pkg-build-essential.deb파일이 생성된다.

설치는 dpkg -i {패키지경로}를 사용하면 된다. 하지만 Depends에 기술된 패키지를 자동으로 다운로드 해주지 않고 그런 패키지가 필요하지만 설치가 안되었다고 에러를 낸다. 의존 관계를 가진 패키지들을 자동으로 설치 되게 하기 위해 gdebi를 사용하면 된다.

$ sudo apt-get update
$ sudo apt-get install gdebi-core
$ sudo gdebi pkg-build-essential.deb

아니면 편하게 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 패키지를 잘못 설정한 경우엔 다음과 같이 재설정할 수 있습니다 :

$ dpkg-reconfigure PACKAGE-NAME

See also

Favorite site

Man page