Trans:GentooX86Handbook2-3
목차
포티지 기능
포티지 기능
포티지는 여러분의 더 나은 젠투 경험을 만들어줄 수많은 추가 기능이 있습니다. 이 수많은 기능들은 성능, 신뢰성, 보안 등을 개선하기 위한 몇몇 프로그램 도구에 의지합니다.
이들 포티지 기능을 활성화 하거나 비활성화 하려면, 공백으로 구분한 여러 기능 키워드가 들어있는 /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 |