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