목차

원문 출처: Portage

Portage


Portage(이하 포티지)는 Gentoo(이하 젠투)의 공식 패키지 관리자이자 배포 시스템입니다. 뛰어난 종속성 해결, 소스에서 시작하는 상황에 맞는 빌드 및 설치와 바이너리 파일 생성, 관리 및 배포 기능 등 다양한 기능을 제공하는 젠투 기반 운영 체제의 핵심 역할을 합니다.

포티지는 필요에 따라 젠투 이빌드 리포지토리추가 리포지토리에서 소프트웨어를 제공합니다. 포티지에는 저장소 및 패키지 관리를 위한 많은 명령어가 포함되어 있으며, 그 중 가장 중요한 명령어는 emerge 명령어입니다.

포티지 및 emerge 명령에 대한 몇 가지 일반적인 질문에 대한 답변은 FAQ포티지 FAQ에 나와 있습니다.


일상적인 사용의 경우 emerge, emaintdispatch-conf가 가장 많이 사용되는 포티지 명령입니다. 관련 문서를 참조하세요.

참고 항목
전체 사용자 문서는 man portage 참조하세요. 포티지로 패키지를 설치하고 유지 관리하는 방법에 대한 정보는 emerge 문서를 참조하세요.

이 문서에서는 사용자의 관점에서 포티지를 설명합니다. 포티지 개발에 기여하고 싶은 분은 포티지 프로젝트 페이지를 방문하세요.

설치

모든 젠투 설치에는 포티지 함께 제공되며, 별도로 설치할 필요가 없습니다. 모든 젠투 설치에는 포티지가 함께 제공되므로 포티지를 설치할 필요가 없습니다!

드물게 포티지가 손상되거나 누락된 경우, 손상되거나 누락된 포티지 섹션을 참고하세요.

포티지 업데이트

젠투를 최신 상태로 유지하려면 포티지를 최신 상태로 유지해야 합니다. 일반적으로 젠투를 정기적으로 업데이트하면 문제 없이 자동으로 포티지가 업데이트됩니다.

때때로 포티지에 대한 업데이트로 인해 다른 시스템보다 먼저 포티지를 업데이트하는 것이 좋을 수 있습니다. 포티지를 동기화한 후 이를 요청하는 메시지가 표시될 수 있습니다:

* * An update to portage is available. It is _highly_ recommended
* that you update portage now, before any other packages are updated.

* To update portage, run 'emerge --oneshot sys-apps/portage' now.

안내에 따라 포티지를 실행합니다(메시지가 이 예시와 다를 경우 명령을 적당하게 수정하세요). sys-apps/portage월드 파일에 추가하지 않으려면 –oneshot 옵션이 중요합니다:

root #emerge --ask --oneshot sys-apps/portage
포티지 업데이트에 문제가 있는 경우 User:Sam/Portage_help/Upgrading_Portage가 도움이 될 수 있습니다.

환경 설정

설정 파일

포티지의 주요 구성은 make.conf에 있지만, 포티지 구성에 사용되는 많은 파일들은 주로 /etc/portage 디렉토리에 있습니다.

특히 이 파일에서 설정할 수 있는 변수 목록 등 포괄적인 설명은 man make.conf를 참조하십시오.

usr/share/portage/config/make.globals 파일에는 포티지에서 제공하는 많은 기본 구성 값이 포함되어 있습니다. 이러한 구성 값은 /etc/portage/make.conf에서 동일한 변수 이름을 지정하여 덮어쓸 수 있습니다.

환경 변수

포티지는 환경 변수를 통해 광범위하게 구성할 수 있습니다.

사용 가능한 환경 변수에 대한 정보는 man make.conf를 참조하십시오. 젠투에서 환경 변수를 설정하려면 핸드북 섹션을 참조하십시오.

현재 설정된 모든 환경 변수를 보려면 다음을 실행한다:

user $emerge --info --verbose


환경 변수는 /etc/portage/package.env 항목을 통해 패키지별로 설정할 수 있습니다.

Ebduil 저장소

포티지가 기본적으로 패키지를 가져오는 젠투 이빌드 저장소 외에도, 예를 들어 다음과 같은 추가 ebuild 저장소를 사용할 수 있습니다:

이빌드 저장소 문서에는 포티지에서 사용할 https://wiki.gentoo.org/wiki/Ebuild_repository#Repository_management이빌드 저장소 구성에 대한 섹션이 있습니다.

