2011. 8. 6. 19:14

♧ 데비안 패키지를 만드는데 사용되는 .deb 파일을 재빌드하면, 현재 사용하고 있는

소프트웨어를 좀 더 유용하게 활용할 수 있다(md5sum 파일을 포함 등…).

 

① 재빌드 하기위해 피캐지 다운로드

$ aptitude download rsync

Get:1 http://ftp.daum.net/ubuntu/ natty/main rsync i386 3.0.7-2ubuntu3 [285 kB]

Fetched 285 kB in 0초 (1,773 kB/s)

 

② 다운로드 받은 .deb 파일에서 패키지 내용과 제어파일들을 풀어 놓는다.

$ sudo dpkg -x rsync_3.0.7-2ubuntu3_i386.deb /tmp/rsync_$RANDOM

$ sudo dpkg -e rsync_3.0.7-2ubuntu3_i386.deb /tmp/rsync_2752/

$ cd /tmp/rsync_2752/

$ ls -lrt

합계 40

-rwxr-xr-x 1  root root    494      2011-04-08 23:31   prerm

-rwxr-xr-x 1  root root    113      2011-04-08 23:31   postrm

-rwxr-xr-x 1  root root    712     2011-04-08 23:31   postinst

drwxr-xr-x 4 root root    4096   2011-04-08 23:32   usr

drwxr-xr-x 4 root root    4096   2011-04-08 23:32   etc

-rw-r--r-- 1   root root    37        2011-04-08 23:32   conffiles

-rw-r--r-- 1  root root     901      2011-04-08 23:32   control

-rw-r--r-- 1  root root    1676    2011-04-08 23:32   md5sums

$RANDOM 디렉토리는 실행 될 때마다 랜덤한 숫자가 출력되므로 사용자마다 다를 것.

/tmp/rsync_<탭키> 누르면 자동으로 찾을 수 있다.

 

③ 새로운 .deb 파일을 만들기 위해서 dpkg의 포맷에 맞는 패키지 디렉토리 구조 설정.

/* rsync_3.0.7.2cn3/DEBIAN이라는 이름의 하위 디렉토리 생성후 설치 파일들을 이동 */

$ sudo mkdir -p rsync_3.0.7-2cn3/DEBIAN

$ sudo mv con* md5sums post* prerm rsync_3.0.7-2cn3/DEBIAN/

/* 또한 etc/와 usr/ 디렉토리 역시 rsync_3.0.7-2cn3로 옮김 */

$ sudo mv usr etc rsync_3.0.7-2cn3/

 

④ 만약 md5sums 파일이 없을 경우 : 이전 챕터(Chap2 #06)에서

[누락된 md5sum 생성 & 체크]를 참조하여 md5sums 파일을 만들어

DEBIAN 하위 디렉토리에 md5sum이라는 이름으로 이동 시킴.

(이는 debsums 검사에 사용할 수 있도록 md5sum 파일을 패키지에 포함시키는 작업)

$ sudo mv /var/lib/dpkg/info/rsync.md5sums rsync_3.0.7-2cn3/DEBIAN/md5sums

 

⑤ 제어 파일을 편집하여 필요한 정보를 변경

$ sudo vi rsync_3.0.7-2cn3/DEBIAN/control

Package: rsync

Version: 3.0.7-2cn3

Architecture: i386

…[중략]…

Description: Modified by CN 2011-08-06 to include md5sums.

fast remote file copy program (like rcp)

…[중략]…

md5sums 파일이 포함된 새rsync 패키지가 기존 패키지와 동일한 버전으로 설치될 경우,

이들 두 버전을 구분할 수 없게 되는 등의 문제가 발생할 수 있다.

이는 시스템 관리 측면에서 매우 큰 문제이다.

따라서 텍스트 편집기(vi등)를 이용해 제어 파일을 열고 Version필드를 변경하도록 한다.

(Version 단어 다음에 콜론이 붙은 형태는 헤더 필드를 의미하므로 변경되지 않도록 주의)

정보 필드는 이러한 헤더 필드 다음에 따라오는데, 패키지 제어 파일 서식은 매우 까다롭기 때문에

콜론 문자 다음에 불필요한 공백문자나 줄 바꿈 문자가 들어가지 않도록 관리한다.

Description: 필드는 패키지에 대해 좀 더 상세한 정보를 제공하는 필드이다.

(fast remote… 구문 바로 이전의 공백문자에 주의.)

이 공백문자는 dpkg가 여러 라인의 헤더와 설명문을 구분할 수 있도록 알려주는 특별한 의미를 가진 포맷이다.

만약 이 설명문이 여러 라인에 걸쳐 기술된다면 모든 라인 앞에 공백문자를 하나씩 입력.

 

⑥ dpkg -b 옵션을 이용해 새로운 패키지를 빌드

$ sudo dpkg -b rsync_3.0.7-2cn3/

dpkg-deb: 경고: 'rsync_3.0.7-2cn3//DEBIAN/control'에 사용자 정의 필드

`Original-Maintainer'이(가) 들어 있습니다

dpkg-deb: 경고: 컨트롤 파일과 관련된 1개 경고를 무시합니다

 

dpkg-deb: `rsync' 패키지 빌드하는 중입니다 (`rsync_3.0.7-2cn3.deb'에서).

