Handbook:Parts/Working/Portage/ko

포티지로 오신것을 환영함
포티지는 아마도 프로그램 관리에 있어서 가장 주목할만한 혁신 요소가 아닐까 싶습니다. 상당한 유연성과 방대한 기능들로 갖춰진 포티지는 자주 볼 수 있는 최고의 리눅스용 프로그램 관리 도구입니다.

포티지는 온전히 파이썬과 배시로 작성했기에 사용자들에게 완전히 두 스크립트 언어로 보입니다.

대부분의 사용자들은  도구로 포티지를 다룹니다. 이 장의 내용은 emerge 맨 페이지에서 볼 수 있는 정보를 베끼지 않았습니다. emerge 옵션의 전체 설명은 man 페이지를 참조하십시오:

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

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

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

방화벽 제한때문에 를 사용할 수 없어도, 매일 만드는 포티지 트리 스냅샷으로 포티지 트리를 업데이트할 수 있습니다. 도구는 시스템에 최신 스냅샷을 가져오고 설치합니다.

를 사용하는 또 다른 장점은 관리자가 젠투 출시 엔지니어링 GPG키로 서명한 포티지 트리 스냅샷만 가져올 수 있다는 점입니다. 이에 대한 자세한 내용은 포티지 기능의 검증된 포티지 트리 스냅샷 가져오기에서 찾으실 수 있습니다.

프로그램 검색
There are multiple ways to search through the portage tree for software. One way is through  itself. By default,  returns the names of packages whose title matches (either fully or partially) the given search term.

For instance, to search for all packages who have "pdf" in their name:

To search through the descriptions as well, use the  (or  ) switch:

Notice that the output returns a lot of information. The fields are clearly labelled so we won't go further into their meanings:

프로그램 설치
When a software title has been found, then the installation is just one  command away. For instance, to install gnumeric:

Since many applications depend on each other, any attempt to install a certain software package might result in the installation of several dependencies as well. Don't worry, portage handles dependencies well. To find out what portage would install, add the  switch. For instance:

During the installation of a package, portage will download the necessary source code from the Internet (if necessary) and store it by default in. After this it will unpack, compile and install the package. To tell portage to only download the sources without installing them, add the  option to the emerge command:

설치한 꾸러미의 문서 찾기
Many packages come with their own documentation. Sometimes, the doc USE flag determines whether the package documentation should be installed or not. To see if the doc USE flag is used by a package, use.

The best way of enabling the doc USE flag is doing it on a per-package basis via, so that only the documentation for the wanted packages is installed. For more information, please read the USE flags chapter.

Once the package installed, its documentation is generally found in a subdirectory named after the package under the directory. It is also possible to list all installed files with the  tool which is part of the  package.

프로그램 제거
To remove software from a system, use. This will tell Portage to remove all files installed by that package from the system. One exception to this are the configuration files of that application if they have been altered by the user. Leaving the configuration files allows users to continue working with the package without the need for reconfiguration if the packages are installed again later on.

When a package is removed from the system, the dependencies of that package that were installed automatically when it was installed are still left on the system. To have Portage locate all dependencies that can now be removed, use emerge's  functionality, which is documented later.

시스템 업데이트
To keep the system in perfect shape (and not to mention install the latest security updates) it is necessary to update the system regularly. Since Portage only checks the ebuilds in the portage tree, the first thing to do is to update the Portage tree. When the Portage tree is updated, the system can be updated using. In the next example, the  switch is also used which will tell Portage to display the list of packages it wants to upgrade and ask for confirmation:

Portage will then search for newer version of the applications that are installed. However, it will only verify the versions for the applications that are explicitly installed (the applications listed in ) - it does not thoroughly check their dependencies. To update the dependencies of those packages as well, add the  argument:

Still, this doesn't mean all packages: some packages on the system are needed during the compile and build process of packages, but once that package is installed, these dependencies are no longer required. Portage calls those build dependencies. To include those in an update cycle, add :