명령줄에서 emerge –search 또는 eix를 사용하여 사용 가능한 ebuild를 검색하세요.

경고
젠투 이빌드 저장소는 젠투 개발자가 작성하거나 검토하고, GURU 저장소는 개발자의 감독을 받지만, 다른 이빌드 저장소는 항상 그런 것은 아닙니다. 일부 이빌드 리포지토리에는 취약하거나 심하게 손상되었거나 이론적으로는 악성 소프트웨어가 포함되어 있을 수 있습니다.

사용법

포티지에는 시스템 관리 및 유지보수에 도움이 되는 다양한 도구와 유틸리티가 포함되어 있습니다. 다음 섹션에는 알파벳 순으로 나열되어 있습니다.


사용자에게 일상적으로 필요한 주요 명령은 emerge, emaint, dispatch-conf입니다.

archive-conf

archive-conf의 목적은 dispatch-conf 아카이브 디렉터리에 구성 파일을 저장하는 것입니다. 대부분의 사용자는 이 명령을 실행할 필요가 없습니다:

root #archive-conf
Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]

dispatch-conf

dispatch-conf 유틸리티는 구성 파일 업데이트를 관리하는 데 사용됩니다. dispatch-conf 문서를 참조하세요.

ebuild

ebuild는 다양한 이빌드 함수를 실행하기 위한 포티지의 명령어입니다.

이 명령은 일반적으로 사용자가 실행하지 않으며 개발자에게만 유용합니다. 패키지를 설치하는 데 이 명령을 사용하지 말고 가급적 emerge 명령을 참조하십시오.

이 명령과 ebuild 파일을 혼동하는 경우 ebuild 문서를 참조하세요.

egencache

egencache 도구는 ebuild 리포지토리에 대한 메타데이터 정보 캐시를 다시 빌드합니다. 자세한 내용은 egencache 문서를 참조하세요.

emaint

패키지 관리 관련 시스템 상태 확인 및 유지 관리를 수행합니다.

emaint를 사용하여 리포지토리를 동기화하는 방법은 리포지토리 동기화를 참조하세요. 자세한 내용은 man 1 emaint를 참조하세요.

참고
이제 emerge –sync 명령이 emaint와 함께 구현됩니다.

user $ emaint -help
사용법: 사용법: emaint [옵션] 명령어
 
emaint 프로그램은 시스템 상태 확인 및 유지 관리를 위한 인터페이스를 제공합니다.
다음 명령에 대한 자세한 내용은 emaint(1) 매뉴얼 페이지를 참조하세요.
 
명령어:
  all             지원되는 모든 명령을 수행합니다.
  binhost         바이너리 패키지의 메타데이터 인덱스를 스캔하고 생성합니다.
  cleanconfmem    제거된 패키지의 구성 추적기 목록을 확인하고 정리합니다.
  cleanresume     emerge --resume 병합 목록을 삭제합니다.
  logs            PORTAGE_LOGDIR에서 오래된 로그를 확인하고 정리합니다.
  merges          실패한 병합을 검사하고 수정합니다.
  movebin         바이너리 패키지에 대한 패키지 이동 업데이트를 수행합니다.
  moveinst        설치된 패키지 및 바이너리 패키지에 대한 패키지 이동 업데이트를 수행합니다.
  sync            repos.conf 설정을 확인하고 리포지토리를 동기화합니다.
  world           world 파일의 문제를 확인하고 수정합니다.
 
선택적 인수:
  -h, --help            이 도움말 메시지를 표시하고 종료합니다.
  -c, --check           문제 확인(대부분의 module의 기본 옵션)
  -f, --fix             문제 수정 시도(대부분의 module의 기본 옵션)
  --version             프로그램의 버전 번호를 표시하고 종료합니다.
  -C, --clean           7일 이상 지난 로그를 정리합니다(cleanlogs만 해당) 모듈 옵션: -t, -p
  -t NUM, --time NUM    (cleanlogs만 해당): -t, --time 일 수보다 오래된 로그를 삭제합니다.
  -p, --pretend         (cleanlogs만 해당): -p, --pretend 삭제할 로그를 출력합니다.
  -p, --purge           이전에 실패한 병합 목록을 제거합니다. 
                        경고: 수동으로 수정하거나 다시 설치하지 않으려는 경우에만 이 옵션을 사용하세요.
  -y, --yes             (merges submodule만 해당): 이머지 호출을 묻는 메시지를 표시하지 않습니다.
  -r REPO, --repo REPO  (sync module만 해당): -r, --repo 지정된 리포지토리를 동기화합니다.
  -A, --allrepos        (sync module만 해당): -A, --allrepos sync-url이 정의된 모든 리포지토리를 동기화합니다.
  -a, --auto            (sync module만 해당): -a, --auto 자동 동기화가 활성화된 리포지토리만 동기화한다.
  --sync-submodule {glsa,news,profiles}
                        (sync module만 해당): 동기화를 지정된 서브모듈로 제한합니다.

