Trans:GentooX86Handbook2-3

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

포티지 기능

포티지 기능

포티지는 여러분의 더 나은 젠투 경험을 만들어줄 수많은 추가 기능이 있습니다. 이 수많은 기능들은 성능, 신뢰성, 보안 등을 개선하기 위한 몇몇 프로그램 도구에 의지합니다.

이들 포티지 기능을 활성화 하거나 비활성화 하려면, 공백으로 구분한 여러 기능 키워드가 들어있는 /etc/portage/make.conf의 FEATURES 변수를 편집할 필요가 있습니다. 대부분의 경우 기능과 관련한 추가 도구를 설치해야 할 필요가 있습니다.


코드 예제 1.1: make.conf 맨 페이지 찾아보기
$ man make.conf


FEATURE에 기본적으로 설정한 내용을 찾아보려면 emerge --info를 실행하고 FEATURE 변수를 검색하거나 grep으로 검색합니다.


코드 예제 1.2: 이미 설정한 FEATURES 찾아보기
$emerge --info


분산 컴파일

distcc 사용하기

distcc 프로그램은 네트워크 상에서 꼭 동일할 필요가 없는 많은 장비들을 통해 분산 컴파일을 수행하는 프로그래입니다. distcc 클라이언트는 사용가능한 distcc 서버(distccd 실행)에 필요한 정보를 보내서 클라이언트에 대한 소스코드 일부를 컴파일 할 수 있게 합니다. 이 네트워크에서는 컴파일 시간이 더 빨라집니다.

distcc에 대한 더 자세한 정보(와 젠투에서 받는 방법)를 찾으려면 [젠투 distcc 문서]를 보실 수 있습니다.

distcc 설치하기

distcc는 컴파일 할 내용을 전달하는 여러분의 컴퓨터의 작업을 각 모니터로 전달합니다. 만약 그놈을 사용한다면 USE 변수에 'gnome'을 넣으세요. 하지만 그놈을 사용하지 않고도 모니터를 확보하려면 USE 변수에 'gtk'를 놓도록 합니다.


코드 예제 2.1: distcc 설치하기
# emerge distcc


포티지 지원 활성화하기

distcc를 /etc/portage/make.conf의 FEATURES 변수에 추가합니다. 다음, 여러분이 좋아하는대로 MAKEOPTS 변수를 편집합니다. 알려져있는 지침대로라면 "-jX"의 X에 distccd를 실행하는 CPU의 갯수 + 1을 채워넣는 것입니다만 다른 숫자를 넣었을 때 결과가 더 좋게 나올 수도 있습니다.

이제 distcc-config를 실행하고 사용할 수 있는 distcc 서버의 목록을 입력합니다. 간단한 예로, 사용할 수 있는 DistCC 서버가 192.168.1.102(현재 호스트), 192.168.1.103, 192.168.1.104(두개의 원격 호스트)라고 가정합니다.


코드 예제 2.2: 사용할 수 있는 세 대의 distcc 서버를 사용하도록 distcc 설정하기
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"


마찬가지로 distcc 데몬을 실행하는 걸 잊지 마시기 바랍니다


코드 예제 2.3: distccd 데몬 시작하기
# rc-update add distccd default

# /etc/init.d/distccd start


컴파일 캐시하기

ccache 정보

ccache는 빠른 컴파일러 캐시입니다. 프로그램을 컴파일 할 때 중간 내용을 캐시해서 여러분이 같은 프로그램을 언제 다시 컴파일 하든지 상관 없이 컴파일 타임은 급격하게 줄어들게 됩니다. ccache를 처음 실행할 때 보통 컴파일 할 때보다 훨씬 느릴 것입니다. 그 다음 다시 컴파일 할 때 더 빨라질 것입니다. ccache는 여러분이 같은 프로그램을 여러번 컴파일 할 때만 도움이 될 것입니다. 따라서 이는 대부분 프로그램 개발자들에게만 유용합니다.

ccache의 이모저모에 관심이 있다면 ccache 홈페이지를 방문해 주시기 바랍니다.


