Gentoo-WiKi

본문 바로가기
사이트 내 전체검색


Gentoo Linux >> System Administration for Gentoo Linux
[목차]
제3장 System Administration

    7. 포티지 관리하기

1.  파일 과 디렉토리


포티지 파일들

지시자 설정


  포티지는 /etc/make.globals파일에 기본 설정이 되어있는데 이 파일을 보게되면 아마 포티지 설정이란 변수들을 다루는 것이라는 것을 알 수 있을 것입니다. 어떤 포티지에서 듣는 변수가 무엇이고 또 그것이 무엇을 의미 하는지는 나중에 보도록 하겠습니다.


  아키텍쳐에 따라 다른 설정 지시자들이 많이 있는데, 당신의 프로파일이 되는 설정 파일들을 포티지 역시 가지고 있습니다. /etc/make.profile 심볼릭 링크에 의해서 당신의 프로파일이 가리켜지게 되는데 포티지 설정들은 당신과 모든 부모의 프로파일이 make.defaults 파일안에 설정되어있다. 프로파일들과 /etc/make.profile 디렉토리는 나중에 설명하도록 하겠습니다.


  만일 설정 변수들을 바꾸려한다면 절대로 /etc/make.globals 나 make.defaults를 변경하지 말고 이 파일들보다 우선하는 /etc/make.conf를 사용하기 바랍니다


  당신은 환경변수로서 포티지 설정변수를 선언할 수 있는데 사용하지 말길 권합니다.


프로파일 정의 정보 (Profile-Specific Information)


  우리는 이미 /etc/make.profile 디렉토리를 봤는데 (엄밀히 말해 디렉토리가 아니고 프로파일을 가리키는 심볼릭 링크입니다), 이것은 /usr/portage/profiles 에 있는 것들 중 기본값으로 사용하는 것입니다. 만일 사용자만의 프로파일을 만들어서 가리키게 할 수 도 있습니다. 결국 심볼릭링크 프로파일은 당신의 시스템을 나타내는 하나의 프로파일 인것입니다.


  하나의 프로파일은 포티지를 위한 아키텍쳐-정의 정보를 담고 있습니다. 특정 시스템에 해당하는 프로파일에는 동작하는 패키지들의 리스트들과 동작하지 않는 패키지 리스트등을 가지고 있습니다.


시스템에 대한 프로파일


사용자 정의 설정 (User-Specific Configuration)


  소프트웨어의 설치에 관해서 포티지의 행동을 겹쳐쓰기(Override)를 해야할때는 /etc/portage안에 있는 파일들을 설정해야만 하는데 가급적 /etc/portage 파일을 사용하길 권하고 환경 변수를 통해서는 겹쳐쓰기하기를 하지말기를 바란다.


당신이 /etc/portage 안에 새로 생성 시킬 수 있는 파일들은 다음과 같습니다.


- package.mask : 포티지에게 설치하지 않기를 원하는 리스트

- package.unmask : 젠투 개발자가 가급적 설치하지 말기를 원하는 리스트를 설치하고자 하는 리스트

- package.keywords : 여러분의 시스템이나 아키텍쳐(아직구현되지 않았음)에 적합하지 않는 리스트 패키지를 설치하고자 하는 리스트

- package.use : 다른 모든 시스템이 사용하지 않고 특정 패키지들만 USE 플래그들을 사용하고자 하는 리스트

/etc/portage 디렉토리에 관해 더 많은 정보가 필요하다면 포티지 man 페이지를 참조하기 바랍니다.

# man portage


