병합과 동기화
이전
다음

병합과 동기화

중요

요구 패키지: build-essential, automake, gnupg, lintian, fakeroot, patchutils, debhelper 그리고 pbuilder.

우분투 는 데비안 리눅스 배포판에 기반하고 같은 패키지 관리 시스템을(APT) 사용 합니다. 매 우분투 개발 주기의 시작에, 우분투 내의 패키지는 데비안 불안정 브랜치 내의 패키지로 업데이트 됩니다. 그러나, 우분투 는 데비안과 똑같지 않기 때문에, 몇 가지 패키지가 우분투 에서 동작을 하려면 변경을 하는 것이 필요 합니다. 또한 우분투 개발자가 작업한 그 패키지의 버그를 고친 것이 있기도 합니다. 패키지 버전을 주목하는 것으로 버그 픽스의 여부를 결정할 수 있습니다. 만약 패키지 버전이 ubuntu를 포함하고 있다면 (예를 들어 gimp-2.2.9-3ubuntu2), 우분투 개발자가 변경을 한 것이고 데비안 패키지와는 더 이상 같지 않습니다. 우분투 저장소에는 1000 개가 넘는 이러한 변경된 패키지들이 있습니다.

매 우분투 개발 주기의 시작에, 우분투 버전의 패키지를 고려한 결정이 만들어 집니다. 물론 만약 최근의 우분투 발표 이후로 데비안 버전의 변경이 된 것이 없다면, 아무 것도 변경할 필요가 없습니다. 그러나, 만약 데비안에 새 버전의 패키지가 있다면, 다음의 두 가지 중 하나는 반드시 일어나야 합니다. 우분투의 변경 (버그 픽스, 의존성, 기타)의 모든 사유가 새로운 데비안 패키지에서도 고쳐졌다면, 우리는 직접 데비안 패키지를 취합니다. 그러나, 새 데비안 패키지가 우분투 버전을 고치게 만들었던 같은 이슈를 가지고 있다면, 그 변경 사항이 새 데비안 버전에도 적용이 되는 것이 필요 합니다. 이 결정을 병합 이라고 부릅니다.

병합 지도서

병합 절차는 데비안과 우분투 소스 패키지 양쪽의 변경 사항을 보는 것과 무엇을 변경하였고 무슨 변경이 우분투 특정 사항인지를 결정하는 것을 필요로 합니다. 예를 살펴 보겠습니다, xcdroast 라 불리는 인기있는 CD 작성 프로그램 입니다.

시작하려면, 프로젝트를 가질 폴더를 만들고, 그 디렉토리로 이동 합니다:

mkdir ~/xcdroast
cd ~/xcdroast

이제 필요로 하는 소스 패키지의 모든 것을 이 디렉토리로 내려 받습니다:

참고

이 절차들은 packages.debian.org 에서 데비안 패키지를 그리고 packages.ubuntu.com 에서 우분투 패키지를 검색하는 것으로 또한 마쳐질 수 있습니다.

작은 정보

병합을 할 때 (또는 어떠한 우분투 패키징에도) 설치하여 가지고 있으면 매우 유용한 패키지는 devscripts 입니다. 만약 이미 설치하지 않았다면, 진행 전에 그것을 설치 하십시오.

우분투 changelog 를 들여다 보는 것으로 우분투 패키지와 데비안 패키지 간에 무엇이 파생된 것인지를 작정한 차이점을 볼 수 있습니다. xcdroast를 예를 들어, 우분투 changelog 는 changelogs.ubuntu.com 에서 찾을 수 있습니다. 변경 사항에 적혀 있기를, Malone 에 버그 리포트된 것을 닫기 위해 .desktop 파일이 고쳐졌고 적절하게 설치되었다고 합니다.

이제 그 소스 패키지에 실제 변경 사항을 검사해 봅니다:

debdiff xcdroast_0.98+0alpha15-1.1.dsc xcdroast_0.98+0alpha15-1.1ubuntu1.dsc | \
	ubuntu.debdiff | less ubuntu.debdiff

- 로 시작되는 줄은 데비안 패키지에서 제거된 것이고, + 로 시작하는 것은 Ubuntu 패키지에 추가된 것 입니다.

우리는 다음을 볼 수 있습니다:

  • xcdroast icon 을 설치하기 위해 cp 대신에 install이 debian/rules 에 사용되어 졌습니다. 또한, .desktop 파일을 설치하는 새 줄이 있습니다.

  • debian/changelog 에 변경기록 사항으로 그 변경 사항이 추가 되었습니다.

  • debian/dirs 에 usr/share/applications 이 위의 설치 줄이 적절하게 동작을 하도록 추가 되었습니다.

  • xcdroast.desktop 추가됨

이제 우리는 우분투 소스가 어떻게 변경 되었는지를 알았습니다. 이제 데비안 소스에는 무엇이 변경 되었는지를 볼 필요가 있습니다.