주의: ccache는 수많은 컴파일 실패를 유발하는 것으로 알려져 있습니다. 때로는 이머지할 수 없는 꾸러미가 될 수 있게, ccache가 낡아빠진 코드 객체나 깨진 파일을 유지하기도 합니다. 만약 이런 일이 일어난다면(즉, "File not recognized: File truncated"와 같은 오류 메시지를 만났다면), 버그를 보고 하기 전에 ccache를 비활성화 한 상태(/etc/portage/make.conf에서 FEATURES="-ccache")에서 프로그램을 다시 컴파일 해보시기 바랍니다. 개발작업을 하지 않는 한 ccache를 활성화 하지 마십시오.


ccache 설치하기

ccache를 설치하려면 emerge ccache를 실행합니다.


코드 예제 3.1: ccache 설치하기
# emerge ccache


포티지 지원 활성화하기

/etc/portage/make.conf를 열고 FEATURES 변수에 ccache를 추가하십시오. 다음 CCACHE_SIZE라고 하는 새 변수를 추가하고, "2G"로 설정합니다.


코드 예제 3.2: /etc/portage/make.conf에 CCACHE_SIZE 편집하기
CCACHE_SIZE="2G"


ccache 기능을 확인하려면 ccache에게 현재 상태를 제공해달라고 요정합니다. 포티지가 다른 ccache 홈 디렉터리를 사용하기 때문에, 마찬가지로 CCACHE_DIR 변수를 설정할 필요가 있습니다.


코드 예제 3.3: ccache 상태 보기
# CCACHE_DIR="/var/tmp/ccache" ccache -s


/var/tmp/ccache 위치는 포티지의 기본 ccache 홈 디렉터리 입니다. 이 설정을 바꾸시려면 /etc/portage/make.conf에서 CCACHE_DIR 변수 값을 설정할 수 있습니다.

그러나 ccache를 실행하려면, ${HOME}/.ccache의 기본 위치를 사용하는데, 이것은 (포티지) ccache 상태를 물어볼 때 CCACHE_DIR 변수를 설정해야 할 이유이기도 합니다.

비 포티지 C 컴파일 목적으로 ccache 사용하기

비 포티지 컴파일을 목적으로 ccache를 사용하려면 PATH변수의 시작 부분에 (/usr/bin 앞에 ) /usr/lib/ccache/bin을 추가합니다. 여러분의 사용자 홈 디렉터리에 있는 .bash_profile을 편집하시는 방법으로 처리할 수 있습니다. .bash_profile을 사용하는 것이 PATH 변수를 정의하는 한 가지 방법입니다.


코드 예제 3.4: .bash_profile 편집하기
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"


바이너리 꾸러미 지원

미리 빌드한 꾸러미 만들기

포티지는 미리 빌드한 꾸러미의 설치를 지원합니다. 젠투가 자체적으로 (GRP 스냅샷을 제외하고) 미리 빌드한 꾸러미를 제공하는 것은 아니지만, 포티지로 하여금 미리 빌드한 꾸러미를 완전히 인식하도록 할 수 있습니다.

미리 빌드한 꾸러미를 만들려면, 꾸러미가 이미 시스템에 설치되어 있는 경우 quickpkg 를 사용하시거나, --buildpkg옵션이나 --buildpkgonly옵션을 붙여서 emerge를 사용하실 수 있습니다.

여러분이 설치한 모든 단일 패키지에 대해 포티지로 미리 빌드한 꾸러미를 만들려면 FEATURES 변수에 buildpkg를 추가합니다.

미리 빌드한 꾸러미를 만들기 위한 더 많은 지원은 catalyst를 통해 받을 수 있습니다. catalyst에 대한 더 많은 정보를 보시려면 [catalyst 자주 묻는 질문]을 읽어주시기 바랍니다.

미리 빌드한 꾸러미 설치하기

비록 젠투가 미리 빌드한 꾸러미를 지원하지는 않지만 여러분이 미리 빌드한 꾸러미를 저장할 중앙 저장소를 만들 수 있습니다. 이 저장소를 사용하시려면 PORTAGE_BINHOST 변수로 저장소를 지정하여 포티지가 저장소를 인식하게 할 필요가 있습니다. 예를 들어, 미리 빌드한 꾸러미가 ftp://buildhost/gentoo에 있다면


