Trans:GentooX86Handbook2-1

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

포티지 소개

포티지의 세계에 잘 오셨습니다

포티지는 아마도 프로그램 관리에 있어서 가장 주목할만한 혁신 요소가 아닐까 싶습니다. 상당한 유연성과 엄청난 양의 기능들과 함께 리눅스에서 사용할 수 있는 최고의 프로그램 관리 도구로서 자주 볼 수 있는 존재입니다.

포티지는 파이선배시로 완전히 작성되었기에 사용자들에게 완전히 두 스크립트 언어로 보일 것입니다.

대부분의 사용자들은 emerge 도구를 통해 포티지로 작업할 것입니다. 이 장의 내용은 emerge man 페이지에서 볼 수 있는 정보를 베꼈음을 의미하지 않습니다. emerge 옵션의 완전한 설명은 man 페이지를 참조하시기 바랍니다.


코드 예제 1.1: emerge man 페이지 읽기
$ man emerge


포티지 트리

Ebuild

꾸러미에 대해 이야기할 때면 종종 포티지 트리에서 젠투 사용자들이 사용할 수 있는 프로그램의 제목을 의미합니다. 포티지 트리는 포티지가 프로그램을 관리(설치, 검색, 요청 등)하기 위해 필요로 하는 모든 정보가 들어간 ebuild 파일의 모음입니다.이 ebulid 파일들은 기본적으로 /usr/portage 안에 있습니다.

여러분이 관심있는 프로그램 제목에 대해 어떤 동작을 요청할 때마다 시스템의 기반 요소로서 ebuild를 사용할 것입니다. 그렇기 때문에 시스템의 ebuild를 주기적으로 갱신하여 포티지가 새 프로그램과 보안 갱신 등을 알리는 것은 매우 중요합니다.

포티지 트리 갱신

보통 포티지 트리는 빠른 증분 파일 전송 유틸리티 rsync로 갱신 합니다. emerge 명령을 rsync의 프론트엔드로 제공하는 만큼 포티지 트리 갱신은 상당히 간단합니다.


코드 예제 2.1: 포티지 트리 갱신하기
# emerge --sync


방화벽 제한때문에 rsync를 사용할 수 없다 하더라도 매일 생성하는 포티지 트리 스냅샷을 사용하여 포티지 트리를 갱신할 수도 있습니다. emerge-websync 도구는 여러분의 시스템에 최신 스냅샷을 가져오고 설치합니다.


코드 예제 2.2: emerge-websync 실행하기
# emerge-websync


emerge-websync를 사용하는 추가적인 장점은 관리자가 젠투 릴리즈 엔지니어링 GPG 키로 서명한 포티지 트리 스냅샷만 가져오도록 한다는 점입니다. 이에 대한 자세한 내용은 [포티지 기능]의 [검증된 포티지 트리 스냅샷 가져오기]에서 찾으실 수 있습니다.

프로그램 관리

프로그램 검색

프로그램의 제목으로 포티지 트리를 검색하려면 emerge의 내장 검색 기능을 사용할 수 있습니다. 기본적으로 emerge --search는 주어진 단어에 대해 (완전히 혹은 부분적으로) 일치하는 제목을 가진 꾸러미의 이름을 반환합니다.

예를 들어 pdf라는 이름을 포함한 모든 꾸러미를 검색하려면


코드 예제 3.1: pdf 이름을 가진 꾸러미 검색하기
# emerge --search pdf


이와 마찬가지로 설명에서 검색하려면 --searchdesc (또는 -S) 스위치를 사용할 수 있습니다.


코드 예제 3.2: pdf 관련 꾸러미 검색하기
# emerge --searchdesc pdf


출력 내용을 봤을 때 많은 정보가 주어진 알림을 보게 될 것입니다. 이 내용들은 확실히 이름표를 붙여놓았기 때문에 의미를 찾아보기 위해 그 이상 들어가지 않을 것입니다.


코드 예제 3.3: 'emerge --search' 출력 예제
*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2


프로그램 설치하기

여러분이 원하는 프로그램 제목을 찾았다면 emerge로 프로그램을 쉽게 설치할 수 있습니다. 그냥 꾸러미 이름을 덧붙이시면 됩니다. 예를 들어 gnumetric을 설치한다고 할 때


코드 예제 3.4: gnumetric 설치하기
# emerge gnumetric



수많은 프로그램이 서로 의존관계가 있기 때문에 어떤 프로그램 꾸러미의 설치를 시도하면 이처럼 수많은 의존요소를 설치하게 됩니다. 포티지가 의존요소를 잘 관리하니 걱정하지 않으셔도 됩니다. 여러분이 어떤 꾸러며의 설치를 요청했을 경우 포티지가 설치할 꾸러미를 찾고 싶다면 --pretend 스위치를 덧붙이십시오. 예를 들자면


코드 예제 3.5: gnumetric 설치 가정하기
#emerge --pretend gnumetric


포티지에 꾸러미 설치를 요청하면 (필요하다면) 인터넷에서 필요한 소스코드를 내려받고 기본적으로 /usr/portage/distfiles에 저장할 것입니다. 그 다음에 압축을 풀고 컴파일한 다음 꾸러미를 설치할 것입니다. 포티지가 꾸러미를 설치하지 않고 소스코드를 다운로드하기만 원한다면 emerge명령에 --fetchonly를 덧붙이도록 합니다.


코드 예제 3.6: gnumetric 소스코드 내려받기
# emerge --fetchonly gnumetric


설치한 꾸러미 문서 찾기

