Trans:GentooX86Handbook3-1

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

파일과 디렉터리

포티지 파일

설정 지시문

포티지 기본 설정은 /etc/make.globals에 저장합니다. 이 내용을 보시면 변수를 통해 포티지 설정을 조절한다는 것을 알아채실 것입니다. 어떤 변수들을 포티지에서 살펴보는지 이들이 나중에 어떤 의미를 지니고 있는지를 말이죠.

수많은 설정 지시문이 아키텍처에 따라 다르듯이, 포티지에서는 여러분의 프로파일의 일부로서 기본 설정 파일을 지니고 있습니다. 여러분의 프로파일은 /etc/portage/make.profile 심볼릭 링크를 가리키며, 포티지 설정내용은 여러분의 프로파일의 make.defaults와 모든 상위 프로파일에 있습니다.

설정 변수를 바꾸려 하신다면 /etc/make.globals 또는 make.defaults를 바꾸지 마십시오. 앞의 두 파일에 우선하는 /etc/portage/make.conf를 대신 사용하십시오. /usr/share/portage/config/make.conf.example에서도 내용을 찾아보실 수 있습니다. 이름을 통해 의미를 함축한 바와 같이, 이런 경우는 거의 예제 파일일 뿐입니다. 포티지에서는 이 파일을 읽어들이지 않습니다.

포티지 설정 변수를 환경 변수처럼 설정할 수 있지만, 추천하지 않습니다.

프로파일 관련 정보

이미 앞에서 /etc/portage/make.profile 디렉터리를 언급했습니다. 음, 정확히는 디렉터리는 아니고, 여러분이 다른 어딘가에 여러분 자신의 프로파일을 만든다 할지라도 기본적으로 /usr/portage/profiles에 있는 프로파일의 심볼릭 링크이며, 기본 프로파일을 가리킵니다. 이 프로파일 심볼릭 링크는 여러분의 시스템이 속한 프로파일을 가리킵니다.

프로파일에는 해당 프로파일에 속한 시스템의 패키지 목록, 프로파일 상에서 동작하지 않는 (또는 가려놓은) 패키지 등과 같이, 아키텍처와 관련된 포티지 정보를 포함합니다.

사용자 관련 설정

소프트웨어 설치와 관련한 포티지 동작의 우선 설정이 필요할 때, /etc/portage에 있는 파일을 편집해서 끝낼 수 있습니다. /etc/portage 에 있는 파일 사용을 강력히 권장 하며, 환경 변수로의 우선 설정을 웬만하면 하지 마십시오!!

/etc/portage에서 다음과 같은 파일을 만들 수 있습니다.

  • package.mask : 포티지로 설치하지 않으려는 패키지 목록 파일
  • package.unmask : 젠투 개발자들이 이머징하는 것을 강력히 만류하지만 그래도 설치할 수 있게 하는 패키지 목록 파일
  • package.accept_keywords : 시스템 또는 아키텍처에서 (아직) 패키지를 설치하는데 적당함을 발견하지 못했지만, 그래도 설치할 수 있도록 한 패키지 목록
  • package.use : 전체 시스템에서 USE 플래그를 사용하도록 제각각의 패키지에 사용하려는 USE 플래그 목록

이들 요소가 꼭 파일일 필요는 없습니다. 패키지 각각에 포함한 단 하나의 파일이어도 됩니다. /etc/portage 디렉터리와 이곳에 만들 수 있는 모든 파일 목록의 더 많은 내용은 포티지 맨페이지에서 찾아보실 수 있습니다.


코드 예제 1.1: 포티지 맨 페이지 읽기
$ man portage


포티지 파일, 디렉터리 위치 바꾸기

이전에 언급한 설정 파일은 다른 어떤 곳에는 저장할 수 없습니다. 포티지는 이들 설정 파일을 정확한 해당 위치에서 찾을 것입니다. 그러나, 포티지는 디렉터리를 빌드하고, 소스코드를 저장하며, 포티지 트리를 위치할 등의 다양한 목적으로 다른 수많은 위치들도 사용합니다.

이 목적들은 이미 잘 알려진 기본 위치를 가지지만 여러분의 구미에 따라 /etc/portage/make.conf를 통해 다른 위치로 바꿀 수 있습니다. 이 장의 나머지 부분은 포티지가 사용하는 특수한 목적의 위치들에 대해 설명하고 파일 시스템 상에서 이들을 어떻게 대체하는지에 대해서도 설명할 것입니다.

