Portage — це система керування пакунками, спочатку створена та використовувана Gentoo Linux. Згодом її почали використовувати й інші системи, зокрема ChromeOS та Calculate Linux. Portage базується на концепції колекцій портів — моделі, у якій програмне забезпечення описується спеціальними рецептами збирання. Через надзвичайну гнучкість Portage дистрибутив Gentoo іноді називають метадистрибутивом. Це означає, що завдяки цій системі керування пакунками його можна дуже сильно налаштовувати, а сама Portage фактично не прив’язана до конкретної операційної системи. [1] [2] [3] [4] Проєкт Gentoo/Alt мав на меті використання Portage для керування програмним забезпеченням і в інших операційних системах. Зокрема розглядалася підтримка таких систем, як BSD, macOS та Solaris. Найвідомішою реалізацією цього підходу став проєкт Gentoo/FreeBSD .

Portage
Portage in action
Типreferences
АвториDaniel Robbins
РозробникGentoo developers
Стабільний випускreferences (P348; тому (P348))
Нестабільний випускreferences (single; тому (single))
ПлатформаPOSIX-compatible/Python-capable
Операційна системаGentoo Linux and Gentoo/FreeBSD, ChromiumOS, ChromeOS, Sabayon, Calculate Linux
Мова програмуванняreferences
Ліцензіяreferences
Репозиторійgitweb.gentoo.org/proj/portage.git
Вебсайтwiki.gentoo.org/wiki/Project:Portage

Постійно триває проєкт під назвою «Специфікація менеджера пакунків» (PMS) [5], метою якого є стандартизація та документування поведінки Portage, що дозволяє використовувати дерево ebuild та системні пакунки Gentoo з альтернативними менеджерами пакунків, такими як Paludis та pkgcore. Його метою є визначення точного набору функцій та поведінки менеджерів пакунків та ebuild, що слугуватиме авторитетним довідником для Portage.

Огляд

ред.

Доступ до Portage

ред.
 
Графічний інтерфейс Porthole.

Portage подібний до системи керування пакунками у стилі BSD, відомої як ports, і спочатку був розроблений з урахуванням ports у FreeBSD.[6] Portage написаний мовою програмування Python і є основною утилітою, що визначає Gentoo. Хоча вся система відома як Portage, вона складається з двох основних частин: системи ebuild і emerge. Система ebuild відповідає за фактичну збірку та встановлення пакунків, тоді як emerge надає інтерфейс до ebuild: керує репозиторієм ebuild, вирішує залежності та інші пов’язані задачі. (Таким чином, їх взаємозв’язок приблизно аналогічний тому, як rpm співвідноситься з yum або dpkg з APT.)

Для роботи з Portage доступний графічний інтерфейс на базі GTKPorthole. Також існує GUI Himerge, що означає «Haskell Interface for eMerge».

Надані функції

ред.

Portage характеризується своєю основною функцією: компіляцією пакунків із вихідного коду, які користувач бажає встановити. Це дозволяє налаштовувати параметри компілятора та цільових застосунків відповідно до характеристик системи й потреб користувача. До функцій керування системою належать: можливість паралельного встановлення різних версій пакунків, відстеження міжпакетних залежностей, керування базою даних встановлених пакунків, підтримка локального репозиторію ebuild і синхронізація локального дерева Portage з віддаленими репозиторіями. До функцій встановлення окремих пакунків належать: визначення параметрів компіляції для цільової системи та вибір компонентів пакунка.

Portage розрізняє три рівні стабільності ebuild-пакунків: stable (стабільні — програмне забезпечення працює як очікується та не має відомих проблем безпеки на момент релізу), keyword masked (зазвичай пакунки, які ще недостатньо протестовані на цільовій архітектурі, щоб вважатися стабільними) та hard masked (зламані або дуже небезпечні пакунки).

Функції

ред.

Emerge

ред.
 
Видалення (unmerge) файлового менеджера SpaceFM

Інструмент командного рядка emerge є серцем Portage. Ця команда має багато параметрів і модифікаторів для налаштування. emerge — найважливіша утиліта для доступу до можливостей Portage з командного рядка.

Програма обчислює та керує залежностями, виконує ebuild-скрипти й підтримує локальне дерево Portage та базу даних встановлених пакунків. Параметри компіляції, які використовуються ebuild, можна змінювати через змінну середовища CFLAGS, відповідно до характеристик конкретного комп’ютера та побажань користувача щодо оптимізації. Утиліта emerge виконує ebuild у середовищі пісочниці. Завдяки цьому система захищена від програм, які запускаються під час виконання ebuild, а результуючі бінарні файли додаються до системи лише після успішної збірки та встановлення в ізольованому середовищі.