대부분의 꾸러미는 문서가 딸려옵니다. 때때로 doc USE 플래그는 꾸러미의 문서를 설치할 것인지 말 것인지를 결정합니다. doc USE 플래그의 존재 유무는 emerge -vp <package name>명령으로 확인할 수 있습니다.


코드 예제 3.7: doc USE 플래그의 존재 유무 확인
(물론, alsa-lib는 예시일 뿐입니다)

# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB


doc USE 플래그를 활성화 하는 가장 좋은 방법은 /etc/portage/package.use를 통해 꾸러미마다 활성화 하여 여러분이 보유하고 싶은 해당 꾸러미에 대한 문서를 획득하는 것입니다. 시스템 전체적으로 플래그를 활성화 하는 것은 순환 의존성 문제를 유발하는 것으로 알려져 잇습니다. 더 자세한 이야기에 대해서는 [USE 플래그]장을 읽어보시기 바랍니다.

꾸러미를 설치하고 나면 꾸러미에 대한 문서는 보통 /usr/share/doc 디렉터리 아래의 꾸러미 이름이 달린 하위디렉터리 밑에서 찾을 수 있습니다. app-portage/gentoolkit [꾸러미] (역자 주: gentoolkit 문서로의 연결 필요) 의 일부인 equery도구를 사용하면 설치한 모든 파일의 목록을 볼 수 있습니다.


코드 예제 3.8: 꾸러미 문서 불러오기
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(대신, 찾으려는 파일을 찾기 위해 equery를 사용합니다.)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1

  • Contents of media-libs/alsa-lib-1.0.14_rc1:

/usr
/usr/bin
/usr/bin/alsalisp
(이하 생략)


프로그램 제거하기

프로그램 꾸러미를 시스템에서 제거하려고 할 때 emerge --unmerge를 사용하십시오. 이 명령은 설치 이후 바뀐 프로그램의 설정 파일을 제외하고 여러분의 시스템에서 꾸러미로부터 설치한 모든 파일을 제거하도록 포티지에 알릴 것입니다. 설정 파일을 남겨줌으로서 꾸러미를 다시 설치하기로 했을때 꾸러미로 작업하는 것을 계속할 수 있게 해줍니다.

그러나 중요한 경고 를 해야겠습니다. 포티지는 제거하는 꾸러미가 다른 꾸러미에서 필요로 하는지에 대한 여부는 확인하지 않습니다. 여러분이 이 꾸러미를 제거할 때 여러분의 시스템을 깨는 중요한 꾸르미를 제거하려 할 때도 경고할 것입니다.


코드 예제 3.9: 시스템에서 gnumetric 제거하기
emerge --unmerge gnumetric


시스템에서 꾸러미를 제거할 때는, 프로그램을 설치했을 때 자동으로 설치한 꾸러미들의 의존요소는 그대로 남습니다. 제거할 수 있는 모든 의존요소를 포티지가 찾도록 하려면 emerge--depclean을 기능적으로 사용하도록 합니다. 이에 대해서는 다음에 이야기하도록 하겠습니다.

시스템 갱신하기

시스템의 완벽한 모양새를 유지하(고 최신 보안 갱신 요소를 설치하도록 알림을 받지 않으)려면 시스템을 주기적으로 갱신할 필요가 있습니다. 여러분이 처음 포티지 트리를 갱신할 때 포티지 트리에서 ebuild만 확인합니다. 포티지 트리를 갱신하면, emerge --update world로 시스템을 갱신할 수 있습니다. 다음 예제에서는 --ask 스위치를 사용하여 업그레이드할 꾸러미의 목록을 표시하고 계속 할 것인지에 대한 여부를 물을 것을 포티지에 요청하겠습니다.


코드 예제 3.10: 시스템 갱신하기
# emerge --update --ask world


포티지는 여러분이 설치한 프로그램의 최신 버전을 찾을 것입니다. 그러나 이는 여러분이 확실히 설치한 프로그램의 버전만을 확인할 것입니다 (프로그램의 목록은 /var/lib/portage/world에 있습니다). 이는 의존성까지 철저히 확인하진 않습니다. 이렇게 여러분이 의존 요소까지 갱신하고 싶으시다면 --deep 인자를 덧붙이도록 합니다.


코드 예제 3.11: 의존요소를 포함하여 시스템 갱신하기
# emerge --update --deep world


이는 여전히 모든 꾸러미를 의미하는 것은 아닙니다. 여러분의 시스템에 있는 일부 꾸러미는 컴파일 및 빌드과정에 필요하지만 꾸러미의 설치가 끝나면 이 의존성은 더이상 필요치 않습니다. 포티지는 이를 빌드 의존성이라고 부릅니다. 갱신 주기때마다 이들을 포함하려면 --with-bdeps=y를 덧붙이도록 합니다.


코드 예제 3.12: 전체 시스템 갱신하기
# emerge --update --deep --with-bdeps=y world


여러분은 시스템에 명시적으로 설치하지 않(지만 다른 프로그램의 의존요소로서 끌려옵니다)은 꾸러미에서 보안 갱신이 일어날 때,이 명령을 가끔씩은 실행해주는 것을 추천합니다.

어떤 [USE 플래그]를 최근 바꾸었다면, 그에 따라 --newuse를 추가하고 싶으실지도 모릅니다. 포티지는 플래그의 변경이 새 꾸러미의 설치 또는 존재하는 꾸러미의 재 컴파일을 요구하는 경우 이를 검증할 것입니다.


코드 예제 3.13: 완전한 갱신 수행
# emerge --update --deep --with-bdeps=y --newuse world