☞ (사용자 정의 필드 관련하여 패키지 담당자에 대한 경고 메시지는 무시해도 무방하다)

 

⑦ dpkg -I 옵션을 이용해 새 패키지에 대한 정보 확인

$ dpkg -I rsync_3.0.7-2cn3.deb

new debian package, version 2.0.

size 284678 bytes: control archive= 2121 bytes.

37 bytes, 2 lines conffiles

944 bytes, 21 lines control

1676 bytes, 23 lines md5sums

712 bytes, 30 lines * postinst #!/bin/sh

113 bytes, 8 lines * postrm #!/bin/sh

494 bytes, 30 lines * prerm #!/bin/sh

Package: rsync

Version: 3.0.7-2cn3

Architecture: i386

…[중략]…

 

⑧ 시스템에 새로 만들어진 rsync 패키지를 설치 & 확인

$ sudo dpkg -i rsync_3.0.7-2cn3.deb

dpkg: 경고: rsync 패키지를 3.0.7-2ubuntu3 버전에서 3.0.7-2cn3 버전으로 다운그레이드.

(데이터베이스 읽는중 ...현재 170333개의 파일과 디렉터리가 설치되어 있습니다.)

rsync 3.0.7-2ubuntu3 패키지를 대체할 준비하는 중입니다 (rsync_3.0.7-2cn3.deb 사용) ...

대체되는 rsync 패키지를 푸는 중입니다 ...

rsync (3.0.7-2cn3) 설정하는 중입니다 ...

man-db에 대한 트리거를 처리하는 중입니다 ...

ureadahead에 대한 트리거를 처리하는 중입니다 ...

ureadahead will be reprofiled on next reboot

 

/* md5sum 파일들을 바탕으로 패키지 파일 검사*/

$ debsums rsync

/usr/bin/rsync OK

/usr/share/doc/rsync/examples/rsyncd.conf OK

/usr/share/doc/rsync/examples/logrotate.conf.rsync OK

 

/* 새 버전이 정상적으로 설치되었는지 rsync 패키지 정보 확인 */

$ dpkg -l rsync

희망상태=알수없음(U)/설치(I)/지우기(R)/깨끗이(P)/고정(H)

| 상태=아님(N)/설치(I)/설정(C)/풀림(U)/절반설정(F)/일부설치(H)/트리거대기(W)/

|  /     트리거밀림(T)

|/ 오류?=(없음)/다시설치필요(R) (상태, 오류가 대문자=불량)

||/ 이름 버전 설명

+++-=================-=================-==================================================

ii      rsync                              3.0.7-2cn3                     Modified by CN 2011-08-06 to include md5sums.

☞ 이 실습은 사용자 정의 패키지를 만들기 위한 기본적인 부분만을 다룬 것으로,

시스템 해킹을 위해 필요한 실제 작업내용은 포함하지 않았다. 그렇지만, 다음 예제에서 볼 수 있듯이

이렇게 만들어진 패키지도 역시 보통의 데비안 패키지와 같이 설치되고 동작한다.

물론 추가적으로 debsums 작업도 가능해졌다.

(dpkg가 다운그레이드에 대해 말해주므로 주의)

 

 

데비안 바이너리 패키지 만들기 하우투 문서 :

http://www.tldp.org/HOWTO/Debian-Binary-Package-Building-HOWTO

Posted by devanix