Handbook:AMD64/Working/Features/ko
포티지 기능
포티지는 여러분의 더 나은 젠투 경험을 만들어줄 여러가지 추가 기능이 있습니다. 이 수많은 기능들은 성능, 신뢰성, 보안 등을 개선하기 위한 몇가지 프로그램 도구에 의지합니다.
이들 포티지 기능을 활성화 하거나 비활성화 하려면, 공백으로 구분한 여러 기능 키워드가 들어있는 /etc/portage/make.conf의 FEATURES 변수를 편집할 필요가 있습니다. 대부분의 경우 기능과 관련한 추가 도구를 설치해야 합니다.
여기에 언급한 포티지 지원 기능이 기능 전부를 의미하지는 않습니다. 전체적으로 간단히 살펴보려면 make.conf 맨 페이지를 참고하십시오:
user $
man make.conf
FEATURES 변수에 어떤 값을 기본으로 지정했는지 보려면 emerge --info
를 실행하여 FEATURES 변수를 찾아보거나 grep으로 출력 내용을 잡아내십시오:
user $
emerge --info | grep ^FEATURES=
분산 컴파일
distcc 사용
distcc 프로그램은 네트워크 상에서 반드시 동일할 필요가 없는 많은 장비들로 분산 컴파일을 수행하는 프로그램입니다. distcc 클라이언트는 사용가능한 distcc 서버(distccd 실행)에 필요한 정보를 보내서 클라이언트에 대한 소스코드 일부를 컴파일 할 수 있게 합니다. 이 네트워크를 통해 컴파일 시간이 더 빨라집니다.
distcc에 대한 더 자세한 정보(와 젠투에서 동작하게 하는 방법)는 distcc 글에서 찾아 보실 수 있습니다.
distcc 설치
distcc에는 컴파일할 내용을 전달하는 컴퓨터의 작업을 감시하는 그래픽 감시 프로그램이 있습니다. USE=gnome
또는 USE=gtk
를 설정하면 이 도구를 자동으로 설치합니다.
root #
emerge --ask sys-devel/distcc
포티지 distcc 지원 활성화
distcc
를 /etc/portage/make.conf의 FEATURES 변수에 추가하십시오. 다음, 여러분이 원하는대로 MAKEOPTS 변수를 편집하십시오. 알려진 지침대로라면 -jN
의 N
에 distccd를 실행하는 CPU의 갯수 + 1을 채워넣는 것입니다만, 단순히 지침일 뿐입니다.
이제 distcc-config를 실행하고 사용할 수 있는 distcc 서버의 목록을 입력하십시오. 간단한 예로, 사용할 수 있는 DistCC 서버가 192.168.1.102(현재 호스트), 192.168.1.103, 192.168.1.104(두개의 "원격" 호스트)라고 가정합니다.
root #
distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
마찬가지로 distccd 데몬 실행도 잊지 마십시오:
root #
rc-update add distccd default
root #
/etc/init.d/distccd start
컴파일 객체 캐시
ccache 정보
ccache는 빠른 컴파일러 캐시입니다. 프로그램을 컴파일 할 때 중간 내용을 캐시해서 같은 프로그램을 언제 다시 컴파일 하든지 상관없이 컴파일 타임은 급격하게 줄입니다. ccache를 처음 실행할 때 보통 컴파일 할 때보다 훨씬 느립니다. 그 다음 다시 컴파일 할 때 더 빨라집니다. ccache는 같은 프로그램을 여러번 컴파일 할 때만 도움됩니다. 따라서 이는 대부분 프로그램 개발자들에게만 유용합니다.
ccache에 대한 더 많은 내용은 홈페이지en를 방문해보십시오.
ccache는 수많은 컴파일 실패를 유발하는 것으로 알려져 있습니다. ccache가 낡아빠진 코드 객체나 깨진 파일을 유지하여 꾸러미를 이머지하지 못하게 하기도 합니다. 만약 이런 일이 일어난다면(즉, "File not recognized: File truncated"와 같은 오류 메시지를 만났다면), 버그를 보고 하기 전에 ccache를 비활성화 한 상태(/etc/portage/make.conf에서
FEATURES="-ccache"
)에서 프로그램을 다시 컴파일 해보십시오. 개발작업을 하지 않는 한 ccache를 활성화하지 마십시오.ccache 설치
ccache를 설치하려면 다음 명령을 실행하십시오:
root #
emerge --ask dev-util/ccache
포티지 ccache 지원 활성화
/etc/portage/make.conf를 열고 FEATURES 변수의 아무 값 사이에 ccache
값을 추가하십시오. FEATURES 변수가 없다면 새로 만드십시오. 다음 새 CCACHE_SIZE 변수를 추가하고, 2G
로 설정하십시오:
FEATURES="ccache"
CCACHE_SIZE="2G"
ccache 기능을 확인하려면 ccache에게 통계 데이터를 제공해달라고 요청하십시오. 포티지가 다른 ccache 홈 디렉터리를 사용하기 때문에 CCACHE_DIR 변수를 임시로 설정해야합니다:
root #
CCACHE_DIR="/var/tmp/ccache" ccache -s
/var/tmp/ccache 위치는 포티지의 기본 ccache 홈 디렉터리 입니다. /etc/portage/make.conf의 CCACHE_DIR 변수 값을 설정하여 위치를 바꿀 수 있습니다.
ccache를 자체적으로 실행할 때, ${HOME}/.ccache 기본 위치를 사용하는데, 이것이 (포티지) ccache 통계를 요청할 때 CCACHE_DIR 변수를 설정해야 할 이유입니다.
포티지 외의 용도로 ccache 사용
비 포티지 컴파일을 목적으로 ccache를 사용하려면 PATH변수의 앞부분에 (/usr/bin 앞에) /usr/lib/ccache/bin을 추가하십시오. 사용자 홈 디렉터리에 있는 ~/.bash_profile을 편집하면 됩니다. ~/.bash_profile을 활용하는 방법이 PATH 변수를 정의하는 방법입니다.
PATH="/usr/lib/ccache/bin:${PATH}"
바이너리 꾸러미 지원
미리 빌드한 꾸러미 만들기
포티지는 미리 빌드한 꾸러미의 설치를 지원합니다. 젠투가 자체적으로 미리 빌드한 꾸러미를 제공하는 것은 아니지만, 포티지에서 미리 빌드한 꾸러미를 완전히 인식할 수 있습니다.
미리 빌드한 꾸러미를 만들려면, 꾸러미가 이미 시스템에 설치되어 있는 경우 quickpkg를 사용하거나, emerge에 --buildpkg
옵션 또는 --buildpkgonly
옵션을 붙여서 사용하십시오.
여러분이 설치한 모든 단일 꾸러미에 대해 포티지로 미리 빌드한 꾸러미를 만들려면 FEATURES 변수에 buildpkg
를 추가하십시오.
미리 빌드한 꾸러미를 만들기 위한 더 많은 지원은 catalyst로 받을 수 있습니다. catalyst에 대한 더 많은 정보를 보시려면 Catalyst 자주 묻는 질문en을 읽어보십시오.
미리 빌드한 꾸러미 설치
비록 젠투에서 제공하는건 아니지만, 미리 빌드한 꾸러미를 저장한 중앙 저장소를 만들 수 있습니다. 이 저장소를 사용하려면 PORTAGE_BINHOST 변수를 통해 저장소를 포티지에서 인식하도록 해야합니다. 예를 들어, 미리 빌드한 꾸러미가 ftp://buildhost/gentoo 에 있다면:
PORTAGE_BINHOST="ftp://buildhost/gentoo"
미리 빌드한 꾸러미를 설치하려면, emerge 명령에 --usepkg
옵션 다음에 --getbinpkg
옵션을 추가하십시오. 이 구성자는 후자가 emerge 에게 소스코드를 가져오고 컴파일 하기 전에 미리 빌드한 꾸러미의 설치를 시도해보라고 알리며, 앞서 정의한 서버에서 미리 빌드한 꾸러미를 내려받으라고 요청합니다.
미리 빌드한 꾸러미를 통해 gnumeric을 설치하려면:
root #
emerge --usepkg --getbinpkg gnumeric
더 많은 emerge의 미리 빌드한 꾸러미 옵션은 emerge 맨 페이지에서 찾아보실 수 있습니다:
user $
man emerge
미리 빌드한 꾸러미를 다른 곳으로 배포
미리 빌드한 꾸러미를 다른 사용자에게 배포한다면, 이 꾸러미 사용을 허락했는지 확인하십시오. 업스트림 꾸러미의 배포 조항을 확인하십시오. 예를 들어, GNU GPL 조항에 따라 꾸러미를 배포한다면, 소스코드를 바이너리와 함께 배포해야 합니다.
빌드한 바이너리를 배포할 수 없을 경우 ebuild에 RESTRICT 변수를 통해 bindist
제한을 걸 수 있습니다. 때로는 이 제한을 하나 이상의 USE 플래그에 넣을 수 있습니다.
기본적으로 포티지는 제한을 이유로 어떤 꾸러미도 가리지 않습니다. 이런 정책은 /etc/portage/make.conf에서 ACCEPT_RESTRICT 변수를 설정하여 시스템 전체적으로 바꿀 수 있습니다. 예를 들어 bindist
값을 가진 꾸러미를 가리려면 make.conf에 다음 줄을 추가하십시오:
ACCEPT_RESTRICT="* -bindist"
emerge 명령에 --accept-restrict
옵션을 적용하여ACCEPT_RESTRICT 변수를 중복 적용할 수 있습니다. 예를 들어, --accept-restrict=-bindist
옵션은 bindist
제약 조건으로 임시로 꾸러미를 가립니다.
꾸러미를 배포할 때 ACCEPT_LICENSE 변수 설정을 고려할 수 있습니다. 라이선스 항목을 참고하십시오.
각 사용자는 꾸러미 라이선스 조항과 해당 국가의 법률을 전적으로 따를 의무가 있습니다. ebuild에서 설정한 메타데이터 변수(RESTRICT 또는 LICENSE)는 바이너리 배포를 허용하지 않을 경우 지침을 제공할 수 있지만, 포티지의 출력이나 젠투 개발자가 답변한 질문이 합법인 것은 아니며, 개별적인 경우에 이러한 보편 사항을 적용하면 안됩니다. 실제 거주지의 법률에 위배되는지 신중히 검토하십시오.
파일 가져오기
Verify distfiles
To re-verify the integrity and (potentially) re-download previously removed/corrupted distfiles for all currently installed packages, run:
root #
emerge --ask --fetchonly --emptytree @world