Since security updates also happen in packages that are not explicitly installed on the system (but that are pulled in as dependencies of other programs), it is recommended to run this command once in a while.

If the USE settings of the system have been altered, it is recommended to add  as well. Portage will then verify if the change requires the installation of new packages or recompilation of existing ones:

메타꾸러미
Some packages in the Portage tree don't have any real content but are used to install a collection of packages. For instance, the package will install a complete KDE environment on the system by pulling in various KDE-related packages as dependencies.

To remove such a package from your system, running  on the package won't have much effect as the dependencies remain on the system.

Portage has the functionality to remove orphaned dependencies as well, but since the availability of software is dynamically dependent it is important to first update the entire system fully, including the new changes applied when changing USE flags. After this one can run  to remove the orphaned dependencies. When this is done, it might be necessary to rebuild the applications that were dynamically linked to the now-removed software titles but don't require them anymore, although recently support for this has been added to portage.

All this is handled with the following three commands:

is provided by the package; don't forget to emerge it first:

라이선스
Beginning with Portage version 2.1.7, it is possible to accept or reject software installation based on its license. All packages in the tree contain a LICENSE entry in their ebuilds. Running  will show the package's license.

By default, Portage permits all licenses, except End User License Agreements (EULAs) that require reading and signing an acceptance agreement.

The variable that controls permitted licenses is called, which can be set in. In the next example, this default value is shown:

With this configuration, packages that require interaction during installation to approve their EULA will not be installable. Packages without an EULA will be installable.

It is possible to set  globally in, or to specify it on a per-package basis in.

For example, to allow the license for, add the following to :

이를 통해 라이선스를 가진 truecrypt 버전을 설치하지만,  라이선스를 가진 프로그램은 설치하지 않습니다.

에 정의한 라이선스 그룹은 기호가 붙습니다. 일반적으로 요청하는 설정은 자유 소프트웨어 및 자유 문서의 설치만 허용하는 설정입니다. 이렇게 하려면 현재 허용하는 라이선스를 제거하고 다음과 같이 자유 그룹에 속한 라이선스만 허용하십시오:

이 경우 "free"는 대부분 보통 FSF나 OSI에서 설명합니다. 이 요구사항을 만나지 않는 라이선스를 가진 꾸러미는 시스템에 설치하지 않습니다.

용어
우리가 이전에 언급한대로라면, 포티지는 굉장히 강력하며 다른 프로그램 관리도구에서 빠진 수많은 기능을 지원한다고 했습니다. 이러한 점을 이해하기 위해, 더 자세히는 말고 적당한 선에서 포티지의 일부 모양새를 설명하도록 하겠습니다.

포티지에서 단일 꾸러미의 각기 다른버전이 시스템에 공존할 수 있습니다. 다른 배포판에서는 버전에 이름을 같이 붙이려 (예를 들자면 freetype과 freetype2와 같이) 하지만, 포티지는 SLOT이라는 용어를 사용합니다. ebuild는 이 버전에 대해 각각의 SLOT을 선언합니다. 제각각의 슬롯이 부여된 ebuild는 시스템에 공존할 수 있습니다. 예를 들어 freetype 꾸러미는 ebuild에 SLOT="1"과 SLOT="2"가 있습니다.

There are also packages that provide the same functionality but are implemented differently. For instance, metalogd, sysklogd and syslog-ng are all system loggers. Applications that rely on the availability of "a system logger" cannot depend on, for instance, metalogd, as the other system loggers are as good a choice as any. Portage allows for virtuals: each system logger is listed as an "exclusive" dependency of the logging service in the logger virtual package of the virtual category, so that applications can depend on the package. When installed, the package will pull in the first logging package mentioned in the package, unless a logging package was already installed (in which case the virtual is satisfied).

Software in the portage tree can reside in different branches. By default the system only accepts packages that Gentoo deems stable. Most new software titles, when committed, are added to the testing branch, meaning more testing needs to be done before it is marked as stable. Although the ebuilds for those software are in the portage tree, portage will not update them before they are placed in the stable branch.