Те, які залежності встановлює emerge, визначається налаштуваннями USE-флагів. Вони вирішують, які додаткові можливості будуть включені під час встановлення або оновлення застосунку. Команду emerge також можна використовувати для завантаження та встановлення попередньо скомпільованих бінарних файлів.

USE-флаги

ред.
 
Portage під час оновлення системи

Система Portage пропонує використання «USE-флагів», які дозволяють користувачам визначати, які можливості програмного забезпечення вони хочуть включити (або виключити) під час збірки пакунків. Наприклад, існує USE-флаг для додавання підтримки DVD у пакунках, де це можливо, якщо прапорець увімкнено. USE-флаги впливають на те, які залежності потрібні, а також визначають, які додаткові функції будуть включені до програми під час компіляції. Наприклад, у пакунках, що використовують configure script, USE-флаг feature перетворюється на ./configure --with-feature.

Вказування USE-флагів — це стандартний спосіб налаштування програм у Gentoo. Їх можна задавати вручну або за допомогою зручних інструментів, таких як 'ufed' (редактор USE-флагів), який відображає список прапорців разом із їхнім описом. Список доступних USE-флагів можна знайти на сайті Gentoo: USE Flag Index.

ebuild

ред.

Gentoo за замовчуванням не використовує бінарні пакунки, як це роблять інші системи керування пакунками (наприклад, pacman або apt), натомість застосовує формат, відомий як ebuild. Якщо RPM-бінарники — це вже скомпільовані виконувані файли, то ebuild — це shell-скрипти зі змінними та функціями, які містять опис програмного забезпечення та інструкції, як його отримати, налаштувати, скомпілювати та встановити. Вони подібні (але потужніші) до .spec-файлів, що розповсюджуються у SRPM.[7] Офіційний репозиторій містить понад 19 600 ebuild-файлів, більшість із яких розповсюджуються через дзеркала Gentoo (mirror). Нові та оновлені ebuild можна отримати шляхом синхронізації локальних репозиторіїв із дзеркалами. Це виконується командою emaint sync -a. Історично Gentoo також надавав попередньо скомпільовані бінарні пакунки для багатьох популярних програм, особливо тих, які довго компілюються, таких як Mozilla Firefox та OpenOffice.org. Вони досі встановлюються через emerge, достатньо додати суфікс «-bin» до назви пакунка, щоб встановити бінарну версію.

Приклад ebuild для GNOME Terminator:

# 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
}

Бінарні пакунки

ред.

Gentoo має власний формат бінарних пакунків — це файл .tbz2 (формат tar зі стисненням bzip2) з додатковими метаданими. Ця можливість дозволяє збирати бінарні пакунки на одній системі (за допомогою buildpkg або quickpkg у Portage), а потім швидко встановлювати їх на сумісних системах (за допомогою getbinpkg або emerge -K). Докладніше дивіться у посібнику Gentoo Linux.

Профілі

ред.

Portage має набір профілів для різних сценаріїв використання та цільових систем, які зазвичай версіонуються розробниками. Вони можуть змінювати поведінку Portage щодо файлової ієрархії, оновлення toolchain, libc та init-систем. Профілі також можуть застосовувати налаштування ebuild, прапорці компіляції та маскування у наборі world.[8]

Маскування

ред.

Маскування — це механізм, за допомогою якого Gentoo визначає, які пакунки підходять для системи. Ebuild, призначені для різних архітектур або експериментального ПЗ, зазвичай маскуються таким чином, щоб запобігти їх встановленню у стабільній системі без втручання користувача.

Пакунки, які потребують додаткового тестування, але зазвичай працюють нормально, позначаються як keyword masked (тобто доступні для систем із записом ACCEPT_KEYWORDS у make.conf, що починається з символу ~, наприклад ~x86, ~amd64, ~ppc). Окремий keyword masked пакунок можна розмаскувати, додавши рядок із повною назвою пакунка та ключовим словом у будь-який файл у каталозі /etc/portage/package.accept_keywords/. Користувачі також можуть створювати підкаталоги для зручної організації. Наприклад, якщо маскований пакунок має кілька маскованих залежностей, можна створити окрему директорію з його назвою та зберігати всі відповідні файли там. Ця схема замінила старий підхід із єдиним файлом /etc/portage/package.accept_keywords.