이 문서를 참고서로 쓰라는 의미는 아니지만, 완전한 배경지식이 필요하다면 포티지와 make.conf의 맨 페이지를 참조하십시오.


코드 예제 1.2: 포티지와 make.conf의 맨페이지 보기
$ man portage
$ man make.conf


저장하는 파일

포티지 트리

포티지 트리의 기본 위치는 /usr/portage 입니다. PORTDIR 변수에 지정되어 있습니다. (변수 값을 바꿔서) 다른 곳에 포티지 트리를 저장하려면, 바뀐 위치에 따라 /etc/portage/make.profile 심볼릭 링크를 바꿔주는걸 잊지 마십시오. PORTDIR 변수를 바꿨다면, PORTDIR을 바꾼 것을 알아채지 못하는 PKGDIR, DISTDIR, RPMDIR 변수들 역시 바꿔야 합니다. 포티지가 이 변수들을 다루기 때문입니다.

미리 빌드한 바이너리

기본적으로 포티지에서 미리 빌드한 바이너리를 사용하지 않지만, 이를 위해 더 광범위한 지원을 제공합니다. 포티지에 미리 빌드한 패키지로 작업하라고 요청하면, /usr/portage/packages에서 패키지를 찾을 것입니다. 이 위치는 PKGDIR 변수에 정의되어 있습니다.

소스 코드

프로그램 소스코드는 기본적으로 /usr/portage/distfiles에 저장됩니다. 이 위치는 DISTDIR 변수에 정의되어 있습니다.

포티지 데이터베이스

포티지는 (어떤 패키지를 설치했는지, 패키지에 어떤 파일이 속해있는지 등) 시스템의 상태를 /var/db/pkg에 저장합니다. 이 파일을 직접 수정하지 마십시오! 여러분의 시스템에 대한 포티지의 내부 정보를 깰 것입니다.

포티지 캐시

포티지 캐시(수정 일시, 가상 패키지, 의존성 트리 정보 등)는 /var/cache/edb에 저장합니다. 이 위치는 말 그대로 캐시 입니다. 포티지 관련 프로그램이 돌아가고 있는 상태가 아니라면 이 디렉터리를 비울 수 있습니다.

프로그램 빌드

임시 포티지 파일

포티지 임시 파일은 기본적으로 /var/tmp에 저장합니다. 이는 PORTAGE_TMPDIR 변수에 정의되어 있습니다.

PORTAGE_TMPDIR 변수를 바꿨다면, PORTAGE_TMPDIR이 바뀜을 알아채지 못한 BUILD_PREFIX 변수의 값도 바꿔주어야 합니다. 포티지가 이 변수를 다루기 때문입니다.

빌드 디렉터리

포티지는 /var/tmp/portage 안에 이머지할 각각의 패키지에 대해 각각의 빌드 디렉터리를 만듭니다. 이 위치는 BUILD_PREFIX 변수에 지정되어 있습니다.

라이브 파일 시스템 위치

기본적으로 포티지는 현재 파일시스템(/)에 모든 파일을 설치하지만, 여러분은 ROOT 환경 변수를 설정하여 위치를 바꿀 수 있습니다. 이는 여러분이 새로운 빌드 이미지를 만들 때 유용합니다.

로깅 기능

이빌드 로깅

포티지는 각각의 ebuild 에 대해 로그 파일을 만들 수 있지만, PORT_LOGDIR 변수에 설정한 위치가 포티지에서(portage 사용자가) 기록할 수 있을 때 가능합니다. 이 변수는 기본적으로 설정이 되어 있지 않습니다. PORT_LOGDIR을 설정하지 않으면, 새로운 elog로부터 어떤 로그를 받았다 할 지라도 현재 로깅 시스템에서 빌드 로그에 대한 어떤 내용도 받지 못합니다. 정의한 PORT_LOGDIR 변수를 지니고 있고 elog를 사용한다면, 아래에서 설명한 바와 같이 빌드 로그와 elog가 저장한 로그를 보실 수 있습니다.