코드 예제 4.1:/etc/portage/make.conf에 PORTAGE_BINHOST 설정하기
PORTAGE_BINHOST="ftp://buildhost/gentoo"


미리 빌드한 꾸러미를 설치하려 할 때 emerge 명령의 --usepkg 옵션 옆에 --getbinpkg 옵션을 추가합니다. 이 구성자는 후자가 emerge 에게 소스코드를 가져오고 컴파일 하기 전에 미리 빌드한 꾸러미의 설치를 시도해보라고 알리는 동안 이전에 정의한 서버로부터 미리 빌드한 패키지를 내려받을 것을 알려줍니다.

예를 들어 gnumetric의 미리 빌드한 꾸러미를 설치하려면


코드 예제 4.2: 미리 빌드한 gnumetric 꾸러미 설치하기
# emerge --usepkg --getbinpkg gnumetric


emerge의 미리 빌드한 패키지에 대해 더 많은 내용을 보시려면 emerge 맨 페이지에서 찾아보실 수 있습니다


코드 예제 4.3: emerge 맨 페이지 보기
$ man emerge


파일 가져오기

병렬로 가져오기

여러 꾸러미를 이머지할 때, 포티지는 다른 꾸러미를 컴파일 하는 동안에도 목록에 있는 다음 꾸러미에 대한 소스코드 파일을 가져와서 컴파일 시간을 단축할 수 있습니다. 이 기능을 사용할 수 있게끔 하려면 FEATURES에 "parallel-fetch"를 추가합니다. 이 값은 기본으로 지정되어 있으니 특별하게 이걸 활성화 할 필요는 없다는 것을 참고하시기 바랍니다.

사용자가 직접 가져오기(Userfetch)

포티지를 루트 권한으로 실행할 때 FEATURES="userfetch" 설정은 꾸러미 소스코드를 가져오는 동안 포티지가 루트 권한을 내려놓을 수 있게 합니다. 이런 방법을 통해 약간의 보안성 향상이 이루어집니다.

검증된 포티지 트리 스냅샷 가져오기

여러분은 관리자의 입장에서 젠투 기반에서 출시한 암호상으로 검증된 포티지 트리 스냅샷으로 여러분의 지역 포티지 트리를 단지 업데이트만 하는 선택을 하실 수 있습니다. 이는 rsync 미러가 여러분이 내려받은 트리에서 원하지 않는 코드나 꾸러미를 확실히 멋대로 추가하지 못하게 막아줍니다.

포티지를 설정하려면 먼저 여러분이 내려받을 신뢰 저장소를 구축하고 포티지 트리 스냅샷에 서명할 책임이 있는 젠투 기반의 키를 수락합니다. 물론 그렇게 하고 싶다면 [적절한 지침서]를 따라 GPG키(지문 키 검사와 비슷합니다)를 검증할 수 있습니다. [프로젝트 페이지]의 릴리즈 엔지니어링 팀에서 사용하는 GPG키의 목록을 찾으실 수 있습니다.


코드 예제 6.1: 포티지 신뢰 저장소 만들기
# mkdir -p /etc/portage/gpg

# chmod 0700 /etc/portage/gpg
(... 릴리즈 엔지니어링 사이트에 언급한대로 키를 대체하십시오 ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust


다음 /etc/portage/make.conf를 편집하고 서명한 포티지 트리 스냅샷 검증 지원을 활성화(FEATURES="websync-gpg" 사용)한 다음 일반적인 emerge --sync 방법으로 포티지 트리를 업데이트 하는 것을 비활성화합니다.


코드 예제 6.2: 서명한 트리 검증을 위해 포티지 업데이트 하기
FEATURES="webrsync-gpg"

PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""


다 됐습니다. 그 다음 emerge-websync를 실행하면 유효한 서명을 가진 스냅샷 만이 시스템에 뿌려질 것입니다.