Короткий огляд

Portage - надзвичайно потужна, передова та нарощувальна система керування пакетами. Її гнучкість, простий механізм збирання та формування операційної системи, за бажаннями користувача, дозволяють їй гордо носити ім'я двигуна найбільшого метадистрибутиву GNU/Linux - Gentoo. Весь дистрибутив Gentoo Linux формується навколо системи ?Portage.

Сам Gentoo Linux часто називають метадистрибутивом. Він складається з Portage і понад 8000 інструкцій (скриптів) збирання програмного забезпечення, яких називають ?ebuild. Ці інструкції повідомляють Portage, як скомпілювати й встановити програмний пакет. За допомогою інформації, що зберігається в профілі та директив, що передаються утиліті ?emerge (яка запускається з командного рядка), користувачі й розробники можуть використовувати Portage для встановлення й супроводу пакетів, що складають систему - від основних пакетів операційної системи до найскладніших прикладних програм.

Gentoo Linux - система, "що компілюється на льоту". Щоб встановити Gentoo потрібно мати робочий Linux з компілятором та підходящим середовищем, можна стягнути мінімальний Gentoo LiveCD для вашої платформи, далі потрібно вибрати апаратно-програмний профіль котрий задовольняє, як Вашому апаратному забезпеченю так і бажаному майбутньому програмному середовищу, встановити профіль та поточну базу даних ?Portage - це все, необхідне для того, щоб далі ?Portage сама могла завантажити з Інтернету тексти програм і скласти систему з будь-якими бажаними додатками. Portage підтримує й виготовлені заздалегідь двійкові пакети, проте їхня головна мета - пришвидшити процес встановлення на повільних машинах, а не розповсюджувати програмні поновлення. А ще двійкові пакунки можна використовувати для швидкого повторного встановлення програми чи розповсюдження програм у кластері подібних машин.

За рахунок цього, та можливості задавати опції компіляції і вказувати умовні залежності, Portage і має надзвичайно високі показники конфіґурабельності системи, що встановлює пакети. Дуже небагато інсталяцій дистрибутиву Gentoo Linux проходять абсолютно однаково. По суті, коли користувач встановлює Gentoo Linux, Portage будує і компілює операційну систему GNU/Linux, виходячи з параметрів, зазначених у вибраному та створеному профілях, конфігураційному файлі й усередині самого ebuild-скрипта. Portage створить дистрибутив на замовлення, і він відповідатиме всім вимогам, які поставив користувач.

На перший погляд ідея Portage може видатися дуже поідбною до традиційної системи портів BSD. Обидві системи компілюють пакети з джерельних текстів, дозволяють користувачам безпечно встановлювати і видаляти програмне забезпечення а також автоматично обробляють залежності. Багато ідей у системі Portage запозичені із системи BSD-портів, але Portage - це не ще одна їх "ксерокопія".

Система Portage - це злиття мови Python зі сценаріями ebuild, що базуються на Bash скриптах. Замість простого використання складальних файлів (Makefile) і команди make, Portage виграє за рахунок використання потужної мови Python і легких у використанні скриптів shell з деякими об’єктно-орієнтованими характеристиками. Усе це дає в результаті дійсно могутню систему. Ми схильні вважати Portage найкращою системою портів у порівнянні з існуючими аналогами.

Деякі з додаткових особливостей Portage - це можливість мати безліч версій і ревізій того ж самого пакета, умовні залежності і підтримка додаткових можливостей, тонке керування пакетами, збирання пакетів у віртуальному середовищі (пісочниці), захист конфігураційних файлів і т.ін. Багато з цих особливостей докладно розглянуті у цьому підручнику.

Умовні залежності та слоти

Система ?Portage унікальна своєю гнучкістю, яку вона надає користувачам. Традиційні системи портів BSD можуть підтримувати тільки одну версію пакета у дереві портів. Система Portage не має такого обмеження. Для установки можуть бути доступні безліч різних версій того самого пакета. Пакети, що вимагаються для компіляції та використання іншого пакета, можуть бути визначені або по імені, або по імені з доданням номеру версії. Це дозволяє безпечно зберігати різні версії в межах одного дерева.

Система залежності також підтримує умовні залежності. Portage має ефективну особливість, що називається системою USE. Змінивши одну змінну в конфігураційному файлі Portage, ви можете відключати додаткову підтримку (та її залежності) специфічних особливостей бібліотек для всіх пакетів, які компілюватимуться. Це дуже гнучка і потужна система, детальніше про неї написано в наступному розділі.

Крім того, Portage підтримує СЛОТИ (SLOT). У період розвитку дистрибутиву Gentoo Linux, його розробникам часто було необхідно встановити різні версії пакетів (бібліотек), щоб задовольнити запити інших пакетів. Традиційний підхід до рішення цієї проблеми полягає в тому, щоб називати різні версії одного й того ж пакета як різні пакети з незначними відмінностями у іменах (наприклад gcc295, gcc33, gcc34).

Замість цього, розробники навчили Portage обробляти і підтримувати декілька версій того самого пакета, використовуючи СЛОТИ. Ми розглянемо приклад зі звичайною бібліотекою freetype. Версія 1.x несумісна з версією 2.x але, щоб задовольнити залежності різних пакетів, практично необхідні обидві. Більшість інших систем портів мають назви "freetype" для пакету freetype 1.x і "freetype2" для 2.x. Ми розглядаємо цей підхід, як порушення системи керування пакетами. Ми просто призначили номер СЛОТа в 1-цю для першої версії і в 2-ку - для другої. З цією інформацією Portage може прослідкувати обидві версії і модернізувати їх, якщо зроблені відповідні поновлення.

Конфігураційні профілі

Також ?Portage підтримує конфігураційні профілі. Профіль містить список назв пакетів і версій з директивами і набором заданих за замовчуванням опцій, що використовуватимуться Portage. Також профіль повідомляє Portage, які пакети і які конкретні версій цих пакетів, потрібно дозволити чи заборонити, як того вимагає система чи користувач. Користувачі можуть переключати профілі, змінюючи єдине символічне посилання (/etc/make.profile). Цей шлях може показатися простим, але він дозволяє Portage формувати ядро дистрибутива і служити професійній побудові системи.

Зусилля, витрачені на створення дистрибутива Gentoo Linux, привели до цілої колекції файлів ?ebuild і безлічі змінних у профілі. Конфігураційний профіль визначає, які пакети життєво важливі для "ядра" системи. Він дозволяє розроблювачам блокувати і розблокувати визначені пакети і/чи версії, щоб тимчасово відключити з них зламані і т.д. Файли ?Ebuild просто повідомляють Portage, як збирати і встановлювати пакети з параметрами профілю.