emerge

emerge(이하 이머지)는 포티지에 대한 명령줄 인터페이스이며 대부분의 사용자가 포티지와 상호작용하는 방식입니다.

위키에 대한 자세한 내용은 이머지 문서를 참조하세요

emerge-websync

웹을 통해서 젠투 이빌드 저장소의 스냅샷을 설치합니다. 자세한 내용은 핸드복을 참고하세요.

root #emerge-webrsync -h
사용법: /usr/bin/emerge-webrsync [선택사항]
 
선택사항:
  --revert=yyyymmdd   지정한 날자(yyyymmdd)의 스냅샷으로 되돌리기
  -k, --keep          스냅샷을 DISTDIR에 유지(삭제하지 않음)
  -q, --quiet         오류만 출력
  -v, --verbose       상세한 정보 출력
  -x, --debug         디버그 관련 출력
  -h, --help          도움말 화면
etc/portage/repos.conf의 sync-type이 webrsync로 설정되어 있으면 내부적으로 eix-sync가 emerge-webrsync를 호출합니다.

emirrordist

패키지 배포 파일 미러링 도구.

root #emirrordist -h
사용법: emirrordist [옵션] <작업>
 
emirrordist - 패키지 배포 파일 미러링을 위한 가져오기 도구
 
선택적 인수:
  -h, --help               이 도움말 메시지를 표시하고 종료합니다.
 
액션:
  --version                      포티지 버전을 표시하고 종료
  --mirror                       선택한 저장소에 대한 dist파일을 미러링합니다.
 
일반적인 옵션:
  --dry-run                      변경하지 않은 상태에서 시험 실행을 수행합니다 (일반적으로 --verbose와 결합)
  --verbose, -v                  stderr에 추가 정보를 표시한다 (중첩해서 사용하면 발생하는 내용 증가)
  --ignore-defauilt-opts         EMIRRORDIST_DEFAULT_OPTS 환경 변수를 사용하지 않는다.
  --distfiles DIR                사용할 디렉터리 distfiles (필수)
  --jobs JOBS, -j JOBS           실행할 동시 작업 수
  --load-average LOAD, -l LOAD   새 동시 작업의 스폰을 위한 로드 평균 한도
  --tries TRIES                  파일당 최대 시도 횟수, 0은 무제한을 의미합니다. (기본값은 10)
  --repo REPO                    작업할 리포지토리 이름
  --config-root                  포티지 구성 파일의 DIR 위치
  --repositories-configuration REPOSITORIES_CONFIGURATION
                                 저장소 구성을 재정의한다 (repos.conf 형식)
  --strict-manifests <y|n>       "엄격한" FEATURES 설정을 수동으로 재정의한다.
  --failure-log FILE             탭으로 구분된 가져오기 실패에 대한 로그 파일
  --success-log FILE             출력, 보고용으로 탭으로 구분된 가져오기 성공에 대한 로그 파일
  --scheduled-deletion-log FILE  출력, 보고용으로 탭으로 구분된 예약된 삭제를 위한 로그 파일
  --delete                       사용하지 않는 dist파일의 삭제를 활성화합니다.
  --deletion-db FILE             파일의 수명을 추적하는 데 사용되는 데이터베이스 파일, 지연된 삭제를 위해 예약됨
  --deletion-delay SECONDS       삭제 지연 시간(초 단위)
  --temp-dir                     다운로드를 위한 임시 디렉터리 DIR
  --mirror-overrides FILE        미러 오버라이드 목록이 있는 파일
  --mirror-skip MIRROR_SKIP      쉼표로 구분된 미러 대상 목록.
  --restrict-mirror-exemptions RESTRICT_MIRROR_EXEMPTIONS
                                 쉼표로 구분된 미러 대상 목록입니다. RESTRICT="mirror"를 무시합니다.
  --verify-existing-digest       다이제스트를 사용하여 기존의 distfiles가 유효한지 확인한다.
  --distfiles-local DIR          distfiles-local로 사용할 디렉토리
  --distfiles-db FILE            Recycle dir에 있는 파일의 수명을 추적하는 데이터베이스 파일
  --recycle-dir DIR              --delete 옵션이 붙어있는 파일이 재사용을 위한 대기중에 사용하는 디렉토리
  --recycle-db FILEdist FILE-db  Recycle dir에 있는 파일들의 수명을 추적하는 데이파베이스 파일
  --recycle-deletion-delay SECONDS
                                 지정된 시간동안 휴지통에서 사용하지 않는 파일을 삭제하는 것을 지연 (기본값 60초)
  --fetch-log-dir DIR            개별 패치 로그의 보관 디렉터리
  --whitelist-from FILE          화이트리스트에 추가할 파일 목록이 포함된 파일을 지정한다.
                                 화이트리스트 내용을, 한 줄당 하나, # 접두사 붙은 줄은 무시됨
