Trans:GentooX86Handbook2-2

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

USE 플래그

USE 플래그란?

USE 플래그 이면의 아이디어

젠투 (또는 다른 배포판이나 이런 운영체제들)을 설치할 때, 여러분이 일을 할 환경에 따라 결정합니다. 서버 설정은 워크스테이션 설정 과는 다릅니다. 게임 워크스테이션은 3D 렌더링 워크스테이션과는 다릅니다.

이는 여러분이 설치하고 싶은 꾸러미를 선택할 때 뿐만 아니라 각각의 꾸러미에서 어떤 기능을 지원해야 하는지에 대해 선택할 때에도 맞는 이야기입니다. OpenGL이 필요 없다면 왜 OpenGL을 설치하고 대부분의 꾸러미에서 지원하는 OpenGL을 빌드하는 것에 신경을 쓰시는가요? KDE를 쓰기 싫다면, KDE 없이도 멀쩡하게 돌아가는 꾸러미들인데 왜 KDE 지원을 포함하여 꾸러미를 컴파일 하는 것에 신경을 쓰시는가요?

사용자들이 어떤 꾸러미를 설치하고 활성화할지 결정하는 것을 돕기 위해, 사용자가 그(녀)의 환경을 쉽게 지정하길 원했습니다. 이러한 수단을 통해 사용자들이 정말 원하는 것이 무엇인지 결정하고 포티지에 대한 처리 과정을 단순화 하도록 강제했습니다.

USE 플래그의 정의

USE 플래그를 입력해보십시오. 각각의 플래그는 지원요소와 제각각의 개념에 대한 의존성 정보를 포함하는 키워드입니다. 제각각의 USE 플래그를 정의했다면 포티지는 선택한 키워드에 대해 여러분이 원하는 지원 요소를 알게 됩니다. 물론 꾸러미에 대한 의존성 정보를 대체하기도 합니다.

일부 예를 들어보도록 하겠습니다. kde 키워드가 있습니다. USE변수에 이 키워드를 넣지 않았다면 선택적으로 KDE를 지원하는 모든 꾸러미를 KDE지원 없이 컴파일 할 것입니다. 선택적인 KDE 의존성을 지닌 모든 꾸러미는 (의존성에 따라) KDE 라이브러리를 설치하지 않고 설치될 것입니다. kde키워드를 정의했다면 이 꾸러미들은 KDE 지원을 포함해서 컴파일 할 것이고, 의존성에 따라 KDE 라이브러리를 설치할 것입니다.

키워드를 올바르게 설정하면 여러분이 원하는대로 잘 갖춰진 시스템을 가지게 될 것입니다.

어떤 USE 플래그가 있을까요?

전역지역 USE 플래그 방식이 있습니다.

  • 전역 USE 플래그는 시스템 범위에서 수많은 꾸러미들이 사용합니다. 이는 대부분의 사람들이 USE 플래그로 보는 것입니다.
  • 지역 USE 플래그는 꾸러미별 결정을 하기 위해 단일 꾸러미에서 사용합니다.

사용할 수 있는 전역 USE 플래그는 온라인이나 /usr/portage/profiles/use.desc에서 시스템 자체적으로 보실 수 있습니다.

로컬에서 사용할 수 있는 지역 USE 플래그는 /usr/portage/profiles/use.local.desc에서 보실 수 있습니다.

USE 플래그 사용하기

영구 USE 플래그 선언하기

여러분께서 USE 플래그의 중요성을 납득 하셨길 바라며 이제 USE 플래그를 설언하는 방법을 알려드리겠습니다.

앞에서 언급해드렸다시피, USE 플래그는 USE변수에 선언합니다. 사용자들이 USE 플래그를 쉽게 찾고 고르도록 하기 위해, 이미 기본 USE 플래그를 제공하고 있습니다. 이 설정은 젠투 사용자들이 일반적으로 사용할 거라고 생각하는 USE 플래그의 모음입니다. 이 기본 설정은 여러분의 프로파일의 일부인 make.defaults에 선언되어 있습니다.

여러분의 시스템에 있는 프로파일은 /etc/profile/make.profile 심볼릭 링크가 가리키는 것을 봅니다. 각각의 프로파일은 다른 큰 프로파일의 상단에서 동작하며 최종 결과는 그래서 모든 프로파일의 합이 됩니다. 최상단의 프로파일은 base 프로파일(/usr/portage/profiles/base)입니다.

10.0 프로파일의 기본 설정을 보도록 하겠습니다.


코드 예제 2.1: 10.0 프로파일에 대한 누적식 make.defaults USE 변수

(이 예제는 default/linux, default/linux/x86, default/linux/x86/10.0/
베이스 설정을 합친 것입니다)
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"


보신 바와 같이 변수에 이미 좀 많은 키워드가 있습니다. 여러분이 필요하다고 해서 USE 변수의 내용을 맞추기 위해 make.default 파일 내용을 바꾸지 마십시오. 이 파일을 바꾸면 포티지를 업데이트할 때 되돌릴 수 없습니다.

기본 값을 바꾸려면 USE 변수의 키워드를 추가하거나 제거할 필요가 있습니다. 이는 /etc/portage/make.conf의 USE 변수를 정의하영 전체적으로 설정할 수 있습니다. 이 변수를 통해 여러분은 필요한 추가 USE 플래그를 추가하거나, 원하지 않는 USE 플래그를 뺍니다. 후자는 키워드 앞에 음수 부호 ("-") 를 붙여서 해결합니다.

