해당 프로그램의의 주요 디렉토리로 들어가서 다음을 실행한다:
dpkg-buildpackage -rfakeroot
이 명령어는 모든 작업을 해 줄 것이다. 여러분이 할 일은 PGP 비밀 키를 두번 입력하는 것 뿐이다. 다 끝났으면, 4개의 파일들이 위의 디렉토리(~/debian/)에 새로 만들어 진다:
완전한 이진 패키지이다. 다른 패키지와 마찬가지로 dpkg나 dselect를 사용해 이 패키지를 설치할 수 있다.
이 파일은 원래 소스코드를 묶어 놓은 것이고, 다른 누군가가 패키지를 처음부터 다시 만드려고 할 때 사용한다. 혹은 데비안 패키징 시스템을 사용하지 않는 사람들의 경우에는 이 소스를 받아서 컴파일해야 한다.
이 파일은 소스 패키지 내용의 요약이다. 이 파일은 gentoo-0.9.12/debian/control
파일에서부터 만들어 지고, dpkg-source(1) 프로그램을 이용해서 소스
패키지를 풀 때 사용된다. 이 파일은 PGP로 사인되어 있으므로 사람들은 이 파일을
여러분이 썼다는 걸 확신할 수 있다.
이 압축 파일은 원 소스파일에서 추가한 부분이 "unified diff"라는
형태로 들어 있다. 이 파일은 dpkg-source(1)에서 쓰인다.
이 파일은 현재 패키지 개정판에서 바뀐 모든 것을 기술한다. 그리고 이 정보는 데비안 FTP 아카이브 관리 프로그램에게 넘어가서 적절한 위치로 바이너리와 소스 패키지를 설치하는 데 이용된다. 이 파일의 일부분은 gentoo-0.9.12/debian/changelog 파일과 .dsc 파일에서부터 만들어 진다.
이 패키지에서 작업할 때, 프로그램의 동작 방식은 매번 변할 것이고 새로운
기능들이 계속 추가될 것이다. 여러분의 패키지를 내려받는 사람들은 이 파일을
들여다 보고 무엇이 바뀌었는지를 알 수 있다. 길다란 숫자는 해당 파일의 MD5
체크섬이다. 여러분의 파일을 내려받는 사람은 그 파일들을
md5sum(1)으로 검사해 보고, 그 숫자가 맞지 않았을 때 그 파일이
훼손되었거나 악의에 의해 함부로 고쳐졌다는 걸 알 수 있다. 이 파일은 PGP로
사인되어 있으므로, 사람들은 이 파일을 여러분이 썼다는 사실도 확신할 수 있다.
큰 패키지의 경우, debian/rules를 바꿀 때마다 처음부터 패키지를 빌드하고 싶지는 않을 것이다. 테스트 목적으로, 상위 소스를 다시 빌드하지 않고 다음과 같이 빌드할 수 있다.
fakeroot debian/rules binary
`install' 룰에 `install-stamp' 디펜던시가 없다는 점을 확인한다 (현재 기본적으로 그렇다). 그래야 `dh_clean -k`가 매번 실행된다. 모든 작업이 끝나면 제대로 업로드할 수 있도록 올바른 과정을 통해 꼭 빌드를 다시 해야 한다.
.changes 파일에 대해 lintian(1)을 실행한다; 이 프로그램은 자주
범하는 패키징 실수를 검사해 준다. 명령어는:
lintian -i gentoo_0.9.12-1_i386.changes
물론 여러분의 패키지에서 만들어 지는 changes 파일의 이름을 쓴다. 무슨 애러가 있으면 (E:로 시작하는 줄), 거기에 대한 설명을 (N: 줄) 읽어보고, 실수를 수정하고, 패키지 빌드, 6.1에서 설명된 대로 다시 빌드한다. W:로 시작하는 줄이 있으면, 경고 메세지일 뿐이므로 패키지에 문제가 없다고 해도 좋다 (하지만, 물론 약간 조정할 필요는 있다).
dpkg-buildpackage로 빌드하고 lintian으로 검사하는 과정을
debuild(1) 명령 한 번에 할 수 있다.
패키지 내부를 mc(1)와 같은 파일 관리자로 들여다 보거나
dpkg-deb(1)을 이용해 임시 위치에 압축을 풀어 본다. 바이너리 및
소스 패키지에 필요 없는 파일이 들어가 있지 않는지 검사한다. 그 경우에 무언가
잘못이 있는 것이고 필요없는 파일이 지워지지 않은 것이다. 팁: `zgrep ^+++
../gentoo_0.9.12-1.diff.gz`을 실행하면 소스 파일에서 바뀌거나/추가된 파일을 알
수 있다. 또 `dpkg-deb -c gentoo_0.9.12-1_i386.deb`으로 패키지의 파일 목록을 볼
수 있다.
테스트를 위해 직접 패키지를 설치해 본다 (debi(1) 명령으로). 할 수
있으면 여러분 컴퓨터 이외의 시스템에도 설치해 보고, 무슨 문제가 있는지 살펴
본다.
나중에, 새로운 버전을 빌드하는 일이 있으면, 패키지를 제대로 업그레이드할 수 있도록 다음을 확인해야 한다:
이제 새로운 패키지를 완전히 테스트했으므로, dupload(1)를 사용해 이
파일을 master.debian.org에 업로드한다. 처음에 dupload의 설정 파일
~/.dupload.conf를 셋업해야 한다. 다음과 같이 쓴다:
package config;
$default_host = "master";
$cfg{"master"}{"method"} = "scpb";
$cfg{"master"}{"login"} = "joy";
$cfg{"master"}{"visibleuser"} = "jrodin";
$cfg{"master"}{"visiblename"} = "jagor.srce.hr";
$cfg{"master"}{"fullname"} = "Josip Rodin";
$cfg{"non-us"}{"method"} = "scpb";
$cfg{"non-us"}{"login"} = "joy";
$cfg{"non-us"}{"visibleuser"} = "jrodin";
$cfg{"non-us"}{"visiblename"} = "jagor.srce.hr";
$cfg{"non-us"}{"fullname"} = "Josip Rodin";
1;
물론, 개인적인 정보는 여러분에 맞게 바꿔야 한다. 각 옵션이 의미하는 바는
dupload.conf(5) 맨 페이지에 있다.
dupload --to master gentoo_0.9.12-1_i386.changes
dupload는 파일의 .changes 파일에 들어 있는 파일에 대해 MD5 체크섬이 맞는지를 확인하고, 맞지 않을 경우 경고를 낸다. 이 경우 패키지 빌드, 6.1에 설명된 대로 다시 빌드해서 제대로 업로드하도록 한다.
Dupload는 master.debian.org의 암호를 물어보고, 패키지를 업로드하고, 필요한 경우
업로드에 대한 공지사항을 debian-devel-changes@lists.debian.org에
보낸다.
유럽에 살고 있다면, master 대신에 또 다른 업로드 큐를 쓸 수 있다. 자세한
사항은 dupload(1), dupload.conf(5) 그리고 Developer's
Reference를 보기 바란다.
해당 패키지에 버그 #54321이 보고되었다고 하자. 그리고 그 버그는 여러분이 고칠 수 있는 버그이다. 새로운 패키지 개정판을 내기 위해 할 일은:
그러면 이번에는 좀 다른, 약간 더 복잡한 상황을 생각해 보자 - 새로운 상위 버전이 릴리즈되었고, 이 버전을 패키징하려고 한다. 이 때 할 일은:
uupdate -u gentoo-0.9.13.tar.gz
물론 파일 이름은 여러분의 프로그램의 소스 아카이브 파일 이름으로 쓴다.
uupdate(1)은 해당 파일의 이름을 적절히 바꾸고, 과거의 .diff.gz
파일에서 바꾼 점들을 모두 적용하려고 시도할 것이다. 그리고 새로운
debian/changelog 파일을 만든다.
`debian/watch' 파일을 watch.ex, 5.6에서
설명한 대로 설정한 경우, uscan(1)을 실행하면 자동으로 원 소스가
바뀌었는지 확인하고, 소스를 내려받고, uupdate를 실행한다.
널리 알려진 장소에 질문을 하기 전에, 부디 RTFM한다. 읽어 볼 문서는
/usr/share/doc/dpkg, /usr/share/doc/debian, /usr/share/doc/package/* 파일들과
이 글에 포함된 각 프로그램들의 맨페이지, info 페이지이다. 버그 보고를 받는다면
(진짜 버그 보고!) 여러분은 이제 Debian Bug Tracking System에
들어섰고, 거기에 있는 문서를 읽어야 한다. 그래야 버그 보고들을 효과적으로
이용할 수 있다.
debian-mentors@lists.debian.org에
있는 데비안 조언자의 (Debian Mentors') 메일링 리스트에 가입하면, 경험있는
데비안 개발자가 여러분의 의문을 풀어 줄 것이다. 이 리스트는 debian-mentors-request@lists.debian.org
주소로 제목에 `subscribe'를 써서 이메일을 보내면 가입된다.
아직도 의문이 있다면, debian-devel@lists.debian.org에
있는 데비안 개발자의 메일링 리스트에 물어본다. 이 리스트는 debian-devel-request@lists.debian.org
주소로 제목에 `subscribe'라고 써서 이메일을 보내면 가입된다. 여러분이 이미
데비안 개발자라면 어쨌든 이 리스트에 가입해야 한다.
설령 잘 동작하더라도, 이제부터 기도를 시작해야 한다. 왜 그럴까? 이제 몇 시간 (혹은 며칠) 후면 전세계의 사용자들이 당신의 패키지들을 쓰기 시작할 것이기 때문이다. 또 중대한 오류를 범한 경우에, 분노한 수많은 데비안 사용자들로부터 메일폭탄이 날아올 것이다... 농담. :-)
마음 놓고 버그 보고에 대비한다. 패키지가 완전히 데비안 정책에 들어맞으려면 이보다 훨씬 많은 작업이 필요하다 (다시 한번 말하지만, 자세한 내용을 알려면 실제 문서를 읽기 바란다). 행운을 빈다!
jrodin@jagor.srce.hrcwryu@debian.org/