Some softwares are only available for a few architectures. Or the software doesn't work on the other architectures, or it needs more testing, or the developer that committed the software to the portage tree is unable to verify if the package works on different architectures.

Each Gentoo installation also adheres to a certain profile which contains, amongst other information, the list of packages that are required for a system to function normally.

차단 꾸러미
Ebuild에는 의존성에 대해 포티지에 알려줄 특정 내용을 포함하고 있습니다. 이들 중에 두가지 가능한 의존성이 있습니다. 하나는 빌드 의존성에 대해 선언한 DEPEND이고 다른 하나는 실행시간 의존성에 대해 선언한 RDEPEND 입니다. 이들 의존성 중 하나가 호환되지 않는 꾸러미나 가상요소를 분명하게 지목했다면 실행시 막아버립니다.

포티지의 최근 버전은 사용자가 따로 설정하지 않아도 별로 중요하지 않은 차단 같은건 충분히 알아서 잘 처리합니다만 경우에 따라서는 아래에 설명한대로 직접 고쳐야 할 때도 있습니다.

차단 상황을 고치려면, 꾸러미를 설치하지 않거나 차단을 유발하는 꾸러미를 먼저 제거하는 방법 둘 중 하나를 정할 수 있습니다. 주어진 예제에서는, postfix를 설치하지 않거나 ssmtp를 먼저 제거하는 방법을 선택할 수 있습니다.

와 같이 특정 요소에 대한 차단 꾸러미를 볼 수도 있습니다. 이런 경우에는 차단 꾸러미의 최신 버전으로 업데이트 하면 차단이 풀립니다.

아직 설치하지 못한 서로 차단하는 두 꾸러미들에게도 가능한 방법이 있습니다. 이 드문 경우에는 왜 두 꾸러미를 설치해야 하는지를 알아야 합니다. 대부분의 경우 둘 중 하나만 설치할 수 있습니다. 둘 다 설치해야 한다면, 젠투 버그 추적 시스템에 버그를 제출하십시오.

가려놓은 꾸러미
시스템에서 사용할 수 없는 꾸러미를 설치하려 할 때 이런 가려짐 오류가 나타납니다. 시스템에서 쓸 수 있는 다른 프로그램을 설치하려고 하거나 꾸러미가 쓸 수 있는 상태가 될 때까지 기다리셔야 합니다. 꾸러미를 가린 이유는 얼마든지 있습니다:


 * ~arch 키워드
 * 안정 브랜치에 놓이도록 충분한 시험을 거치지 않은 프로그램을 의미합니다. 며칠 혹은 몇 주 기다려보시고 다시 시도해보세요.


 * -arch 키워드 또는 -* 키워드
 * 여러분이 보유한 아키텍처에서 동작하지 않음을 의미합니다. 꾸러미가 동작한다는 믿음이 있다면 버그질라 웹사이트에 버그로 올려주십시오.


 * missing keyword
 * 여러분이 보유한 아키텍처에서 시험을 하지 않았음을 의미합니다. 아키텍처 포팅 팀에 꾸러미 시험을 의뢰하거나 그 팀원들을 위해 시험해주고 여러분이 발견한 사실에 대해 버그질라 웹사이트에 보고해주십시오.


 * package.mask
 * 충돌, 불안정, 문제를 발견하여 의도적으로 '사용하지 마십시오'라고 표시한 꾸러미를 의미합니다.


 * profile
 * 꾸러미가 여러분의 프로파일에 맞지 않다는 것을 발견했음을 의미합니다. 이 꾸러미나 여러분의 프로파일에 호환되지 않는 요소를 설치했을 경우 해당 프로그램이 시스템을 깰 수도 있습니다.


 * license
 * 여러분이 설정한 ACCEPT_LICENSE와 설치하려는 꾸러미의 라이선스가 호환되지 않음을 의미합니다. 나 에서 해당 라이선스나 올바른 라이선스 그룹을 허용하십시오.

