Handbook:Parts/Working/USE/ko

USE 플래그 개념
젠투(또는 기타 배포판이나 어떤 운영체제든)를 설치할 때, 사용자는 다룰 환경에 따라 몇가지 선택을 하고 싶어합니다. 서버에 대한 설정은 워크스테이션에 대한 설정과 다릅니다. 게임용 워크스테이션은 3D 렌더링 워크스테이션과 다릅니다.

꾸러미를 설치할 때만 그런게 아니며 각각의 꾸러미에서 어떤 기능을 선택해야 하느냐를 따질때도 마찬가지입니다. OpenGL이 필요하지 않은데, 왜 대부분 꾸러미에서의 OpenGL의 설치 및 관리, 빌드 지원이 우릴 귀찮게 할까요? KDE를 쓰고 싶지 않은데, 왜 굳이 없어도 완벽하게 돌아가는 KDE 지원이 꾸러미 컴파일 과정에서 귀찮게 할까요?

사용자가 어떤 꾸러미를 설치하고 활성화 해야 할 지 말지 결정하는 일련의 과정을 돕기 위해, 젠투에서는 사용자가 쉬운 방법으로 환경을 지정하길 원했습니다. 이런 일련의 사고를 통해 사용자가 정말 원하는게 무엇인지 결정하도록 사용자를 끌어넣었고, 쓸모있는 결정을 만드는 포티지의 처리 과정을 쉽게 만들었습니다.

USE 플래그 정의
USE 플래그를 입력하십시오. 각각의 플래그는 지원 기능과 각각의 개념에 대한 의존성 정보를 포함하는 키워드입니다. 어떤 USE 플래그를 지정하면, 포티지에서는 선택한 키워드에 대해 사용자가 어떤 지원 기능을 원하는지 알아차립니다. 물론 이 과정에서 꾸러미에 대한 의존성 정보로 바꾸기도 합니다.

몇가지 특정 예를 살펴보겠습니다: kde 키워드가 있습니다. 이 키워드를 USE 변수에 넣지 않으면, 모든 꾸러미는 KDE 지원 없이 선택적인 KDE 지원을 컴파일합니다. 선택적 KDE 의존성을 지닌 모든 꾸러미는 KDE 라이브러리를 (의존 요소로) 설치하지 않고 설치합니다. kde 키워드를 지정하면 이 꾸러미에 KDE 지원 기능을 함께 컴파일하며 KDE 라이브러리를 의존 요소로 설치합니다.

올바르게 키워드를 지정하면 사용자의 요구에 맞춰 시스템의 모양새가 갖춰집니다.

USE 플래그에 있는 것
USE 플래그에는 두가지 방식이 있습니다. 하나는 전역, 하나는 지역입니다.


 * 전역 USE 플래그는 다양한 꾸러미에서 시스템 전체적으로 사용합니다. 대부분 사람들이 USE 플래그로 보는 키워드입니다.
 * 지역 USE 플래그는 단일 꾸러미에서 꾸러미별 결정을 내릴때 사용합니다.

사용할 수 있는 전역 USE 플래그는 온라인en 또는 로컬 위치의 에서 찾아볼 수 있습니다.

사용할 수 있는 지역 USE 플래그는 온라인en 또는 로컬 위치의 에서 찾아볼 수 있습니다.

영구 USE 플래그 선언
앞에서 이야기한 바와 같이, 모든 USE 플래그는 USE 변수에 선언합니다. 사용자가 USE 플래그를 쉽게 검색하고 고를 수 있도록 하기 위해 기본 USE 설정을 제공합니다. 이 설정은 젠투 사용자가 보통 사용한다고 간주하는 USE 플래그의 모음입니다. 이 기본 설정은 선택한 프로파일의 일부인 파일에 선언했습니다.

시스템이 살펴보는 프로파일은 이 가리킵니다. 각각의 프로파일은 다른 프로파일의 상위에서 동작하며 최종 결과는 모든 프로파일의 합입니다. 최상위 프로파일은 베이스 프로파일입니다.

현재 활성화 한 (전체) USE 플래그를 보려면 emerge --info 를 사용하십시오:

보시는 바와 같이, 변수에 수많은 키워드가 있습니다. 개인적인 용도로 USE 변수를 새로 뜯어고칠 목적으로 파일의 내용을 어떤 부분이든 바꾸지 마십시오. 이 파일의 내용을 바꾸면 포티지 트리를 업데이트했을때 되돌릴 수 없습니다!

