꾸러미 재컴파일

한국 데비안 사용자 모임
둘러보기로 가기 검색하러 가기
제목 : 꾸러미 재컴파일
작성자 : redneval
난이도 : 중급
라이선스 : GFDL
처음 작성일자 : 2009년 6월


목적

저장소에 있는 gnash 를 재컴파일하고 꾸러미를 만들어봄으로써,

꾸러미가 만들어지는 과정을 좀 더 잘 이해할 수 있습니다.

본 문서에 나온 내용을 응용하면, 소스 코드에 패치를 적용된 꾸러미를 만드는 것이 가능합니다.


준비

꾸러미 재컴파일 과정을 위해서 필수적인 꾸러미를 먼저 설치해줍시다.

sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev


소스 코드 내려받기

먼저 소스 코드 저장소를 추가합니다. /etc/apt/sources.list 를 열어서 다음을 추가합니다.

deb-src http://http.us.debian.org/debian lenny main contrib non-free


작업하기 위한 디렉터리를 만듭시다.

mkdir ~/compile-gnash
cd ~/compile-gnash


이제 소스 코드를 내려받습니다.

apt-get source --download-only gnash

그러면 다음과 같이 3개의 파일을 받아집니다.

redneval@Horus:~/compile-gnash$ ls
gnash_0.8.4-2.diff.gz  gnash_0.8.4-2.dsc  gnash_0.8.4.orig.tar.gz


gnash_0.8.4.orig.tar.gz 는 gnash 개발자들이 배포하는 파일과 같습니다.

즉, http://ftp.gnu.org/pub/gnu/gnash/0.8.4/gnash-0.8.4.tar.gz 과 동일한 파일입니다.


데비안에서는, 개발자들이 배포하는 파일을 그대로 사용하지 않고,

데비안에 적합하도록 약간 수정하고, 데비안 꾸러미를 만들기 위한 몇 가지 파일들을 추가하는 패치를 제공합니다.

그 파일이 바로 gnash_0.8.4-2.diff.gz 입니다.


gnash_0.8.4-2.dsc 를 보면 꾸러미와 관련된 정보가 나옵니다. 각자 한 번 읽어보기 바랍니다.

다음 명령어를 사용하면, gnash_0.8.4.orig.tar.gz 의 압축을 풀고, gnash_0.8.4-2.diff.gz 의 패치를 적용합니다.

dpkg-source -x gnash_0.8.4-2.dsc


의존성

이번에는 gnash 를 컴파일하기 위해서 필요한 꾸러미를 설치할 차례입니다.

gnash_0.8.4-2.dsc 에서 의존성을 나타내는 Build-Depends 부분을 살펴보면 다음과 같습니다.

Build-Depends: dpkg-dev (>= 1.13.19), debhelper (>= 4.0.0), quilt, autoconf, dh-buildinfo, automake1.9 | automake, libtool, libltdl3-dev, help2man,
sng, libxmu-dev, dejagnu, autotools-dev, libboost-dev, libboost-thread-dev, libxml2-dev, libjpeg-dev, libboost-date-time-dev, libboost-filesystem-dev,
libpng12-dev | libpng-dev, libagg-dev, libgstreamer0.10-dev, libkonq4-dev, libpango1.0-dev | pango-devel, libgtkglext1-dev, libmad0-dev,
libcurl4-gnutls-dev | libcurl3-gnutls-dev | libcurl4-openssl-dev | libcurl3-openssl-dev, libcaca-dev, libavcodec-dev, libavformat-dev, libming-dev,
libming-util, libgstreamer-plugins-base0.10-dev, libqt3-mt-dev (>= 3:3.3.8), libboost-serialization-dev, libgif-dev, libsdl1.2-dev, python

이러한 의존성을 충족시켜주기 위해서 다음 명령어를 사용합니다.

sudo apt-get build-dep gnash

apt-get 은 의존성 문제를 잘 해결하지 못하는 경우도 있으므로, 잘 안된다면 다음 명령어를 사용하면 됩니다.

sudo aptitude build-dep gnash


살펴보기

gnash-0.8.4 디렉터리로 들어가봅시다.

cd gnash-0.8.4

README 와 INSTALL 가 있고, 컴파일을 위한 configure 와 Makefile.in 파일도 있습니다.

데비안 꾸러미를 만들기 위한 파일들은 debian 디렉터리에 있습니다.


debian/changelog 를 살펴보면 버전이 올라감에 따라 어떤 점들이 바뀌었는지 대략적인 설명이 나옵니다.

주목해야할 부분은 첫번째 줄입니다.

gnash (0.8.4-2) unstable; urgency=low

이 곳에 나온 0.8.4-2 라는 부분과 현재 디렉터리의 이름인 gnash-0.8.4 에 의해서 꾸러미의 버전이 결정됩니다.

혹시 꾸러미의 버전을 고치고 싶다면 그 두 부분을 적당하게 바꾸면 됩니다.

위와 같은 경우, 업스트림 버전은 0.8.4 이고,

데비안 개정 번호는 2라는 의미입니다. (즉, 데비안에서 0.8.4 버전을 이용하여 2번째로 만든 꾸러미라는 뜻입니다.)

(버전 숫자의 의미는 man 5 deb-version 명령어로 나오는 매뉴얼 페이지 참고)


debian/control 을 보면 각종 꾸러미의 정보가 나옵니다.

이 부분을 고치면, 앞으로 생성될 꾸러미의 의존성 등을 바꿀 수 있습니다.

(자세한 내용은 man 5 deb-control 명령어로 나오는 매뉴얼 페이지 참고)


컴파일 및 설치

다음 명령어를 실행하면 자동으로 컴파일을 하고 꾸러미를 만들어줍니다.

dpkg-buildpackage -rfakeroot -uc -us -b

다음 명령어로 설치하고 잘 실행되나 확인해봅시다.

cd ..
sudo dpkg -i gnash_0.8.4-2_i386.deb gnash-common_0.8.4-2_i386.deb mozilla-plugin-gnash_0.8.4-2_i386.deb