포티지는 elog를 사용하여 세밀한 단위의 기록 기능을 제공합니다.

  • PORTAGE_ELOG_CLASSES: 이 변수는 로그를 남길 메시지의 종류를 설정하는 곳입니다. 공백으로 구분하여 다음 단어들을 함께 쓸 수 있습니다: info, warn, error, log, qa.
    • info: ebuild가 출력하는 "einfo" 메시지를 기록합니다.
    • warn: ebuild가 출력하는 "ewarn" 메시지를 기록합니다.
    • error: ebuild가 출력하는 "eerror" 메시지를 기록합니다.
    • log: ebuild가 출력하는 "elog" 메시지를 기록합니다.
    • qa: ebuild가 출력하는 "QA Notice" 메시지를 기록합니다.
  • PORTAGE_ELOG_SYSTEM: 로그 메시지를 처리할 모듈을 선택합니다. 비워둔 채로 내버려두면, 로깅을 사용하지 않습니다. 공백으로 구분하여 다음 단어들을 함께 쓸 수 있습니다: save, custom, syslog, mail, save_summary, mail_summary. elog를 사용하려면 최소한 한개 이상의 모듈을 선택해야 합니다.
    • save: $PORT_LOGDIR/elog 또는 $PORT_LOGDIR이 정의되지 않았을 경우 /var/log/portage/elog에 각각의 패키지에 대한 로그를 저장합니다.
    • custom: $PORTAGE_ELOG_COMMAND에 있는 모든 사용자 정의 명령에 메시지를 전달합니다. 다음에 언급될 것입니다.
    • syslog: 설치한 시스템 로거로 모든 메시지를 보냅니다.
    • mail: $PORTAGE_ELOG_MAILURI에 있는 사용자 정의 메일 서버에 모든 메시지를 전달합니다. 다음에 언급될 것입니다. elog의 메일 기능을 사용하시려면 portage-2.1.1 이상이 필요합니다.
    • save_summary: save와 유사하나, $PORT_LOGDIR/elog/summary.log 또는 $PORT_LOGDIR이 정의되지 않았을 경우 /var/log/portage/elog/summary.log에 모든 메시지를 합칩니다.
    • mail_summary: mail과 유사하나, emerge를 빠져나갈 때 모든 메시지를 하나의 메일에 작성해서 보냅니다.
  • PORTAGE_ELOG_COMMAND: custom 모듈을 활성화 했을때만 사용합니다. 로그 메시지를 처리할 명령을 지정하는 곳입니다. 참고로 두가지 변수를 사용하도록 할 수 있습니다. ${PACKAGE}는 패키지의 이름과 버전이고, ${LOGFILE}은 로그 파일의 절대 경로입니다. 가능한 사용 예는 다음과 같습니다:
    • PORTAGE_ELOG_COMMAND="/path/to/logger -p '\${PACKAGE}' -f '\${LOGFILE}'"
  • PORTAGE_ELOG_MAILURI: 이 변수에는 주소, 사용자, 암호, 메일서버, 포트 번호와 같은 설정 내용을 포함합니다. 기본 설정 내용은 "root@localhost localhost" 입니다.
  • 사용자 이름 및 암호 기반의 인증을 개별적인 포트(기본 포트는 25번입니다)에서 필요로 하는 smtp 서버에 대한 사용 예시 입니다.
    • PORTAGE_ELOG_MAILURI="user@some.domain username:password@smtp.some.domain:995"
  • PORTAGE_ELOG_MAILFROM: 로그 메일의 "발신" 주소를 설정하는 변수입니다. 이 변수를 설정하지 않았을 경우 기본값은 "portage"입니다.
  • PORTAGE_ELOG_MAILSUBJECT: 로그 메일의 제목 줄을 만들 수 있게 하는 변수입니다. 참고로, 두가지 변수를 사용할 수 있습니다. ${PACKAGE} 에서 패키지 이름과 버전을 표시하며, ${HOST}는 포티지가 실행중인 호스트의 완전한 자격을 갖춘 도메인 이름을 표시합니다.
  • 가능한 사용 예는 다음과 같습니다:
    • PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} was merged on \${HOST} with some messages"


중요: Portage-2.0.* 버전에서 enotice를 사용한다면 elog와 호환되지 않으므로 enotice를 완전히 제거해야 합니다.