"꾸러미 재컴파일"의 두 판 사이의 차이
(새 문서: 제목 : 꾸러미 재컴파일 작성자 : redneval 난이도 : 중급 라이선스 : GFDL 처음 작성일자 : 2009년 6월 === 목적 === 저장소에 있는 gnash 를 재컴...) |
|||
13번째 줄: | 13번째 줄: | ||
본 문서에 나온 내용을 응용하면, 소스 코드에 패치를 적용된 꾸러미를 만드는 것이 가능합니다. | 본 문서에 나온 내용을 응용하면, 소스 코드에 패치를 적용된 꾸러미를 만드는 것이 가능합니다. | ||
+ | |||
+ | |||
+ | === 준비 === | ||
+ | |||
+ | 꾸러미 재컴파일 과정을 위해서 필수적인 꾸러미를 먼저 설치해줍시다. | ||
+ | |||
+ | sudo apt-get update | ||
+ | sudo apt-get install build-essential fakeroot dpkg-dev | ||
30번째 줄: | 38번째 줄: | ||
이제 소스 코드를 내려받습니다. | 이제 소스 코드를 내려받습니다. | ||
− | |||
apt-get source --download-only gnash | apt-get source --download-only gnash | ||
59번째 줄: | 66번째 줄: | ||
=== 의존성 === | === 의존성 === | ||
− | |||
− | |||
− | |||
− | |||
− | |||
이번에는 gnash 를 컴파일하기 위해서 필요한 꾸러미를 설치할 차례입니다. | 이번에는 gnash 를 컴파일하기 위해서 필요한 꾸러미를 설치할 차례입니다. |
2009년 8월 11일 (화) 12:03 기준 최신판
제목 : 꾸러미 재컴파일 작성자 : 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