예를 들어 KDE와 QT 지원을 빼고 ldap 지원을 추가하기 위해 다음 USE 를 /etc/portage/make.conf에 정의할 수 있습니다.


코드 예제 2.2: /etc/portage/make.conf의 예제 USE 설정
USE="-kde -qt4 ldap"


개별 꾸러미에 대한 USE 플래그 선언

임시 USE 플래그 선언하기

가끔 여러분은 USE 설정을 한번만 설정하고 싶을 때가 있습니다. (USE 설정을 변경하고 되돌리기 위해) /etc/portage/make.conf를 두 번 편집하는 대신, 그냥 USE 변수를 환경 변수에 선언할 수 있습니다. 여러분이 이머지를 다시 하거나 (분명히 또는 시스템 업데이트의 일부로서) 프로그램을 업데이트하면 여러분이 바꾼 내용을 잃을 것입니다!

예제에서는 seamonkey를 설치 할 때 USE 설정으로부터 java를 임시로 없앨 것입니다.


코드 예제 3.5: USE 를 환경 변수로 사용하기
# USE="-java" emerge seamonkey


먼저 할 일

물론 USE를 설정하기 전에 먼저 할 설정에 대해 일부 할 일이 있습니다. 높은 우선순위를 가지고 있는 설정 때문에 여전히 사용중인 java를 확인하려고 USE="-java"를 설정하시고 싶진 않을 것입니다. USE 설정에 대해 먼저 할 일은 우선순위에 따라 순서가 정해집니다. (첫 번째가 낮은 우선순위입니다)

  1. 여러분의 프로파일의 일부인 make.defaults 파일에 선언한 기본 USE 설정
  2. /etc/portage/make.conf에 지정한 USE 설정
  3. /etc/portage/package.use에 지정한 USE 설정
  4. 환경 변수에 지정한 USE 설정

포티지에서 본 것과 같은 최종 USE 설정을 보려면 emerge --info를 실행합니다. 이 방법은 포티지가 사용하는 내용과 함께 (USE변수를 포함하여) 모든 관련 변수를 나열할 것입니다.


코드 예제 2.6: emerge --info 실행하기
# emerge --info


새 USE 플래그로 전체 시스템 적용하기

USE 플래그 내용을 바꾸었고 USE 플래그를 사용하기 위해 전체 시스템을 업데이트 하려면 emerge--newuse옵션을 사용합니다.


코드 예제 2.7: 전체 시스템 다시 빌드
# emerge --update --deep --newuse world


그 다음 여러분의 "이전의" 시스템에 이머지했지만 새로운 USE 플래그로 인해 한물간 경우에 따른 의존성을 제거하기 위해 포티지의 depclean을 실행합니다.


주의: emerge --depclean을 실행하는 것은 위험한 작업이며 조심해서 다루어야 합니다. 여러분이 필요한 꾸러미를 지우지 않게 "한물간" 꾸러미를 알려주는 목록을 다시 확인해보시기 바랍니다. 다음 예제에서는 여러분이 필요로 하는 꾸러미를 제거하지 않고 depclean을 진행하기 위해 꾸러미 목록만 보도록 -p스위치를 넣었습니다.



코드 예제 2.8: 한물간 꾸러미 제거하기
# emerge -p --depclean


depclean이 끝나면, 아마도 제거되었을지도 모르는 꾸러미에서 제공하는 공유 객체에 대해 동적으로 연결된 프로그램을 다시 빌드하기 위해 revdep-rebuild를 실행합니다. revdep-rebuildgentoolkit 꾸러미의 일부입니다.


코드 예제 2.9: revdep-rebuild 실행하기
# revdep-rebuild


모든 일을 완료했다면 여러분의 시스템은 새로운 USE 플래그 설정을 사용하는 것입니다.

꾸러미 지정 USE 플래그

사용할 수 있는 USE 플래그 보기

seamonkey 예제를 보도록 하겠습니다. 어떤 USE 플래그가 반응하려나요? 이걸 확인해보기 위해 --pretend--verbose옵션과 함께 emerge명령을 사용합니다.


코드 예제 3.1: 사용할 USE 플래그 보기
# emerge --pretend --verbose seamonkey

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB


emerge는 단지 이 일에 대한 도구인 것은 아닙니다. gentoolkit꾸러미에 있는 equery 꾸러미 정보 제공 도구도 있습니다. 먼저 gentoolkit 꾸러미를 설치합니다.


코드 예제 3.2: gentoolkit 설치하기
# emerge gentoolkit


이제 제각각의 꾸러미에서 사용중인 USE 플래그를 보기 위해 uses인자를 넣어서 equery를 실행합니다. 예를 들어 gnumetric 꾸러미에 대해


코드 예제 3.2: 사용중인 USE 플래그를 보기 위해 equery 사용하기
# equery --nocolor uses =gnumetric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column  (U) - USE flags from make.conf              ]
[        : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
 U I
 - - debug  : Enable extra debug codepaths, like asserts and extra output.
              If you want to get meaningful backtraces see
              http://www.gentoo.org/proj/en/qa/backtraces.xml .
 + + gnome  : Adds GNOME support
 + + python : Adds support/bindings for the Python language
 - - static : !!do not set this during bootstrap!! Causes binaries to be
              statically linked instead of dynamically