포티지 파일과 디렉토리 위치 바꾸기


  전에 언급하기를 포티지가 항상 설정파일들을 정확한 위치에서 찾기 때문에 설정파일들은 다른 곳에 놓을 수 없다고 했지만 다른 목적( 컴파일 , 소스코드 저장, 포티지 트리 위치,....)을 위해서 포티지가 다른 위치를 사용하기도 합니다.


  이 모든 목적들은 다 이미 잘 알고 있는 기본 위치를 가지고 있는데 당신의 취향을 /etc/make.conf를 변경하므로서 바꿀 수 있습니다. 뒤부분에서 특정 목적위한 포티지가 사용하는 위치 및 어떻게 그 위치를 변경하는지에 대해서 설명합니다.


  그렇다고 해서 이 문서가 레퍼런스 처럼 사용되지는 못하니 만일 100% 이해를 하려고 한다면 포티지와 make.conf man 페이지를 참조하기 바랍니다.:

# man make.conf



2.  저장 파일들


포티지 트리(The Portage Tree)


  포티지 트리의 기본위치는 /usr/portage 입니다. 이 위치는 PORTDIR 변수에 의해서 정의되는데 만일 다른 위치에 포티지 트리를 위치 시키기 원한다면 이 변수를 바꿈으로 가능합니다 주위할 점은/etc/make.profile 심링크 또한 바꿔야 한다는걸 잊지말기 바랍니다.


  만일 PORTDIR 변수를 바꾸게 된다면 다음에 따라오는 변수들(PKGDIR, DISTDIR, RPMDIR.)이 PORTDIR이 변경되었음을 알기 위해 이들 또한 변경을 해야만 합니다.

미리생성시킨 바이너리들(Prebuilt Binaries)


  비록 포티지가 미리 생성된 바이너리들을 기본으로 사용하지 않더라고 그것들을 위해 폭넓은 확장성을 제공한다. 당신이 포티지에게 미리 생성된 바이너리를 사용하도록 물어보게되면 포티지는 /usr/portage/packages 디렉토리를 보게 되는데 이 디렉토리는 PKGDIR 변수로 정의한다.


소스 코드(Source Code)


응용프로그램의 소스코드는 기본적으로 /usr/portage/distfiles 에 저장된다. 이 위치는 DISTDIR 변수에 의해 정해지게 된다.


RPM 파일들(RPM Files)


비록 포티지가 RPM 파일들을 사용하지는 못하지만 ebuild 명령을 통해 생성을 시킬 수는 있다.(The Ebuild Application 참조). 기본 디렉토리는 /usr/portage/rpm 이고 RPMDIR 변수에 의해 정의된다.


포티지 데이터베이스(Portage Database)


포티지는 당신의 시스템 상태(어떤 패키기가 설치되었는가?, 어떤 파일이 어떤 패키지에 속하는가?...)를 /var/db/pkg에 저장하는데 절대로 이 파일들은 변경하지 말라. 이유는 변경으로 인해서 당신의 시스템 정보를 파괴할 수 있기 때문이다.


포티지 캐쉬(Portage Cache)


이것은 말그대로 변경된 날짜나 트리의 의존성 정보 등이 /var/cacahe/edb에 저장되는 캐시일 뿐이다. 따라서 만일 포티지 관련 응용프로그램들이 사용중이 아니라면 지워도 된다.


1.c. 소프트웨어 만들기(Building Software)

임시 포티지 파일들(Temporary Portage Files)


포티지의 임시 파일들은 /var/tmp 에 저장되는데 이 위치는 PORTAGE_TMPDIR 변수를 통해 정해진다.


만일 PORTAGE_TMPDIR 변수를 변경하게 된다면 다음에 따라오는 변수(BUILD_PREFIX) 또한 변경을 해야만 한다.


빌드 디렉토리(Building Directory)


각 패키지는 /var/tmp/portage 안에서 emerge되는데 이 위치는 BUILD_PREFIX 변수에 의해 정의된다.


라이브 파일시스템 위치(Live Filesystem Location)


기본적으로 포티지는 모든 파일을 현재 파일시스템(/)에 설치를 하는데 ROOT 환경 변수를 통해서 변경가능하다.이 기능은 당신이 새로운 빌드 이미지(build images)들을 생성할때 유용하다.


