개요
Debian Package란 *.deb 확장자를 가지는 파일로 윈도우의 *.msi 와 같은 프로그램 설치를 위한 파일 이다.
데비안 패키지(.deb)는 dpkg 라는 패키지 관리 도구에 의해 관리 유지 되며,
dpkg는 데비안, 우분투, 칼리, 민트 등 기타 많은 배포판에서 사용되는 패키지 관리 도구이다.
.deb 파일은 데비안 패키지이지만 실제로는 표준 유닉스 아카이브(.ar) 파일일 뿐이다.
나중에 다루겠지만 apt역시 dpkg를 사용해서 만든 고급 관리도구 이다.
인스톨된 패키지 확인
현재 자신의 리눅스 장비에 설치된 패키지를 확인해 보자.
dpkg -l #
List installed packages apt list --installed # List installed packages
|
패키지 만들기(Create a package)
1. BASE 디렉토리 만들기
먼저 패키지를 새롭게 만들려면 BASE 디렉토리를 만든다.
이 디렉토리는 안에는 메타데이터 및 패키지 내용이 저장 된다.
- <패키지 이름>_<버전>-<리비전>
Example: devpack_1.0.0-1
$ mkdir devpack_1.0.0-1
|
2. DEBIAN/control 파일 만들기
여기서 (DEBIAN) 디렉토리는 하나의 특수 파일로 무조건 있어야 하는 디렉토리 이다.
이 디렉토리는 안에는 control 및 script 파일이 존재하며, 여기서 만드는 control 파일은 제어파일로
패키지에 대한 중요 정보를 제공하는 파일이다. (Debian control file fields)
Package: devpack Section:non-free Priority:optiona |
- Package
패키지 이름을 적는다.
소문자로만 이루어 져야하며, (_) 대신 (-) 를 사용한다.
- Version
패키지의 버전을 명시함.
apt 서버(repository) 및 설치 서버의 내부 DB에서 관리 됨으로 잘 관리 해야함
- Architecture
amd64/i386 으로 구분됨, 그냥 amd64를 쓰면 됨
- Maintainer
자식의 이름(닉네임), 연락처 혹은 메일 기입
- Description
aptcache 나 aptitude 로 패키지 search 를 했을때 Package 이름과 함께 설명으로 출력 되는 부분
- Depends 필드는 생성할 패키지가 가지는 의존성을 기록한다.
없어도 되는 옵션 필드이지만 자주 사용된다.
기입한 패키지 및 버전 조건이 맞지 않으면 설치되지 않거나 설치 및 업데이트를 시도한다.
ex) mysqld ( >= 10.0.0.1) : mysql 패키지가 10.0.0.1 이상이여야 함
ex) tomcat ( = 6.0.0) : tomcat 패키지가 반드시 6.0.0 이여야 함
DEBIAN/control 파일까지만 만들면 최소한의 패키지 구성이 된다.
# Minimum required structure for a package |
devpack-1.0.0/ # Directory |
3. DEBIAN/conffiles
conffiles에 명시된 파일들은(절대경로) 패키지를 제거 할 때 (dpkg -r, --remove) 혹은 업데이트 할 경우
명시된 파일들을 삭제 하거나 덮어쓰지 못하게 합니다.
conffiles에 명시된 파일은 dpkg -P, --purge에 의해서만 삭제 됩니다.
Example :
/etc/myconf.ini |
4. DEBIAN/script 구성
패키지 설치 전(preinst), 설치 후(postinst), 삭제 전(prerm), 삭제 후(postrm)에 구동 되는
스크립트로 (스크립트 작동 방식 설명) script를 이용해 좀 더 다양하게 구성이 가능하다.
DEBIAN/preinst
패키지내 포함된 파일을 서버에 설치하기 전에 실행 되는 스크립트
스크립트 아규먼트로 install/upgrade를 받을 수 있다.
Example :
#!/bin/bash ############################################################ case "$1" in upgrade) *) esac
|
DEBIAN/postinst
패키지내 포함된 파일을 서버에 설치한 후에 실행 되는 스크립트
스크립트 아규먼트로 configure/upgrade를 받을 수 있다.
DEBIAN/prerm
패키지 삭제 전 실행 되는 스크립트
스크립트 아규먼트로 upgrade/remove를 받을 수 있다.
Example :
#!/bin/bash ############################################################ case "$1" in remove) *) esac
|
DEBIAN/postrm
패키지 삭제 후 실행 되는 스크립트
스크립트 아규먼트로 remove/purge를 받을 수 있다.
remove - 설정 파일을 제외한 바이너리 파일 삭제.
purge - 설정 파일까지 모두 삭제.
remove 후 재설치를 하면 기존 설정 대로 재사용이 가능 하지만, purge 후 재설치 하면 설정을 다시해야한다.
Example :
#!/bin/bash ############################################################ case "$1" in purge) *) esac
|
5. 패키지 내용 구성
BASE 디렉토리 밑으로 원하는 패키지 내용을 구성 한다.
일반적으로 패키지 구성으로 라이브러리, 문서, 환경파일, 실행 프로그램, systemd service등으로 구성 될 수 있다.
Example:
- /usr/local/bin
- /usr/share/man
- /etc/
- /usr/local/lib
- /usr/local/include
패키지 빌드(Build)
패키지 구성을 완료 하였다면 다음과 같이 빌드를 진행해 보자.
자세한 내용은 (dpkg-deb manpage)를 참조 한다.
dpkg-deb
-b ${패키지구성요소디렉토리명} ${패키지명}_{패키지버전}.deb
Example:
# ls -l total 4 drwxr-xr-x 4 root root 4096 Aug 15 02:51 devpack_1.0.1
# dpkg-deb --build devpack_1.0.1 dpkg-deb: building package `devpack' in `devpack_1.0.1.deb'.
# dpkg-deb --build devpack_1.0.1 devpack_1.0.1.deb dpkg-deb: building package `devpack' in `devpack_1.0.1.deb'. |
'Linux > System administration' 카테고리의 다른 글
스왑(Swap) 파일 생성 (0) | 2018.11.02 |
---|---|
NTP 시간 동기화 (1) | 2017.06.27 |
리눅스를 USB에 넣어 설치해 보자! :: Penvdrivelinux (4) | 2011.06.02 |
[Backtrack5] 한글 설정 하기. (0) | 2011.05.29 |
하나의 디스크에 여러 리눅스 패키지 설치. (0) | 2011.05.27 |