Gentoo Development Guide/Quick Start Ebuild Guide
Quickstart Ebuild Guide ¶First Ebuild (최초의 ebuild) ¶시작을 소스코드 인덱싱 도구인 Exuberant Ctags 유틸리티에 대한 ebuild로 하겠습니다. 여기에 단순화된 dev-util/ctags/ctags-5.5.4.ebuild 가 있습니다. (주요 트리에서 실제로 볼 수 있습니다.)
# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /home/httpd/kldp/wiki/data/text/RCS/GentooDevelopmentGuide_2fQuickStartEbuildGuide,v 1.11 2006/11/17 13:49:25 kss Exp kss $ DESCRIPTION="Exuberant ctags generates tags files for quick source navigation" HOMEPAGE="http://ctags.sourceforge.net" SRC_URI="mirror://sourceforge/ctags/${P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~mips ~sparc ~x86" IUSE="" src_compile() { econf --with-posix-regex || die "econf failed" emake || die "emake failed" } src_install() { emake DESTDIR="${D}" install || die "install failed" dodoc FAQ NEWS README dohtml EXTENDING.html ctags.html } 기본적인 형식 (Basic Format) ¶여러분이 보시다시피, ebuild는 특정한 환경에서 실행하는 bash 스크립트에 지나지 않습니다.
ebuild 의 제일 윗 부분은 머릿말 부분(Header Block)입니다. 이것은 모든 ebuild 에 있습니다. ebuild들은 탭을 사용하여 들여쓰기 되며, 한 탭은 4칸으로 대체됩니다. ebuild 파일 형식을 보십시오. 정보 변수 (Information Variables) ¶다음으로, 여기 변수들의 집합이 있습니다. 이것들은 질의에서 Portage 와 관련된 다양한 것들을 알려줍니다.
DESCRIPTION 변수는 패키지와 패키지의 목적에 대한 짧은 설명 모음입니다.
HOMEPAGE 는 패키지의 홈페이지 링크입니다. (http:// 부분도 포함해야 하는 것을 기억하십시오) LICENSE 는 GPL-2 입니다. (GNU 일반 공용 라이센스 버전 2). SRC_URI 는 Portage 에 소스 타볼(Tarball) 파일을 내려받기 위해 사용될 주소를 알려줍니다. 여기 mirror://sourceforge/ 는 "어떤 소스포지 미러들"을 뜻하는 중요한 표식입니다. ${P} 는 Portage 에 의해 정의된, 읽기만 가능한 변수입니다. 이 변수는 패키지의 이름과 버전을 나타냅니다. 위의 예제의 경우 변수는 ctags-5.5.4 의 값을 갖고 있습니다. SLOT 변수는 Portage 에 이 패키지를 설치할 슬롯(slot)을 알려줍니다. 만약 여러분이 이전에 슬롯들을 본 적이 없다면, 그냥 "0" 을 사용하거나 ![]() KEYWORDS 변수는 이 ebuild 가 시험되어진 (CPU 의) 구조(아키텍쳐)에 대한 집합입니다. 우리는 새로 작성된 ebuild 들에 대해서 ~ 키워드들을 사용합니다. 이 패키지들은 잘 작동하는 것으로 보인다고 해도 안정버전으로 바로 인증되지 않습니다. 더 자세한 사항은 ![]() 구축 함수들 (Build Functions) ¶다음으로 src_compile (이)라고 이름붙여진 함수입니다. Portage 는 패키지를 컴파일 하기 원할 때 이 함수를 호출합니다. econf 함수는 ./configure 를 호출하는 것에 대한 랩퍼입니다. 그리고 emake 는 make 에 대한 랩퍼입니다. 이 두 경우 공통적으로 || die "something went wrong" 관용 수식을 사용합니다.이것은 어떤 이유로 인한 오류가 발생했을 때, Portage 가 설치를 계속하도록 시도하지 않고 멈추도록 확실히 하기 위한 것입니다.
src_install 함수는 패키지를 설치하기 원할 때 Portage 에 의해 호출됩니다. 바로 파일 시스템에 설치하지 않는다는 점이 약간 희한한 부분입니다. ${D} 변수에 의해 주어진 특별한 위치에 설치될 것입니다. (Portage 가 이 변수를 설정합니다. ![]() 의존성을 갖는 ebuild (Ebuild with Dependencies) ¶ctags 예제에서 Portage 에 어떠한 의존성에 대해서도 (정보를) 전달하지 않았습니다. 사실 그래도 상관은 없습니다. 왜냐하면 ctags는 컴파일 하고 실행하는데 기본적인 도구모음(toolchain)만 필요하기 때문입니다. (왜 이 패키지에 대한 의존성 정보가 필요 없는지에 대해서
![]() 여기 app-misc/detox/detox-1.1.1.ebuild 가 있습니다. # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /home/httpd/kldp/wiki/data/text/RCS/GentooDevelopmentGuide_2fQuickStartEbuildGuide,v 1.11 2006/11/17 13:49:25 kss Exp kss $ DESCRIPTION="detox safely removes spaces and strange characters from filenames" HOMEPAGE="http://detox.sourceforge.net/" SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" LICENSE="BSD" SLOT="0" KEYWORDS="~hppa mips sparc x86" IUSE="" DEPEND="dev-libs/popt sys-devel/flex sys-devel/bison" RDEPEND="dev-libs/popt" src_compile() { econf --with-popt || die "econf failed" emake || die "emake failed" } src_install() { emake DESTDIR="${D}" install || die "install failed" dodoc README CHANGES } 다시 여러분들은 ebuild 헤더와 다양한 정보 변수들을 볼 수 있습니다. SRC_URI 에서, 버전에 대한 꼬릿말이 없는 패키지의 이름을 얻기 위해 ${PN}이 사용됩니다. (여기엔 여러가지 변수가 있습니다. ![]() 다시, src_compile 과 src_install 함수들을 정의합니다. DEPEND 와 RDEPEND 변수들은 Portage 가 패키지들을 설치하고 실행하는데 필요한 패키지들을 결정하기 위한 기준입니다. DEPEND 변수 목록은 컴파일 할 때의 의존성 목록이며, RDEPEND 은 실행시 의존성을 나타냅니다. 더 다양하고 복잡한 예제는 ![]() 변경적용사항이 있는 ebuild (Ebuild with Patches) ¶우리는 자주 변경적용사항(patch)들을 적용하길 원합니다. epatch 도움 함수를 사용하여 src_unpack 함수에서 완료합니다. epatch 함수를 사용하기 위해서는 ebuild 에서 먼저 Portage 에 eutils eclass (라이브러리와 같은 eclass) 가 필요하다고 알려야 합니다. 이것은 ebuild 의 머릿부분에서 inherit eutils 를 통해 완료됩니다. 여기 app-misc/detox/detox-1.1.0.ebuild 가 있습니다.
# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /home/httpd/kldp/wiki/data/text/RCS/GentooDevelopmentGuide_2fQuickStartEbuildGuide,v 1.11 2006/11/17 13:49:25 kss Exp kss $ inherit eutils DESCRIPTION="detox safely removes spaces and strange characters from filenames" HOMEPAGE="http://detox.sourceforge.net/" SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" LICENSE="BSD" SLOT="0" KEYWORDS="~hppa ~mips ~sparc ~x86" IUSE="" DEPEND="dev-libs/popt sys-devel/flex sys-devel/bison" RDEPEND="dev-libs/popt" src_unpack() { unpack ${A} cd "${S}" epatch "${FILESDIR}"/${P}-destdir.patch epatch "${FILESDIR}"/${P}-parallel_build.patch } src_compile() { econf --with-popt || die "econf failed" emake || die "emake failed" } src_install() { emake DESTDIR="${D}" install || die "install failed" dodoc README CHANGES } ${FILESDIR}/${P}-destdir.patch 를 보십시오. 이것은 Portage 트리에서 files/ 하위 디렉터리에 존재하는 detox-1.1.0-destdir.patch 을 참조합니다. 더 큰 변경적용사항(Patch) 파일들은 files/ 디렉터리보단 미러로 가야 합니다. ![]() USE 플래그를 사용하는 ebuild (Ebuild with USE Flags) ¶이제 몇몇 USE 플래그들에 대한 것입니다. 여기 dev-libs/libiconv/libiconv-1.9.2.ebuild 가 있습니다. iconv 를 갖지 않은 libc 구현물에 대한 iconv 대체 패키지입니다.
# Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /home/httpd/kldp/wiki/data/text/RCS/GentooDevelopmentGuide_2fQuickStartEbuildGuide,v 1.11 2006/11/17 13:49:25 kss Exp kss $ DESCRIPTION="GNU charset conversion library for libc which doesn't implement it" SRC_URI="ftp://ftp.gnu.org/pub/gnu/libiconv/${P}.tar.gz" HOMEPAGE="http://www.gnu.org/software/libiconv/" SLOT="0" LICENSE="LGPL-2.1" KEYWORDS="~amd64 ~ppc ~sparc ~x86" IUSE="nls" DEPEND="virtual/libc !sys-libs/glibc" src_compile() { econf $(use_enable nls) || die "econf failed" emake || die } src_install() { emake DESTDIR="${D}" install || die "install failed" }IUSE 변수를 주목하십시오. 이것은 ebuild 가 사용할 (특별하지 않은) USE 플래그들을 나열합니다. 이것은 다른것들과 같이 emerge -pv 출력에 사용됩니다. 패키지의 ./configure 스크립트는 보통 --enable-nls 나 --disable-nls 인자를 갖습니다. 우리는 이것을 자동으로 생성하기 위해 사용자의 USE 플래그에 의존하는 use_enable 유틸리티 함수를 사용합니다. ( ![]() 조금 더 복잡한 예제로 여기 mail-client/sylpheed/sylpheed-1.0.4.ebuild 가 있습니다. # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /home/httpd/kldp/wiki/data/text/RCS/GentooDevelopmentGuide_2fQuickStartEbuildGuide,v 1.11 2006/11/17 13:49:25 kss Exp kss $ inherit eutils DESCRIPTION="A lightweight email client and newsreader" HOMEPAGE="http://sylpheed.good-day.net/" SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" LICENSE="GPL-2" KEYWORDS="alpha amd64 hppa ia64 ppc ppc64 sparc x86" SLOT="0" IUSE="crypt gnome imlib ipv6 ldap nls pda ssl xface" DEPEND="=x11-libs/gtk+-1.2* nls? ( >=sys-devel/gettext-0.12.1 ) crypt? ( >=app-crypt/gpgme-0.4.5 ) gnome? ( media-libs/gdk-pixbuf ) imlib? ( media-libs/imlib ) ldap? ( >=net-nds/openldap-2.0.11 ) pda? ( app-pda/jpilot ) ssl? ( dev-libs/openssl ) xface? ( >=media-libs/compface-1.4 )" RDEPEND="${DEPEND} app-misc/mime-types x11-misc/shared-mime-info" src_unpack() { unpack ${A} cd "${S}" epatch "${FILESDIR}"/${PN}-namespace.diff epatch "${FILESDIR}"/${PN}-procmime.diff } src_compile() { econf \ $(use_enable nls) \ $(use_enable ssl) \ $(use_enable crypt gpgme) \ $(use_enable pda jpilot) \ $(use_enable ldap) \ $(use_enable ipv6) \ $(use_enable imlib) \ $(use_enable gnome gdk-pixbuf) \ $(use_enable xface compface) \ || die emake || die } src_install() { einstall || die "einstall failed" dodir /usr/share/pixmaps insinto /usr/share/pixmaps doins *.png if use gnome ; then dodir /usr/share/gnome/apps/Internet insinto /usr/share/gnome/apps/Internet doins sylpheed.desktop fi dodoc [A-Z][A-Z]* ChangeLog* }부가적인 의존성들에 주의하십시오. 몇몇 use_enable 행은 두 개의 인자를 사용합니다. 이것은 ./configure 인자와 USE 플래그 이름이 완전히 일치하지 않을 때 유용합니다. |
Your own qualities will help prevent your advancement in the world. |