1.d. 로그 기능(Logging Features)

Ebuild 로깅(Ebuild Logging)


포티지는 각 ebuild 마다 로그파일들을 생성할 수 있는데 PORT_LOGDIR 변수가 포티지 사용자에 의해 정의 되었을 때에만 사용가능하다. 기본적으로 이 변수는 설정 되어있지 않다.


2. 변수를 통한 설정

2.a. 포티지 설정(Portage Configuration)


전에 언급했드시 포티지는 많은 변수들(/etc/make.conf안에 정의된)을 통해서 설정할 수 있다고 했다.

(만일 완전한 정보를 보기원한다면 Man페이지를 참조하라.)


Code Listing 1: make.conf man 페이지 보기

$ man make.conf



2.b. 생성 정의 옵션들(Build specific Options)

설정 및 컴파일러 옵션들


응용프로그램을 포티지가 생성(build)할때 아래의 변수들의 내용을 컴파일러와 설정 스크립트에게 전달한다:


CFLAGS & CXXFLAGS 는 C 와 C++ 컴파일을 위해 원하는 컴파일러 플래그들을 정의한다.

CHOST : 응용프로그램들의 설정 스크립트를 위한 생성 호스트 정보(build host information)를 정의한다.

MAKEOPTS : 이것은 make 명령에게 전달 되는데 이것은 일반적으로 컴파일시 병렬화의 정도를 말한다. 만일 더 많은 make옵션을 알고자 한다면 make man 페이지를 참조한다.

USE 변수도 역시 설정과 컴파일시 이용이 되는데 앞에서 이미 설명되었다.


설치 옵션들(Merge Options)


포티지는 만일 어떤 새로운 소프트웨어를 설치하였다면 구버젼의 파일들을 당신의 시스템으로부터 지우게 될것이다.이때 포티지는 지우기 전에 사용자에게 5초의 시간을 주게 되는데 이 5초라는 시간은 CLEAN_DELAY 변수에 의해 정의된다.


2.c. 파일 보호 설정