man emirrordist를 참조하세요.

env-update

환경 설정을 자동으로 업데이트 합니다.

root # env-update -h
사용법: env-update [--no-ldconfig]

man 1 env-update에서 더 많은 정보를 찾아보세요.
man env-update도 함께 읽어 주십시요. 젠투에서 환경을 설정하는 방법에 대한 몇 가지 정보는 로그인 문서를 참조하세요.

fixpackages

모든 패키지에 대해 패키지 이동 업데이트를 수행합니다.

root # fixpackages -h
사용법: fixpackages [-h]
 
fixpackages 프로그램은 구성 파일, 설치된 패키지 및 바이너리 패키지에 대한 패키지 이동 업데이트를 수행합니다.
 
선택적 인수:
  -h, --help     이 도움말 메시지를 표시하고 종료합니다.
man fixpackages도 참고하세요.

regenworld

포티지 로그파일에서 과거에 수행한 모든 작업을 확인하여 월드 파일을 재생성합니다.

경고
이 도구를 사용하기 전에 기존 월드 파일(/var/lib/portage/world)을 백업하세요.

root # regenworld -h
이 스크립트는 로그파일에서 과거에 수행한 모든 작업을 확인하여
포티지 월드 파일을 다시 생성합니다.
이 스크립트는 --help를 제외한 모든 인수를 무시합니다. 
기존 월드 파일(/var/lib/portage/world)의 백업을 만드는 것이 좋습니다.

portageq

자세한 내용은 .portageq를 참조하세요.

quickpkg

포티지 패키지를 생성합니다 - 자세한 내용은 바이너리 패키지 가이드를 참고하세요.

사용자 $quickpkg --help
사용법: quickpkg [옵션] <패키지 atoms 또는 패키지 세트 목록>
 
선택적 인수:
  -h, --help                         이 도움말 메시지를 표시하고 종료합니다.
  --umask                            패키지 생성 시 사용되는 UMASK 엄 마스크 (기본값은 0077)
  --ignore-default-opts              QUICKPKG_DEFAULT_OPTS 환경 변수를 사용하지 않는다.
  --include-config <y|n>             CONFIG_PROTECT로 보호되는 모든 파일을 포함한다(보안 예방책으로, 기본값은 'n').
  --include-unmodified-config <y|n>  설치 이후 수정하지 않은 CONFIG_PROTECT로 보호된 파일을 포함한다.
                                     (보안상 주의로 보안 예방책으로, 기본값은 'n')

repoman

이 섹션의 정보는 더 이상 사용되지 않습니다. 현재 사용법과 관련이 있을 수도 있고 없을 수도 있습니다. 주의해서 다루세요!

repoman은 이빌드 테스트에 사용되는 개발 도구입니다. 버전 2.3.0부터는 포티지와 별도로 app-portage/repoman에 패키징되어 있습니다. 자세한 내용은 repoman 문서를 참조하세요.

이제 dev-util/pkgcheckdev-util/pkgdev 패키지에서 제공하는 도구를 위해 더 이상 사용되지 않습니다.

glsa-check

젠투 리눅스 보안 공지, 즉 GLSA는 젠투 리눅스와 관련된 보안 취약점 또는 ::gentoo ebuild 저장소에 포함된 패키지와 관련된 보안 취약점을 알리기 위해 커뮤니티에 보내는 알림입니다.

glsa-check는 다양한 GLSA를 추적하는 도구입니다. 이 도구는 GLSA를 보는 데 사용할 수 있지만, 더 중요한 것은 시스템이 알려진 GLSA에 취약한지 테스트하는 데 사용됩니다.