Пакунки з відомими проблемами або ті, що ще не достатньо стабільні, позначаються як hard masked у файлах package.mask у каталозі /usr/portage/profiles. Такі записи зазвичай супроводжуються коментарями розробників із поясненням причин маскування.

Gentoo/Alt

ред.

Gentoo/Alt — це проєкт, створений для керування портуванням фреймворку portage та інших функцій на інші операційні системи, такі як Mac OS X та безкоштовні BSD . Gentoo/Alt був створений Пітером Ван ден Абіле та Даніелем Роббінсом після того, як Пітер Ван ден Абіле заснував Gentoo для Mac OS X.

Mac OS X

ред.

Gentoo для Mac OS X був першим не-Linux-проєктом Gentoo, зосередженим на тому, щоб зробити Gentoo доступним на операційній системі Apple шляхом представлення системи Portage як окремої сутності. Це було приблизно схоже на Fink та MacPorts, але використовувалося Portage замість системи, подібної до Debian або Ports. Пізніше Gentoo для Mac OS X було зроблено підпроєктом Gentoo/Alt. Проєкт більше не активний, оскільки його основне припущення щодо використання, а не модифікації хост-ОС, виявилося нереалістичним і зрештою зламало більшість пакунків або зробило їх важкодоступними для підтримки. Gentoo для Mac OS X був замінений на Gentoo Prefix, який наразі є тим, що Gentoo пропонує користувачам Mac OS X. [9]

Проєкт Prefix на Mac OS X протестовано та підтримується на Mac OS X Tiger, Leopard та Snow Leopard на архітектурах PowerPC, IA-32 та x86-64 . [10]

FreeBSD

ред.
Gentoo/FreeBSD
 
РозробникLinux
Родина ОСUnix-like (BSD)
Робочий станDiscontinued[11]
Вихідна модельOpen source
Репозиторій
Менеджер пакетівPortage
Тип ядраMonolithic (kFreeBSD)[11]
Користувацький
простір
FreeBSD[11]
ЛіцензіяVarious
Gentoo/FreeBSD

Gentoo/FreeBSD переносить дизайн, структуру та інструменти Gentoo Linux, такі як Portage та базова структура Gentoo Linux, в операційну систему FreeBSD . Замість оригінального набору інструментів FreeBSD використовується набір інструментів GNU від Gentoo.

Хоча проєкт більше не підтримується жодним активним розробником Gentoo, існують інструкції, які дозволяють встановити повну систему Gentoo/FreeBSD. Електронні збірки системи FreeBSD інтегровані в основне дерево портування, але цей порт далеко не завершений через кількість пакунків, які потрібно портувати, та відсутність належного Live CD (під час встановлення використовується Live CD FreeSBIE або інсталяційний CD FreeBSD).

Поточний (напів)офіційний логотип Gentoo/FreeBSD — це демонізована літера «g», похідна від оригінального логотипу Gentoo Linux та натхненна демоном BSD . Його розробив Маріус Моравський у відповідь на неофіційний конкурс, оголошений Дієго Еліо Петтено у своєму блозі. [12]

NetBSD

ред.

Gentoo/NetBSD — це проєкт, метою якого є забезпечення середовища користувачів GNU під керуванням Portage та ядра NetBSD. проєкт був розпочатий Даміаном Флорчиком. проєкт орієнтований лише на архітектуру x86, а система в цілому перебуває в незавершеному стані.

OpenBSD

ред.
Gentoo/OpenBSD
 
Родина ОСUnix-like (BSD)
Робочий станDiscontinued[13]
Вихідна модельOpen source
Останній випускGentoo Prefix on OpenBSD / 4 квітня 2011; 15 років тому (2011-04-04)
Репозиторій
Менеджер пакетівPortage
Тип ядраMonolithic (kOpenBSD)
Користувацький
простір
OpenBSD
ЛіцензіяVarious
Gentoo/OpenBSD

