맨위로가기

포티지 (소프트웨어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

포티지(Portage)는 소스 코드로부터 패키지를 설치하는 기능을 가진 젠투 리눅스(Gentoo Linux)의 패키지 관리 시스템이다. 사용자는 컴파일러 및 애플리케이션 옵션을 직접 설정하여 시스템 사양과 요구 사항에 맞게 소프트웨어를 설치할 수 있으며, 병렬 패키지 설치, 의존성 추적, 로컬 저장소 동기화 등의 기능을 제공한다. 포티지는 ebuild라는 셸 스크립트를 사용하여 소프트웨어의 설치, 구성, 컴파일, 설치 방법을 정의하며, emerge 명령 줄 도구를 통해 다양한 기능을 사용할 수 있다. 또한 USE 플래그를 통해 패키지 빌드 시 포함하거나 제외할 기능을 지정할 수 있으며, 마스킹 시스템을 통해 시스템에 적합한 패키지를 결정한다. 젠투/Alt 프로젝트를 통해 Mac OS X, FreeBSD, NetBSD, OpenBSD 등 다양한 운영 체제로 포팅되었다.

더 읽어볼만한 페이지

  • 젠투 리눅스 - 젠툴킷
    젠툴킷은 젠투 리눅스 시스템의 유지보수 및 효율적인 관리를 지원하기 위해 패키지 정보 조회, USE 플래그 관리, 보안 취약점 확인, 의존성 문제 해결, 디스크 공간 관리 등 다양한 도구들을 모아놓은 툴킷이다.
  • 시스템 소프트웨어 - 유틸리티 소프트웨어
    유틸리티 소프트웨어는 컴퓨터의 운영 체제, 하드웨어, 응용 소프트웨어를 관리하고 성능을 향상시키거나 특정 작업을 수행하는 프로그램으로, 시스템 관리, 파일 관리, 데이터 복구, 보안 등의 기능을 제공하며 백업 소프트웨어, 바이러스 백신 등이 대표적이다.
  • 시스템 소프트웨어 - 가상 사설 서버
    가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
  • 파이썬으로 작성된 자유 소프트웨어 - 캘리버
    캘리버는 다양한 전자책 파일 형식과 단말기를 지원하는 오픈소스 소프트웨어로, 편집, 변환, 메타데이터 관리, 라이브러리 검색, 온라인 콘텐츠 수집, 원격 액세스, 전자책 제작 등의 기능을 제공하며, 플러그인을 통해 DRM 제거도 가능하다.
  • 파이썬으로 작성된 자유 소프트웨어 - 클램윈
    클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다.
포티지 (소프트웨어) - [IT 관련 정보]에 관한 문서
기본 정보
종류패키지 관리 시스템
개발자젠투 개발자 (Funtoo 포크의 경우 Funtoo 사용자)
운영 체제젠투 리눅스
젠투/FreeBSD
크로미엄 OS
크롬 OS
Sabayon
Funtoo Linux
Calculate Linux
플랫폼POSIX 호환 / 파이썬 지원
프로그래밍 언어파이썬
라이선스GNU GPL v2
웹사이트포티지 프로젝트 위키
최신 버전 정보
최신 안정 버전2.3.87
최신 안정 버전 출시일2020년 2월 1일
최신 미리보기 버전 출시일}}
기타
작성자대니얼 로빈스

2. 주요 기능

포티지는 소스 코드로부터 컴파일하여 패키지를 설치하는 방식으로, 시스템 사양과 사용자의 요구에 맞춰 최적화할 수 있다는 특징이 있다.

포티지의 주요 기능은 다음과 같다:


  • 병렬 패키지 버전 설치: 여러 버전의 패키지를 동시에 설치하여 사용할 수 있다.
  • 의존성 추적: 패키지 간의 의존성을 추적하여 필요한 패키지를 자동으로 설치하거나 관리한다.
  • 설치된 패키지 데이터베이스 관리: 설치된 패키지 정보를 데이터베이스로 관리하여 효율적인 패키지 관리를 지원한다.
  • 로컬 ebuild 저장소 제공: 사용자가 직접 ebuild를 만들고 관리할 수 있는 로컬 저장소를 제공한다.
  • 로컬 포티지 트리와 원격 저장소 동기화: 로컬 포티지 트리를 원격 저장소와 동기화하여 최신 패키지 정보를 유지한다.
  • 대상 머신에 대한 컴파일 설정 지정: 컴파일 설정을 사용자가 직접 지정하여 대상 시스템에 최적화된 패키지를 설치할 수 있다.
  • 패키지 구성 요소 선택: 패키지의 구성 요소를 선택적으로 설치하여 불필요한 기능을 제외할 수 있다.