USE 플래그 변경의 필요성
를 설정하지 않았을 때 다음과 같은 오류메시지가 뜰 때도 있습니다.

다른 꾸러미에만 의존하지 않는 꾸러미를 설치하려 할 때 이런 경고나 오류가 발생하지만, 어떤 USE 플래그 (또는 USE 플래그 모음)로 꾸러미를 반드시 빌드해야 할 필요가 있을때에도 그렇습니다. 주어진 예제에서는 app-text/feelings 꾸러미가 USE="test" 로 빌드해야겠지만 시스템에 이 플래그를 설정하지 않은 상황입니다.

이 문제를 해결하려면 의 전역 USE 플래그에 요구하는 USE 플래그를 추가하거나 에 지정 꾸러미에 대한 플래그를 설정하십시오.

빠진 의존성
시스템에 존재하지 않는 다른 꾸러미에 의존하여 프로그램을 설치하려고 했습니다. 이미 알려진 문제라면 버그질라를 확인해주시고, 없다면 보고해 주시기 바랍니다. 브랜치를 뒤섞어 엎어놓지 않는한 이 일은 발생하지 않겠지만, 그렇기 때문에 이런 현상은 버그입니다.

애매모호한 이빌드 이름
설치하려는 프로그램이 하나 이상의 꾸러미와 관련된 이름을 지니고 있습니다. 이럴 경우 카테고리 이름을 같이 넣어줘야 합니다. 포티지는 선택할 수 있는 일치 항목을 알려줍니다.

순환 의존성
설치하려는 둘 (이상) 의 꾸러미가 서로 의존성을 가져 설치할 수 없습니다. 거의 포티지 트리의 버그 같습니다. 조금 지난 후 다시 트리를 동기화 한 다음 재시도하십시오. 또한 이미 알려진 문제라면 버그질라를 확인할 수 있는데, 없다면 보고하십시오.

가져오기 실패
포티지가 다른 프로그램의 (쓸 수 있는 경우) 설치를 계속하려고 할 때 주어진 프로그램에 대한 소스코드를 내려받을 수 없습니다. 이 문제는 올바르게 동기화 하던 미러가 어긋났다거나 ebuild가 잘못된 위치를 가리켰기 때문에 발생할 수 있습니다. 어떤 이유 때문에 소스 코드가 있는 서버가 먹통이 되었을 수도 있었습니다.

문제가 여전히 생기면 몇시간 후 다시 시도하십시오.

시스템 프로파일 보호
시스템의 핵심 꾸러미 제거를 요청했습니다. 이런 메시지가 뜨면 프로파일에서 필요하다고 적어넣은 꾸러미이기 때문에 시스템에서 제거해서는 안되겠습니다.

다이제스트 검증 실패
이는 포티지 트리에 뭔가 문제가 있다는 이야기입니다. 개발자가 꾸러미를 트리로 커밋할 때 자주 실수하기 때문입니다.

다이제스트 검증에 실패하면 꾸러미의 다이제스트를 다시 만들지 마십시오. 를 실행해도 문제는 고쳐지지 않습니다. 이렇게 하면 대부분 일을 더 꼬이게 합니다!

대신 트리가 올바르게 잡힐 때까지 한두시간 정도 기다려보십시오. 올바르지 않은 방법으로 오류가 나타났을 수도 있는 것이지만, 포티지 트리가 서서히 자리를 잡는데 시간이 좀 걸릴 수가 있습니다. 기다리는 동안에 버그질라를 확인해보시고 누군가가 이 문제를 보고했는지 찾아보거나 #gentoo(IRC)에서 질문하십시오. 만약 내용이 없다면 가서 깨진 꾸러미의 문제를 알려주십시오.

문제점을 고치고 나면, 포티지 트리를 다시 동기화 하여 수정한 다이제스트를 받으십시오.