Portage
Portage — це система керування пакунками, спочатку створена та використовувана Gentoo Linux. Згодом її почали використовувати й інші системи, зокрема ChromeOS та Calculate Linux. Portage базується на концепції колекцій портів — моделі, у якій програмне забезпечення описується спеціальними рецептами збирання. Через надзвичайну гнучкість Portage дистрибутив Gentoo іноді називають метадистрибутивом. Це означає, що завдяки цій системі керування пакунками його можна дуже сильно налаштовувати, а сама Portage фактично не прив’язана до конкретної операційної системи. [1] [2] [3] [4] Проєкт Gentoo/Alt мав на меті використання Portage для керування програмним забезпеченням і в інших операційних системах. Зокрема розглядалася підтримка таких систем, як BSD, macOS та Solaris. Найвідомішою реалізацією цього підходу став проєкт Gentoo/FreeBSD .
Portage in action | |
| Тип | references |
|---|---|
| Автори | Daniel Robbins |
| Розробник | Gentoo developers |
| Стабільний випуск | references (P348) |
| Нестабільний випуск | references (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
ред.Portage подібний до системи керування пакунками у стилі BSD, відомої як ports, і спочатку був розроблений з урахуванням ports у FreeBSD.[6] Portage написаний мовою програмування Python і є основною утилітою, що визначає Gentoo. Хоча вся система відома як Portage, вона складається з двох основних частин: системи ebuild і emerge. Система ebuild відповідає за фактичну збірку та встановлення пакунків, тоді як emerge надає інтерфейс до ebuild: керує репозиторієм ebuild, вирішує залежності та інші пов’язані задачі. (Таким чином, їх взаємозв’язок приблизно аналогічний тому, як rpm співвідноситься з yum або dpkg з APT.)
Для роботи з Portage доступний графічний інтерфейс на базі GTK — Porthole. Також існує GUI Himerge, що означає «Haskell Interface for eMerge».
Надані функції
ред.Portage характеризується своєю основною функцією: компіляцією пакунків із вихідного коду, які користувач бажає встановити. Це дозволяє налаштовувати параметри компілятора та цільових застосунків відповідно до характеристик системи й потреб користувача. До функцій керування системою належать: можливість паралельного встановлення різних версій пакунків, відстеження міжпакетних залежностей, керування базою даних встановлених пакунків, підтримка локального репозиторію ebuild і синхронізація локального дерева Portage з віддаленими репозиторіями. До функцій встановлення окремих пакунків належать: визначення параметрів компіляції для цільової системи та вибір компонентів пакунка.
Portage розрізняє три рівні стабільності ebuild-пакунків: stable (стабільні — програмне забезпечення працює як очікується та не має відомих проблем безпеки на момент релізу), keyword masked (зазвичай пакунки, які ще недостатньо протестовані на цільовій архітектурі, щоб вважатися стабільними) та hard masked (зламані або дуже небезпечні пакунки).
Функції
ред.Emerge
ред.Інструмент командного рядка emerge є серцем Portage. Ця команда має багато параметрів і модифікаторів для налаштування. emerge — найважливіша утиліта для доступу до можливостей Portage з командного рядка.
Програма обчислює та керує залежностями, виконує ebuild-скрипти й підтримує локальне дерево Portage та базу даних встановлених пакунків. Параметри компіляції, які використовуються ebuild, можна змінювати через змінну середовища CFLAGS, відповідно до характеристик конкретного комп’ютера та побажань користувача щодо оптимізації. Утиліта emerge виконує ebuild у середовищі пісочниці. Завдяки цьому система захищена від програм, які запускаються під час виконання ebuild, а результуючі бінарні файли додаються до системи лише після успішної збірки та встановлення в ізольованому середовищі.
Те, які залежності встановлює emerge, визначається налаштуваннями USE-флагів. Вони вирішують, які додаткові можливості будуть включені під час встановлення або оновлення застосунку. Команду emerge також можна використовувати для завантаження та встановлення попередньо скомпільованих бінарних файлів.
USE-флаги
ред.Система 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
ред.| Розробник | 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
ред.| Родина ОС | Unix-like (BSD) |
|---|---|
| Робочий стан | Discontinued[13] |
| Вихідна модель | Open source |
| Останній випуск | Gentoo Prefix on OpenBSD / 4 квітня 2011 |
| Репозиторій | |
| Менеджер пакетів | 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]
Див. також
ред.Посилання
ред.- ↑ About Gentoo. gentoo.org. Архів оригіналу за 21 грудня 2018. Процитовано 23 серпня 2019.
- ↑ My Workstation OS: Gentoo | Tom Chance's website [Архівовано 2009-07-08 у Wayback Machine.]
- ↑ Daniel Robbins (10 жовтня 2002). Gentoo Linux Reloaded - O'Reilly Media. Архів оригіналу за 14 жовтня 2017. Процитовано 27 травня 2015.
- ↑ OSNews.com. Архів оригіналу за 29 вересня 2007. Процитовано 27 травня 2015.
- ↑ Project:Package Manager Specification. wiki.gentoo.org. Архів оригіналу за 8 липня 2019. Процитовано 23 серпня 2019.
- ↑ Документація Gentoo Linux — Створення дистрибутива, Частина 3 [Архівовано 2014-12-22 у Wayback Machine.]
- ↑ ebuild - Gentoo Wiki. wiki.gentoo.org. Архів оригіналу за 17 грудня 2019. Процитовано 17 грудня 2019.
- ↑ Profile (Portage) - Gentoo wiki.
- ↑ Groffen, Fabian (15 грудня 2005). Gentoo for Mac OS X project targets. Архів оригіналу за 21 травня 2008. Процитовано 20 липня 2017.
- ↑ Groffen, Fabian (1 червня 2009). Gentoo Prefix Bootstrap Process for Mac OS X. Архів оригіналу за 19 липня 2009. Процитовано 20 липня 2017.
- ↑ а б в Gentoo FreeBSD. Gentoo Wiki. 20 серпня 2018. Архів оригіналу за 6 січня 2014. Процитовано 6 березня 2019.
- ↑ Pettenò, Diego Elio (16 липня 2005). Not-so-official Gentoo/FreeBSD artwork contest. Flameeyes's Weblog. Архів оригіналу за 19 квітня 2019. Процитовано 20 липня 2017.
- ↑ Gentoo OpenBSD - Gentoo wiki.
- ↑ Gentoo OpenBSD - Gentoo wiki. wiki.gentoo.org. Процитовано 25 листопада 2024.
- ↑ Goodyear, Grant; Pettenò, Diego Elio (19 жовтня 2006). Gentoo/*BSD. Архів оригіналу за 28 грудня 2007. Процитовано 20 липня 2017.
- ↑ Gentoo GNU HURD. Архів оригіналу за 9 січня 2010. Процитовано 20 липня 2017.
- ↑ а б Project:Android - Gentoo Wiki. Wiki.gentoo.org. 13 січня 2016. Архів оригіналу за 24 жовтня 2016. Процитовано 24 вересня 2016.
- ↑ а б в Seaton, Robert (1 серпня 2011). Plan 9 From Gentoo: Plan 9 Meets Gentoo. Архів оригіналу за 26 квітня 2012. Процитовано 20 липня 2017.
Зовнішні посилання
ред.- Офіційна документація
- Функції Gentoo Portage
- Вступ до Gentoo Portage
- Робота з Portage
- пакунки Gentoo, інформація про доступні наразі e-збірки
- Неофіційна документація
- Gentoo-Portage, alternative presentation of current ebuild information
- Using Portage
- Installing portage on other Linux distros
- Схоже програмне забезпечення
- Emerde, проєкт для Slackware, подібний до portage
- Pkgcore, переробка portage в BSD
- [Архівовано 2020-09-23 у Wayback Machine.] Палудіса , менеджер пакунків, який можна використовувати з ebuilds та іншими форматами
- Arch Build System — система, подібна до портів, для Arch Linux