포티지는 ebuild의 안정성을 세 가지 수준으로 구분한다:

  • 안정: 출시 당시 알려진 소프트웨어 보안 문제 없이 의도대로 작동하는 소프트웨어이다.
  • 키워드 마스크: 대상 시스템 아키텍처에서 안정적인 것으로 간주될 만큼 충분히 소프트웨어 테스팅되지 않은 패키지이다.
  • 하드 마스크: 손상되었거나 매우 안전하지 않은 패키지이다.


Porthole 그래픽 프런트엔드


포티지를 편리하게 사용할 수 있도록 GTK+ 기반의 GUI인 '''[http://porthole.sourceforge.net Porthole]'''이 제공된다. 또한 "eMerge용 Haskell 인터페이스"를 의미하는 '''Himerge''' GUI도 있다.

2. 1. Emerge

`emerge` 명령 줄 도구는 포티지의 핵심이다. 이 명령어는 다양한 옵션과 수정자를 통해 사용자 정의가 가능하다. `emerge` 도구는 명령 줄에서 포티지의 기능에 접근하기 위한 가장 중요한 유틸리티이다.

이 프로그램은 의존성을 계산하고 관리하며, ebuild를 실행하고, 로컬 포티지 트리 구조와 설치된 패키지 데이터베이스를 유지한다.[6] `ebuild`에서 사용되는 컴파일 설정은 개별 컴퓨터의 사양과 사용자의 최적화 요구 사항에 따라 CFLAGS 환경 변수를 통해 변경할 수 있다.[6] `emerge` 유틸리티는 샌드박스 환경에서 `ebuild`를 실행한다.[6] 이러한 방식으로 시스템은 `ebuild`에 의해 실행되는 소프트웨어로부터 보호되며, 결과 바이너리는 빌드가 성공적으로 완료되고 샌드박스 설치 후에만 병합된다.[6]

`emerge`가 의존성으로 설치하는 것은 USE 플래그 설정의 영향을 받는다.[6] 이는 응용 프로그램을 설치하거나 업그레이드할 때 포함될 선택적 기능을 결정한다.[6] `emerge` 명령은 미리 컴파일된 바이너리 파일을 다운로드하여 설치하는 데에도 사용할 수 있다.[6]

2. 2. USE 플래그

포티지 시스템은 사용자가 패키지를 빌드할 때 포함하거나 제외할 소프트웨어 기능을 지정할 수 있는 "USE 플래그"를 제공한다. 예를 들어, DVD 지원 USE 플래그를 활성화하면 해당 기능을 포함하여 패키지가 컴파일된다.[1] USE 플래그는 필요한 의존성에 영향을 미치며, 프로그램 컴파일 시 어떤 선택적 기능을 포함할지 결정한다.[1] 예를 들어, configure 스크립트를 사용하는 패키지에서 USE 플래그 `feature`는 `./configure --with-feature`로 변환된다.[1]