기본 값을 바꾸려면 USE 변수에서 키워드를 추가하거나 제거하십시오. 에서 전역 범위의 USE 변수값을 지정하시면 됩니다. 이 변수에서 필요한 추가 USE 플래그를 추가하거나 더 이상 필요하지 않은 USE 플래그를 제거할 수 있습니다. 플래그 제거는 키워드 앞에 음수 부호를 붙이시면 됩니다.

KDE와 QT 지원을 제거하고 ldap 지원을 추가한다면, 에서 USE 값을 다음처럼 지정할 수 있습니다:

개별 꾸러미당 USE 플래그 선언
사용자가 시스템 범위가 아닌 하나(이상의) 프로그램에 대한 각각의 USE 플래그를 지정하려고 하는 경우가 있습니다. 이럴 때는 를 편집하십시오. 보통 단일 파일이지만 디렉터리일 수도 있습니다: 더 많은 내용은 를 살펴보십시오. 다음 예제에서 는 단일 파일로 간주합니다.

mysql에 대해 berkdb 지원만 포함한다면:

이와 비슷하게 각각의 프로그램에 대해 USE 플래그를 분명히 비활성화할 수 있습니다. PHP에 대한 java 지원을 비활성화할 경우(하지만 의 USE 플래그 지정을 통해 다른 꾸러미에는 활성화할 경우):

임시 USE 플래그 선언
잠깐동안 USE 플래그를 설정해야 할 때도 있습니다. 를 두 번 편집하는 대신(USE값 바꾸기를 했다가 취소) USE 변수를 환경 변수처럼 지정하면 됩니다. 입력한 명령에 대해서만 이 설정을 적용함을 기억하십시오. 프로그램을 다시 이머지하거나 업데이트(분명히 둘 다 하든지 시스템 업데이트의 일부로 처리하든지)하면 (임시로) 지정한 USE 플래그로 바꾸어놓은 상태를 되돌립니다.

다음 예제에서는 seamonkey를 설치하는 과정에서 USE 설정의 java 플래그를 잠깐동안 제거합니다:

우선 처리
물론 어떤 설정이 USE 설정에 우선하는가에 대한 우선 처리 방식이 있습니다. USE 설정에 대한 우선 처리는 우선 순위에 따릅니다(처음 항목은 우선순위가 낮음)
 * 1) 프로파일의 일부인  파일에서 지정한 기본 USE 설정
 * 2) 의 사용자 지정 USE 설정
 * 3) 의 사용자 지정 USE 설정
 * 4) 환경 변수로 지정한 사용자 지정 USE 설정

포티지에서 본 최종 USE 설정을 보려면 를 실행하십시오. 포티지에서 알고 있는 현재 지정 값을 지닌 모든 관련 변수(USE 변수 포함)를 보여줍니다.

전체 시스템에 새 USE 플래그 적용
USE 플래그 값을 바꾸고 나면 필요한 변경 사항을 반영하기 위해 시스템을 업데이트해야합니다. 업데이트를 진행하려면  명령에   옵션을 사용하십시오.

다음, 포티지의 depclean을 실행하여 "이전" 시스템에 이머지한 꾸러미 중, 새 USE 플래그 모음에서 사라진 조건부 의존성을 제거하십시오.

depclean이 끝나면, 를 실행하여 제거했을지도 모르는 꾸러미에서 제공하는 공유 객체에 동적으로 연결한 프로그램을 다시 빌드하십시오. 는 의 일부입니다. 이 꾸러미를 꼭 이머지하십시오.

모든 과정을 끝나면 시스템에서는 새 USE 플래그를 사용합니다.

사용할 수 있는 USE 플래그 보기
seamonkey 예제를 보도록 하겠습니다. 어떤 USE 플래그를 살펴보고 있을까요? 명령에 옵션과  옵션으로 확인해보겠습니다:

만 이 작업을 하는 도구가 아닙니다. 실제로 꾸러미에 있는  가 꾸러미 정보를 제공하기도 합니다.

이제 equery에 uses 매개변수를 붙여 각각의 꾸러미에서 사용하는 USE 플래그를 살펴보겠습니다. gnumeric 꾸러미의 내용을 살펴보면:

REQUIRED_USE 상태 충족
Some ebuilds require or forbid certain combinations of USE flags in order to work properly. This is expressed via a  condition. This condition ensures that all features and dependencies are complete, the build will succeed and perform as expected. If any of these are not met, emerge will alert you and ask you to fix the issue.

Some example conditions are given below.