자세한 내용은 man glsa-checkglsa-check –help를 참조하세요:

user $glsa-check --help
사용법: glsa-check <옵션> [glsa-id | all | new | affected]
 
선택적 인수:
  -h, --help        이 도움말 메시지를 표시하고 종료합니다.
  -v, --version     glsa-check에 대한 정보를 표시합니다.
  -q, --quiet       장황한 내용을 줄이고 빈 메일을 보내지 않습니다.
  -v, --verbose     더 많은 메시지를 인쇄합니다.
  -n, --ncolor      출력에서 색상을 제거합니다.
  -e, --emergelike  최신 버전으로 업그레이드(최소 변경)
  -c, --cve         목록 모드에서 CVE ID 표시
  -r, --reverse     GLSA를 역순으로 나열합니다.
 
모드:
  -l, --list        주어진 GLSA 또는 세트에 대한 요약과 시스템에 영향을 미치는지 여부를 나열합니다.
  -d, --dump        GLSA 또는 집합에 대한 모든 정보를 표시합니다.
  --print           --dump의 별칭을 인쇄합니다.
  -t, --test        이 시스템이 GLSA 또는 설정의 영향을 받는지 테스트하고 GLSA ID를 출력합니다.
  -p, --pretend     시스템을 수정하는 데 필요한 단계를 표시합니다.
  -f, --fix         (실험적) GLSA 또는 설정에 제공된 지침에 따라 시스템 수정을 시도합니다. 업그레이드(업그레이드 경로가 있는 경우) 또는 패키지 제거만 수행합니다.
  -i, --inject      주어진 GLSA(들)를 glsa_injected 파일에 주입합니다.
  -m, --mail        관리자에게 지정된 GLSA가 포함된 메일을 보냅니다.
 
glsa-list에는 임의의 수의 GLSA ID, GLSA가 포함된 파일 이름 또는 특수 식별자 'all' 및 'affected'가 포함될 수 있습니다.

주(젠투) 이빌드 저장소 동기화 시간 확인

젠투 이빌드 조장소를 언제 마지막으로 업데이트(동기화) 했는지 확인하려면 다음과 같이 실행하세요:1)

user $ cat /var/db/repos/gentoo/metadata/timestamp.chk

패키지 세트 확인

각각의 세트에 어떤 패키지가 들어있는지 확인해야 한다면? 패키지 셋트를 참고하세요.

문제 해결

손상되거나 없는 포티지

매우 드물기는 하지만 모든 데이터와 마찬가지로, 포티지가 손상되거나 심지어 제거될 가능성이 있으며, 이는 전체 시스템의 기능에 매우 나쁜 영향을 미칠 수 있습니다. 이런 일이 발생하면 포티지를 복구할 수 있는 방법이 있지만, 포티지는 핵심적이기 때문에 재설치는 다소 복잡한 작업이며, 사실상 패키지 관리자가 작동하지 않는 상태에서 패키지 관리자를 설치하는 것과 같은 수동 개입이 필요합니다.

바이너리 패키지를 통한 긴급 설치에 대한 자세한 내용은 내 젠투 수정하기를 참고하세요. 망가진 포티지 고치기도 참고하세요.

기본 젠투 이빌드 저장소 위치 변경

2019-04-292)에 릴리스된 포티지 v2.3.663)부터 portdir, distdir, repo_name, repo_basedir 디렉터리의 기본 위치가 변경되었습니다.

자세한 내용은 버그 bug #662982를 참조하세요.

이전 위치

2019-04-29 이전의 위치

repo_basedir="/usr"
repo_name="portage"
distdir="/usr/portage/distfiles"
portdir="/usr/portage"
target_distdir="/usr/portage/distfiles"
target_pkgdir="/usr/portage/packages"

새로운 위치

2019-04-29 이후의 위치

repo_basedir="/var/db/repos"
repo_name="gentoo"
distdir="/var/cache/distfiles"
portdir="/var/db/repos/gentoo"
target_distdir="/var/cache/distfiles"
target_pkgdir="/var/cache/binpkgs"

참고 자료

/etc/portage/color.map - 포티지에서 사용하는 색상 클래스를 정의하는 변수를 포함하는 파일. 접두사 - 다른 배포판 및/또는 운영 체제에서 젠투와 포티지의 기능을 사용할 수 있도록 합니다 (Cygwin을 통한 마이크로소프트 윈도우, Termux를 통한 안드로이드 등).

1)
.bashrc에 추가하면 매 로그인마다 확인 가능