Gentoo/OpenBSD був підпроєктом Gentoo/*BSD для портування таких функцій Gentoo, як Portage, на операційну систему OpenBSD . Спочатку його започаткував Грант Гудьїр, і він є застарілим. [14] Посібник з встановлення наведено на сторінці проєкту, але він також позначений як застарілий.

DragonFlyBSD

ред.

Gentoo/DragonFlyBSD наразі є неофіційний порт ядра DragonFlyBSD . проєкт розроблено Робертом Себастьяном Герусом. [15]

GNU Hurd

ред.

Також розроблявся неофіційний порт на GNU Hurd, [16] але його було закинуто наприкінці 2006 року.

Android

ред.

Під керівництвом Бенди Сю, «Gentoo RAP для Android- пристроїв» встановлює варіант Gentoo під назвою Gentoo RAP у префікс каталогу поряд з Android. [17] Ядро Linux використовується як Android, так і Gentoo RAP. [17]

Interix

ред.

Gentoo/Interix (eprefix) — це порт Gentoo, що працює поверх підсистеми Interix для Windows, також відомої як Microsoft Windows Services for UNIX (SFU) або Subsystem for Unix-based Applications (SUA). Результатом проєкту Gentoo/Interix є можливість встановлення та використання системи Portage для створення нативних програм Windows (потрібна Visual Studio, 2008 Express Edition також підійде). Однак ця функція не підтримує широкий спектр пакунків, що підтримуються іншими платформами (включаючи Interix).

Portaris

ред.

Неофіційний порт операційної системи Solaris під назвою «Portaris» було анонсовано приблизно у 2006 році, але так і не став публічним. Його замінив проєкт Gentoo Prefix.

Plan 9

ред.

Розпочатий у 2011 році як проєкт Google Summer of Code, Plan 9 For Gentoo бере основу Gentoo та накладає на нього простір користувача, натхненний Plan 9. [18] Заявлені цілі проєкту полягають у покращенні апаратної підтримки, покращенні програмної підтримки та створенні «культурного шоку» для людей, які раніше використовували системи Linux . [18] Проєкт підтримує Роберт Сітон. [18]

Див. також

ред.

Посилання

ред.
  1. About Gentoo. gentoo.org. Архів оригіналу за 21 грудня 2018. Процитовано 23 серпня 2019.
  2. My Workstation OS: Gentoo | Tom Chance's website [Архівовано 2009-07-08 у Wayback Machine.]
  3. Daniel Robbins (10 жовтня 2002). Gentoo Linux Reloaded - O'Reilly Media. Архів оригіналу за 14 жовтня 2017. Процитовано 27 травня 2015.
  4. OSNews.com. Архів оригіналу за 29 вересня 2007. Процитовано 27 травня 2015.
  5. Project:Package Manager Specification. wiki.gentoo.org. Архів оригіналу за 8 липня 2019. Процитовано 23 серпня 2019.
  6. Документація Gentoo Linux — Створення дистрибутива, Частина 3 [Архівовано 2014-12-22 у Wayback Machine.]
  7. ebuild - Gentoo Wiki. wiki.gentoo.org. Архів оригіналу за 17 грудня 2019. Процитовано 17 грудня 2019.
  8. Profile (Portage) - Gentoo wiki.
  9. Groffen, Fabian (15 грудня 2005). Gentoo for Mac OS X project targets. Архів оригіналу за 21 травня 2008. Процитовано 20 липня 2017.
  10. Groffen, Fabian (1 червня 2009). Gentoo Prefix Bootstrap Process for Mac OS X. Архів оригіналу за 19 липня 2009. Процитовано 20 липня 2017.
  11. а б в Gentoo FreeBSD. Gentoo Wiki. 20 серпня 2018. Архів оригіналу за 6 січня 2014. Процитовано 6 березня 2019.
  12. Pettenò, Diego Elio (16 липня 2005). Not-so-official Gentoo/FreeBSD artwork contest. Flameeyes's Weblog. Архів оригіналу за 19 квітня 2019. Процитовано 20 липня 2017.
  13. Gentoo OpenBSD - Gentoo wiki.
  14. Gentoo OpenBSD - Gentoo wiki. wiki.gentoo.org. Процитовано 25 листопада 2024.
  15. Goodyear, Grant; Pettenò, Diego Elio (19 жовтня 2006). Gentoo/*BSD. Архів оригіналу за 28 грудня 2007. Процитовано 20 липня 2017.
  16. Gentoo GNU HURD. Архів оригіналу за 9 січня 2010. Процитовано 20 липня 2017.
  17. а б Project:Android - Gentoo Wiki. Wiki.gentoo.org. 13 січня 2016. Архів оригіналу за 24 жовтня 2016. Процитовано 24 вересня 2016.
  18. а б в Seaton, Robert (1 серпня 2011). Plan 9 From Gentoo: Plan 9 Meets Gentoo. Архів оригіналу за 26 квітня 2012. Процитовано 20 липня 2017.

Зовнішні посилання

ред.
Офіційна документація
Неофіційна документація
Схоже програмне забезпечення