USE 플래그는 수동으로 설정하거나, 'ufed'(USE 플래그 편집기)와 같은 도구를 통해 설정할 수 있다.[1] 사용 가능한 USE 플래그 목록은 젠투 웹사이트의 [https://www.gentoo.org/support/use-flags/ USE 플래그 인덱스]에서 확인할 수 있다.[1]

2. 3. ebuild

젠투는 다른 패키지 관리 시스템과 달리 기본적으로 바이너리 패키지 대신 ebuild라는 형식을 사용한다.[7] ebuild는 소프트웨어를 획득, 구성, 컴파일, 설치하는 방법을 설명하는 셸 스크립트이다. 이는 RPM의 .spec 파일과 유사하지만 더 강력하다.[7]

공식 저장소에는 19,600개 이상의 ebuild가 있으며, 대부분 젠투 미러를 통해 배포된다.[7] `emaint sync -a` 명령으로 로컬 ebuild 저장소를 미러와 동기화하여 새롭거나 업데이트된 ebuild를 얻을 수 있다. 모질라 파이어폭스나 오픈오피스처럼 컴파일 시간이 오래 걸리는 프로그램은 패키지 이름에 "-bin"을 추가해 바이너리 버전을 설치할 수도 있다.

2. 3. 1. ebuild 예시

bash

# Copyright 1999-2020 Gentoo Authors

# Distributed under the terms of the GNU General Public License v2

EAPI=7

PYTHON_COMPAT=( python3_{6,7,8} )

DISTUTILS_USE_SETUPTOOLS="no"

inherit distutils-r1 virtualx xdg-utils

DESCRIPTION="Multiple GNOME terminals in one window"

HOMEPAGE="https://github.com/gnome-terminator/terminator"

SRC_URI="https://github.com/gnome-terminator/terminator/releases/download/v${PV}/${P}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="amd64 ~ppc x86"

IUSE="dbus +libnotify"

RDEPEND="

>=dev-libs/glib-2.32:2

dev-libs/keybinder:3[introspection]

dev-python/configobj[${PYTHON_USEDEP}]

dev-python/psutil[${PYTHON_USEDEP}]

dev-python/pycairo[${PYTHON_USEDEP}]

dev-python/pygobject:3[${PYTHON_USEDEP}]

>=x11-libs/gtk+-3.16:3

x11-libs/vte:2.91[introspection]

dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )

libnotify? ( x11-libs/libnotify[introspection] )

"

BDEPEND="

dev-util/intltool

"

distutils_enable_tests setup.py

PATCHES=(

"${FILESDIR}"/terminator-1.91-without-icon-cache.patch

"${FILESDIR}"/terminator-1.91-desktop.patch

"${FILESDIR}"/terminator-1.92-make-tests-fail.patch

"${FILESDIR}"/terminator-1.92-metainfo.patch

)

src_prepare() {

xdg_environment_reset

distutils-r1_src_prepare

}

src_test() {

virtx distutils-r1_src_test

}

pkg_postinst() {

xdg_desktop_database_update

xdg_icon_cache_update

}

pkg_postrm() {

xdg_desktop_database_update

xdg_icon_cache_update

}