debdiff xcdroast_0.98+0alpha15-1.1.dsc xcdroast_0.98+0alpha15-3.dsc > debian.debdiff
less debian.debdiff

우분투 것에서 본 것보다 훨씬 많은 것이 debdiff 에 있습니다. 무엇이 변경 되었지를 좀 더 잘 알 수 있는 한 가지 방법은 debdiff 안에 변경된 파일을 보는 것 입니다.

grep diff debian.debdiff

새 데비안 버전에는 debian/postinst, debian/rules, debian/changelog, debian/doc-base.manual, debian/control, 그리고 debian/menu 파일들이 변경 되었음을 알립니다.

그래서 우리는 우분투 의 변경이 만들어졌는지를 보기 위해 debian/rules 검사하는 것이 필요함을 볼 수 있습니다. 이제 그 파일을 들여다 봅시다. 소스 패키지는 dpkg-source 를 사용하여 풀 수 있습니다:

dpkg-source -x xcdroast_0.98+0alpha15-3.dsc

이것은 xcdroast_0.98+0alpha15.orig.tar.gz 파일을 압축 풀고, xcdroast-0.98+0alpha15 디렉토리를 만들고 xcdroast_0.98+0alpha15-3.diff.gz 내의 변경 사항을 적용 합니다.

이제 debian 디렉토리로 이동 합니다:

cd xcdroast-0.98+0alpha15/debian

rules 에서 우분투 에 만들었던 변경 사항이 새 데비안 버전에는 적용되지 않았음을 볼 수 있습니다. 이것은 다음을 의미 합니다:

cp debian/xcdroast.xpm `pwd`/debian/$(PACKAGE)/usr/share/pixmaps

... 는 다음처럼 변경 되어야만 합니다:

#cp debian/xcdroast.xpm `pwd`/debian/$(PACKAGE)/usr/share/pixmaps

#install desktop and icon
install -D -m 644 $(CURDIR)/debian/xcdroast.desktop \
	$(CURDIR)/debian/xcdroast/usr/share/applications/xcdroast.desktop
install -D -m 644 $(CURDIR)/debian/xcdroast.xpm \
	$(CURDIR)/debian/xcdroast/usr/share/pixmaps/xcdroast.xpm

이제 dirs 에, 설치될 .desktop 파일을 위해 다음의 줄을 추가 합니다:

usr/share/applications

이제 우리는 실제 .desktop ( debian/xcdroast.desktop 로 저장되는 ) 파일이 필요 합니다. ubuntu.debdiff (또는 우분투 소스 패키지에서), 우리는 그것을 봅니다:

[Desktop Entry]
Encoding=UTF-8
Name=X-CD-Roast
Comment=Create a CD
Exec=xcdroast
Icon=xcdroast.xpm
Type=Application
Categories=Application;AudioVideo;

마지막으로 변경해야 하는 것은 changelog 에 있습니다. 우리가 마친 것을 (데비안과 병합) 추가해야 하는 것 뿐만 아니라, 이전 Ubuntu changelog 사항도 추가하여야 합니다. 이것을 하려면, dch -i -D dapper 을 수행하고 다음의 효과를 가지는 무엇을 넣습니다:

xcdroast (0.98+0alpha15-3ubuntu1) dapper; urgency=low

  * Resynchronise with Debian.

버전 번호를 정확한 Ubuntu 로 변경하는 것을 확인 합니다. 또한 다음을 추가 합니다:

xcdroast (0.98+0alpha15-1.1ubuntu1) breezy; urgency=low

  * Fix and install existing .desktop file. (Closes Malone #2698)
				
  -- Captain Packager 

0.98+0alpha15-1.1 과 0.98+0alpha15-2 사이의 기록 사항.

이제 새 소스 패키지를 만들고 테스트 합니다. 이것을 하는 여러가지 방법이 있지만, 다음이 한 예입니다:

cd ..
debuild -S
cd ..
sudo pbuilder build xcdroast_0.98+0alpha15-3ubuntu1.dsc

이것은 소스 패키지를 다시 만들고, 여러분의 기본 설정 GPG key로 패키지를 사인하고, 패키지가 정확히 만들어지는 지를 확신하기 위해 pbuilder 환경에서 패키지를 만듭니다. 마지막 단계는 기존의 버그 리포트에 첨부할 수 있는 또는 #ubuntu-motu IRC 패널에 줄 수 있는 debdiff 를 만드는 것 입니다. 이것을 하려면, 데비안 불안정 소스 패키지와 새 우분투 버전 간의 차이점을 가집니다:

debdiff xcdroast_0.98+0alpha15-3.dsc xcdroast_0.98+0alpha15-3ubuntu1.dsc > \
	xcdroast_0.98+0alpha15-3ubuntu1.debdiff
이전
다음
처음으로