포티지의 보호된 위치들 (Portage's Protected Locations)


포티지는 만일 보호된 위치에 어떤 소프트웨어의 파일들이 저장되어있지 않다면 새로운 버젼의 파일들로 덮어쓰기를 한다. 이 보호된 위치는 CONFIG_PROTECT 변수에 의해 정의되고 이 위치들은 일반적으로 설정파일들이 위치하는곳이다.


보호된 위치가 저장되어있는 파일 이름이 변경된다면 사용자는 새로운 버젼의 설정 파일 존재에 대해서 경고를 받게 된다.


다음 명령으로 현재 CONFIG_PROTECT 설정에 대해서 더 자세히 알 수 있다:


Code Listing 2: CONFIG_PROTECT 설정 알아내기

$ emerge --info | grep 'CONFIG_PROTECT='



포티지의 파일 보호설정에 대한 더 많은 정보는 다음 명령으로 볼 수 있다:


Code Listing 3: 파일 보호 설정에 대한 더많은 정보 보기

$ emerge --help config



제외 디렉토리(Excluding Directories)


보호된 위치의 하위디렉토리를 보호해제하려한다면 CONFIG_PROTECT_MASK 변수를 사용한다.


2.d. 다운로드 옵션들(Download Options)

서버 위치들(Server Locations)


당신의 시스템에 정보나 데이터가 요구된다면, 포티지는 인터넷으로부터 찾을 것이다. 다양한 정보와 데이터 채널을 위한 서버 위치는 다음 변수들에 정의 되어있다:


GENTOO_MIRRORS : 소스코드(distfiles)를 가지고 있는 서버 위치 리스트

PORTAGE_BINHOST : 당신의 시스템을 위해 이미 컴파일된 패키지를 가지고 있는 특정 서버 위치

세번째 설정은 rsync 서버와 연관되어있는데 이것은 당신이 포티지 트리를 업데이드 할 때 쓰인다:


SYNC : 포티지 트리를 가져올때 사용하는 특정 서버

GENTOO_MIRRORS 와 SYNC 변수는 mirrorselect 응용프로그램을 통해서 자동적으로 설정이 될 수 있다. 이것을 사용하기 위해서는 먼저 emerge mirrorselect를 해야만 한다.

만일 더 많은 정보가 필요하다면 mirrorselect의 온라인 설명서를 보도록 하라:


Code Listing 4: mirrorselect에 대한 정보보기

# mirrorselect --help



만일 당신의 환경이 프록시 서버를 사용해야한다면 HTTP_PROXY, FTP_PROXY , RSYNC_PROXY 변수들을 사용하여 프록시서버를 정의하기 바란다.


패치 명령(Fetch Commands)


포티지가 소스코드를 패치하기 원한다면 기본적으로 wget을 사용한다. 만일 이 방식으로 바꾸고자한다면 FETCHCOMMAND 변수를 변경하면 된다.


포티지는 다운로드가 끝나지 않은 소스코드를 이어서 받을 수 있다. 이것은 wget을 기본으로 사용을 하는데 하지만 RESUMECOMMAND 변수를 통해서 가능하다.


확실히 해야할 점은, 당신의 FETCHCOMMAND와 RESUMECOMMAND가 소스코드를 정확한 위치에 저장하도록 해야한다. 변수 안에는 반드시 \${URI} 와\${DISTDIR} 를 사용하여서 소스코드와 distfiles 위치를 가리키도록 해야한다.


당신은 역시 프로토콜 정의 핸들러와 함께 FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP를 설정할 수 있다.


Rsync 설정들(Rsync Settings)


당신은 포티지 트리를 업데이트 하기 위해 rsync 명령을 변경할 수 없지만 rsync 명령에 관련되는 특정 변수는 설정할 수 있다:


RSYNC_EXCLUDEFROM 는 패키지의 파일 리스트를 가리키고 혹은 업데이트 작업시 rsync에의해 무시되는 카테고리이다.

RSYNC_RETRIES : rsync가 연결실패시 재시도를 할것인지 정의. 기본은 3번임.

RSYNC_TIMEOUT : rsync시 일정시간동안 아무런 동작을 하지 않을 경우 접속을 끊게할 시간 (기본 180초).

2.e. 젠투 설정

브랜치 선택(Branch Selection)


당신은 ACCEPT_KEYWORDS 변수를 사용해서 기본 브랜치를 변경할 수 있다. 기본적으로 아키택쳐의 안정 브랜치가 선택되어있다.

만일 더 많은 정보는 다음 챕터에서 찾을 수 있다.


포티지 기능(Portage Features)


당신은 특정 포티지 기능을 FEATURES 변수를 통해서 사용할 수 있다. 포티의 기능은 전 챕터에서 다루었다.Portage Features.


2.f. 포티지 행동(Portage Behaviour)

자원 관리(Resource Management)


PORTAGE_NICENESS 변수를 사용하면 nice 값(프로그램의 실행 스케쥴 순위) 을 증가시키시키거나 감소시킬 수 있다. 이 변수는 현재 nice 값에 자신의 값을 더한다.


nice 값에 대한 더 많은 정보를 알고 싶다면 nice man page를 참조하라:


Code Listing 5: More information about nice

$ man nice



출력 행동(Output Behaviour)


NOCOLOR는 기본으로 "false"로 설정되어있는데 만일 컬러로 출력되게 하려면 반드시 false로 하기 바란다.


3. 소프트웨어 브랜치들의 혼합(Mixing Software Branches)

3.a. 하나의 브랜치 사용(Using One Branch)

안정 브랜치(The Stable Branch)


ACCEPT_KEYWORDS 변수는 당신의 시스템에 어떤 소프트웨어 브랜치를 사용할 지를 정의하는데, 기본적으로 당신의 아키택쳐를 위한 안정 브랜치로 성정되어있다.(예,x86)



테스트 브랜치(The Testing Branch)


만일 당신이 더 최신소프트웨어를 사용하기 원한다면 포티지로 하여금 테스트 브랜치를 사용하게 할 수 있다.( 아키텍쳐 앞에 '~'를 붙임으로서 가능하다)


테스트 브랜치는 말그대로 테스트이다. 만일 패키지가 테스트 중(이말은 개발자 느낌에 동작은 하나 여전히 테스트가 끝나지 않았음으로 의미).

당신도 패키지의 버그를 발견하는 첫번째 사람이 될 수도 있다. 이 경우bugreport 에 알려 개발자들이 알게해주도록 하기 바란다.


예) x86 아키텍쳐의 테스트 브랜치 선택할 경우 /etc/make.conf 를 편집하여 설정을 한다:


Code Listing 1: ACCEPT_KEYWORDS 변수 설정

ACCEPT_KEYWORDS="~x86"



만일 당신의 시스템을 업데이트 하게 되면 많은 패키지가 업데이트 될 것이라는 것을 찾아낼 것이다. 명심해야할 것은 당신이 시스템은 테스트 브랜치로 업데이트 했을 경우 다시 안정 브랜치로 돌아갈 방법이 없다는 것을 기억해야한다.(백업/복원 예외)


3.b. 안정 과 테스트 브랜치의 혼합(Mixing Stable with Testing)

package.keywords 파일


당신은 포티지에게 특정 패키지만 테스트 브랜치를 사용하도록 물어볼 수 있다. 이렇게 하기 위해서는 패키지 카테고리와 이름을 /etc/portage/package.keywords에 넣도록 한다. 예) gnumeric 테스트 브랜치를 사용하고자 할 경우 :


Code Listing 2: /etc/portage/package.keywords gnumeric의 테스트 브랜치 사용

app-office/gnumeric ~x86



특정 버젼의 테스트(Test Particular Versions)


당신이 테스트 브랜치의 특정 버전의 소프트웨어만을 사용하고자 한다면 당신은 package.keywords 파일에 버젼을 정의할 수 있다. 이 경우 당신은 반드시 '=' 를 사용해야한다. 또한 당신은 버전의 범위를 정하기 위해 다음의 연산자를 사용할 수도 있다.( 연산자: <= , < , > , >= )


버전정보를 추가할 경우 당신은 반드시 연산자를 사용해야하는데 만일 버전을 빼게 된다면 연산자는 사용할 수 없다.


다음 예제는 포티지에게 gnumeric-1.2.13을 사용하도록 물어보는 것이다:


Code Listing 3: 특정 버전의 gnumeric 테스트 버젼을 사용하도록 설정

=app-office/gnumeric-1.2.13 ~x86



3.c. 마스크된 패키지 사용하기(Using Masked Packages)

package.unmask 파일


젠투 개발자들에 의해서 패키지가 마스크 되었지만 그래도 사용을 원한다면 과 /etc/portage/package.unmask안에 /usr/portage/profiles/package.mask 파일에 나와있는 그대로 추가를 한다.


예로 만일 =net-mail/hotwayd-0.8 가 마스크 되어있다면 당신은 그 라인과 똑같은 라인을package.unmask 파일에 추가함으로 마스크를 풀수 있다:


Code Listing 4: /etc/portage/package.unmask

=net-mail/hotwayd-0.8



package.mask 파일


만일 포티지에 의해 특정 패키지나 버젼이 설치되지 않길 원한다면 /etc/portage/package.mask에 그에 맞는 내용을 추가하면 된다.


예로 만일 당신이 포티지로하여금gentoo-sources-2.6.8.1소스보다 높은 버젼을 설치하게 하고 싶다면, package.mask에 다음과 같이 추가하면 된다:


Code Listing 5: /etc/portage/package.mask

>sys-kernel/gentoo-sources-2.6.8.1


[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.