```

다음은 GNOME Terminator의 ebuild 예시이다.[7]

2. 4. 바이너리 패키지

젠투는 바이너리 패키징 형식을 가지고 있으며, 이는 추가적인 메타데이터를 포함하는 .tbz2 파일(tar에 bzip2 압축을 사용)이다. 이 기능을 통해 한 시스템에서 `buildpkg` 또는 `quickpkg`를 사용하여 바이너리 패키지를 빌드한 후, 호환되는 시스템에서 `getbinpkg` 또는 `emerge -K`를 사용하여 빠르게 설치할 수 있다. 자세한 내용은 [http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=3#doc_chap4 젠투 리눅스 핸드북의 Portage 기능]을 참조하십시오.

2. 5. 마스킹 (Masking)

마스킹은 젠투가 시스템에 적합한 패키지를 결정하는 방법이다. 다른 아키텍처용으로 설계되었거나 실험적인 소프트웨어용으로 설계된 이빌드는 일반적으로 사용자의 개입 없이는 안정적인 시스템에서 설치할 수 없도록 마스킹된다.

일반적으로 테스트가 필요하지만 종종 잘 작동하는 패키지는 ''키워드 마스크''라고 한다. (예: `~x86`, `~amd64`, `~ppc`와 같이 문자 `~`로 시작하는 ACCEPT_KEYWORDS 항목이 있는 시스템에서 사용할 수 있다). 개별 ''키워드 마스크'' 패키지는 `/etc/portage/package.accept_keywords/` 디렉토리 내의 일부 파일에 전체 패키지 이름과 키워드를 포함하는 줄을 추가하여 마스크를 해제할 수 있다. 사용자는 여기에 하위 디렉토리를 만들 수도 있어 사용자 정의 구성을 할 수 있다. 예를 들어, 마스크된 패키지에 여러 개의 마스크된 종속성이 있는 경우, 사용자는 원래 마스크된 패키지 이름으로 디렉토리를 만들고 해당 디렉토리에 패키지 및 종속성에 대한 모든 마스크 파일을 넣을 수 있다. 이 방식은 `/etc/portage/package.accept_keywords`를 하나의 텍스트 파일로 사용하는 이전 방식을 대체한다.

알려진 문제가 있거나 안정화 후보로 간주되지 않는 패키지는 `/usr/portage/profiles`에 있는 다양한 package.mask 파일 중 하나에 의해 ''하드 마스크''되며, 이러한 항목에는 일반적으로 마스크 이유를 설명하는 개발자의 주석이 함께 제공된다.

3. 젠투/Alt (Gentoo/Alt)

젠투/Alt는 포티지 프레임워크 및 기타 기능을 Mac OS X, FreeBSD 등 다른 운영 체제로 포팅하기 위해 만들어진 프로젝트이다. 젠투/Alt는 피터 반 덴 아베일(Pieter Van den Abeele)과 다니엘 로빈스에 의해 설립되었으며, 피터 반 덴 아베일이 Mac OS X용 젠투를 설립한 후 시작되었다.[8]

3. 1. Mac OS X

젠투 for Mac OS X는 젠투의 첫 번째 비 리눅스 프로젝트로, 포티지 시스템을 별도의 개체로 도입하여 애플 운영체제에서 젠투 경험을 제공하는 데 중점을 두었다. 이는 Fink와 MacPorts와 유사했지만, Debian 또는 Ports와 같은 시스템 대신 포티지를 사용했다. 이후 젠투 for Mac OS X는 젠투/Alt의 하위 프로젝트가 되었다. 이 프로젝트는 더 이상 활성화되지 않는데, 호스트 OS를 사용하고 수정하지 않는다는 주요 가정이 현실적이지 않은 것으로 나타났고 결국 대부분의 패키지를 망가뜨리거나 유지 관리가 어렵게 만들었기 때문이다. 젠투 for Mac OS X는 현재 젠투가 Mac OS X 사용자에게 제공하는 젠투 접두사로 대체되었다.[8]

Mac OS X의 접두사 프로젝트는 PowerPC, IA-32, x86-64 아키텍처에서 Mac OS X 타이거, 레오파드, 스노우 레오파드를 지원한다.[9]

3. 2. FreeBSD

젠투 리눅스의 설계, 구조, 그리고 포티지와 젠투 리눅스 기반 레이아웃과 같은 도구를 프리BSD 운영 체제로 가져왔다. 젠투의 GNU 툴체인은 원래의 프리BSD 툴체인 대신 사용된다.[11]

이 프로젝트는 더 이상 젠투 개발자에 의해 유지 관리되지 않지만, 전체 젠투/프리BSD 시스템을 설치할 수 있는 지침이 남아있다.[11] 프리BSD 시스템 이빌드는 메인 포티지 트리에 통합되어 있지만, 포팅해야 하는 패키지의 양과 적절한 라이브 CD가 없어서(설치 중에는 FreeSBIE의 라이브 CD 또는 프리BSD 설치 CD가 사용됨) 이 포트는 아직 완성되지 않았다.

3. 3. NetBSD

젠투/NetBSD는 NetBSD 커널과 함께 포티지로 관리되는 GNU 유저랜드를 제공하는 프로젝트이다. 이 프로젝트는 데미안 플로르치크에 의해 시작되었다. 현재는 x86 아키텍처만 지원하며, 시스템 전체가 아직 불완전한 상태이다.

3. 4. OpenBSD

젠투/OpenBSD는 젠투의 포티지와 같은 기능을 OpenBSD 운영 체제로 이식하기 위한 젠투/*BSD 하위 프로젝트였다. 이 프로젝트는 원래 Grant Goodyear에 의해 시작되었으며, 현재는 더 이상 사용되지 않는다[13]. 프로젝트 페이지에서 설치 가이드를 제공했지만, 이 역시 더 이상 사용되지 않음으로 표시되어 있다.

3. 5. 기타 운영 체제

DragonFlyBSD 커널에 대한 비공식 포트인 젠투/DragonFlyBSD는 현재 로버트 세바스찬 게루스에 의해 개발되었다.[14]

GNU Hurd에 대한 비공식 포팅 작업도 진행되었으나,[15] 2006년 말에 중단되었다.

Benda Xu가 이끄는 "안드로이드 기기용 젠투 RAP"는 안드로이드와 함께 디렉토리 접두사에 젠투 RAP라는 젠투 변형을 설치한다.[16] 리눅스 커널은 안드로이드와 젠투 RAP에서 모두 사용된다.[16]

젠투/인터릭스(eprefix)는 Interix 서브시스템(Windows용)을 기반으로 실행되는 젠투의 포트로, 마이크로소프트 윈도우용 서비스(SFU) 또는 유닉스 기반 응용 프로그램용 서브시스템(SUA)으로도 알려져 있다. 젠투/인터릭스 프로젝트의 결과로 포티지 시스템을 설치하고 사용하여 네이티브 윈도우 응용 프로그램을 이머지할 수 있다(비주얼 스튜디오 필요, 2008 익스프레스 에디션도 가능). 그러나 이 기능은 다른 플랫폼(Interix 포함)에서 지원하는 다양한 패키지를 지원하지 않는다.

2006년경에 발표된 솔라리스 운영 체제로의 비공식 포트인 "Portaris"는 공개 상태로 출시되지 않았다. 이는 젠투 프리픽스 프로젝트에 의해 대체되었다.

2011년 구글 서머 오브 코드 프로젝트로 시작된 Plan 9 For Gentoo는 젠투(Gentoo) 기반을 사용하고, 벨 연구소의 Plan 9에서 영감을 받은 사용자 공간을 오버레이한다.[17] 이 프로젝트의 목표는 더 나은 하드웨어 지원, 더 나은 소프트웨어 지원, 그리고 이전에 리눅스 시스템을 사용했던 사람들에게 "문화 충격"을 주는 것이다.[17] 이 프로젝트는 로버트 시튼(Robert Seaton)이 유지보수한다.[17]

4. 명령어 예시

`emerge -pvuDN @world`[1] 명령어는 시스템에 있는 모든 프로그램 중 변경 또는 업데이트가 있는 목록을 표시한다.[1] 각 옵션의 의미는 다음과 같다.[1]


  • p 옵션: 실제 작업을 실행하지 않고, 어떤 작업을 할 것인지 표시한다.[1]
  • v 옵션: 컴파일 과정을 모두 표시한다.[1]
  • u 옵션: 업그레이드를 의미한다.[1]
  • D 옵션: 의존 관계에 있는 소프트웨어까지 추적한다.[1]
  • N 옵션: 새롭게 설정된 `USE 플래그`를 감지한다.[1]
  • @world: 지금까지 사용자의 지시로 설치된 패키지.[1]


p 옵션을 제거하면 실제로 업데이트 작업이 실행된다.[1]

참조

[1] 웹사이트 About Gentoo https://www.gentoo.o[...] 2019-08-23
[2] 웹사이트 My Workstation OS: Gentoo | Tom Chance's website http://tom.acrewoods[...]
[3] 웹사이트 Gentoo Linux Reloaded - O'Reilly Media http://www.linuxdevc[...] 2015-05-27
[4] 웹사이트 OSNews.com http://www.osnews.co[...] 2015-05-27
[5] 웹사이트 Project:Package Manager Specification https://wiki.gentoo.[...] 2019-08-23
[6] 웹사이트 Gentoo Linux Documentation - Making the distribution, Part 3 http://www.gentoo.or[...]
[7] 웹사이트 ebuild - Gentoo Wiki https://wiki.gentoo.[...] 2019-12-17
[8] 웹사이트 Gentoo for Mac OS X project targets https://web.archive.[...] 2017-07-20
[9] 웹사이트 Gentoo Prefix Bootstrap Process for Mac OS X https://web.archive.[...] 2017-07-20
[10] 웹사이트 Index of /experimental/bsd/freebsd/stages/amd64-fbsd-9.1 https://distfiles.ge[...] 2016-09-24
[11] 웹사이트 Gentoo FreeBSD https://wiki.gentoo.[...] 2019-03-06
[12] 웹사이트 Not-so-official Gentoo/FreeBSD artwork contest https://flameeyes.bl[...] 2017-07-20
[13] 웹사이트 Gentoo OpenBSD - Gentoo wiki https://wiki.gentoo.[...] 2024-11-25
[14] 웹사이트 Gentoo/*BSD https://web.archive.[...] 2017-07-20
[15] 웹사이트 Gentoo GNU HURD https://web.archive.[...] 2017-07-20
[16] 웹사이트 Project:Android - Gentoo Wiki http://wiki.gentoo.o[...] 2016-09-24
[17] 웹사이트 Plan 9 From Gentoo: Plan 9 Meets Gentoo https://web.archive.[...] 2017-07-20
[18] 웹인용 repo/gentoo.git https://gitweb.gento[...] 2020-02-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com