Підручник по Portage

Увага!!!

Сталося, що ми маємо дві різні версії цього підручника. Це результат того, що при створенні посилань в розділах підручники та ЯКЦЕ було вибрано різні назви посилань.

Інша версія:

Підручник по Portage для Gentoo: переклад короткого підручника з Portage для Gentoo

Перш ніж правити, треба об'єднати ці версії!!!

Версія : 0.9.6 від 24 грудня 2002 року

Опис : Цей підручник містить загальний огляд Portage, що детально описує процес конфігурації, встановлення й підтримки системи.

Над документом працювали:

Це мій перший переклад узагалі, так що прошу вибачити за неточності та різні огріхи. Якщо хтось щось таке помітить, або захоче щось додати, то пишіть мені (або виправте самі :) і розмістіть, де хочете )

1. Portage: Короткий огляд

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

Portage — надзвичайно потужна передова система керування пакунками. Її гнучкість і здатність слугувати і простим двигуном будування, і формувачем серця потужного (??cutting edge) дистрибутиву Linux дає їй право називатись метадистрибутивним двигуном. Збірка Gentoo Linux будується навколо Portage.

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

Система Gentoo Linux «компілюється на льоту». Встановлення Gentoo Linux не вимагає нічого поза робочим компілятором і підхожим середовищем складання — це все, необхідне для того, щоб Portage могла завантажити з Інтернету тексти програм і скласти решту системи. Portage підтримує й виготовлені заздалегідь двійкові пакунки, проте їхня головна мета — пришвидшити процес встановлення на повільних машинах, а не розповсюджувати програмні поновлення: через дерево Portage розробники можуть удоступнювати нове опрограмування користувачам швидко й просто. А ще двійкові пакунки можна використовувати для швидкого повтору встановлення програми чи розповсюдження програм у кластері машин.

Ось чому, а ще тому, що Portage дозволяє гнучко налаштувати спосіб, у який вона провадить компіляцію та встановлення пакунків, мало які збірки Gentoo є однаковими. По суті, коли користувач встановлює Gentoo Linux, система Portage скомпілює дистрибутив Linux «під ключ», і він відповідатиме вимогам, котрі цей користувач поставив.

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

Система Portage — це поєднання основи Python зі скриптами ebuild, що пишуться на Bash. Замість мати справу з файлами Makefile й командою make, Portage виграє завдяки міці Python'а й легкості використання скриптів оболонки з певними об'єктно-орієнтованими характеристиками, що дає в результаті потужну систему, котра, сміємо думати, залишає всі інші системи портів далеко позаду.

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

Умовне вирішення залежностей та гнізда

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

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

А ще Portage підтримує ГНІЗДА (SLOTS). В час розвитку Gentoo Linux його розробникам часто були потрібні різні версії пакетів (бібліотек) у встановленому вигляді, щоб задовольнити запити інших пакетів. Традиційний підхід до вирішення цієї проблеми полягав у тому, щоб обробляти різні версії того ж самого пакета як різні пакети з дещо різними назвами.

Замість цього розробники навчили Portage обробляти й підтримувати кілька версій того ж самого пакунка, використовуючи гнізда. Ми розглянемо приклад зі звичайною бібліотекою freetype. Версія 1.x несумісна з версією 2.x, але (практично) необхідні обидві—щоб задовольнити залежності різних пакунків. Більшість систем портів називають пакет «freetype» для freetype 1.x і «freetype2» для 2.x. Ми розглядаємо цей підхід як порушення системи керування пакетами. Ми просто призначили гніздо номер 1 на першу версію й номер 2—на другу. З поміччю цієї інформації Portage може прослідковувати обидві версії й модернізувати їх, якщо зроблені відповідні поновлення.

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

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

Зусилля, витрачені на створення збірки Gentoo Linux, привели до цілої колекції файлів ebuild та безлічі змінних у профілі. Конфігураційний профіль визначає, які пакунки необхідні для «ядра» системи. Він дозволяє розробникам блокувати і розблокувати окремі пакунки й/чи версії, щоб тимчасово відключити з них зламані й т.д. [Не зрозумів. Час читати оригінал. --Ярослав Федевич 01:58, 21 Серп 2004 (EEST)] Файли Ebuild просто повідомляють Portage, як збирати і встановлювати пакети з параметрами профілю.

2. Налаштування Portage

2.1. Вступ

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

Будь ласка, зверніть увагу, що слово «користувачі» у даному документі означає «люди з адміністративними правами», тобто з можливістю використовувати Portage і змінювати конфігурацію системи. Ви повинні мати root-доступ для зміни конфігурації Portage, а також встановлення й видалення пакунків.

2.2. Конфігураційні файли Portage

Майже всі ключі налаштувань, котрі ми розглянемо, можна знайти в файлах /etc/make.conf, /etc/make.profile/make.defaults і /etc/make.global. /etc/make.conf містить набір різних змінних; він призначений для користувацького редагування. Portage у першу чергу перевірить усі змінні середовища, а якщо шукана змінна не знайдена, він також перевірить /etc/make.conf. Якщо ж нічого не знайдено і в /etc/make.conf, то перевірить /etc/make.profile/make.defaults. Якщо й там нічого не знайдено, він візьме типові налаштування з /etc/make.global. Будь ласка, ще раз зверніть увагу: всі користувацькі налаштування повинні бути зазначені або в середовищі оболонки, або у файлі /etc/make.conf, призначеному спеціально для них. Важливо зазначити, що будь-який ключ, означений в /etc/make.conf, буде майже завжди скасовувати ключ у /etc/make.global. Водночас ці файли є кумулятивними, тобто змінна, не означена в /etc/make.conf, але означена, скажімо, в /etc/make.global, буде додана в підсумкову змінну USE. Іншими словами, все в /etc/make.conf і /etc/make.global може розглядатися загальносистемною глобальною змінною для використання в Portage.

Для перевірки встановлених ключів рекомендується спочатку заглянути в /etc/make.conf, а вже потім у /etc/make.globals. Ключ, зазначений у /etc/make.conf, скасує ключ у /etc/make.globals.

2.3. Настроювання USE

USE настроювання - дуже гнучкий спосіб чи включення виключення різних особливостей пакета при зборці на глобальному й індивідуальному рівні. Що дозволяє адміністратору контролювати процес формування пакета за рахунок додаткових можливостей, що можуть бути обрані в подібних пакетах. Наприклад пакетам, для яких передбачена додаткова підтримка GNOME, цю підтримку можна відключити, змінивши опцію gnome у настроюваннях USE. Якщо ж не відключати підтримку gnome, то вони будуть скомпільовані з такий.

Ефект параметрів настроювання USE на пакетах залежить від того, чи підтримується програмне забезпечення власне програмою, і чи має ebuild-скрипт установку USE, як додаткову особливість. Якщо програмне забезпечення не має такої підтримки, тоді відповідна установка USE не буде мати ніякого ефекту. Також багато пакетних залежностей не розглядають опції USE, і їхня зміна не буде мати ніякого ефекту, оскільки пакет має примусові залежності. Список ключових слів USE, використовуваних пакетами, може бути знайдений у рядках DEPEND і RDEPEND у будь-якому ebuild-файлі.

Список усіх настроювань USE, використовуваних у Gentoo Linux, може бути знайдений у /usr/portage/profiles/use.desc. Кожна опція USE перерахована в одному рядку з коротким описом її призначення.

Portage визначає, включена USE чи ні, перевіряючи до чотирьох різних локацій. Ці локації змінюють параметри настроювання USE у шляху до "стек". Portage проходить через кожну локацію і запам'ятовує, чи допускалася ні опція USE, у попередній локації. Настроювання USE змінюється протягом проходу Portage через кожну локацію.

Порядок перевірки локацій настроювань USE встановлюється в USE_ORDER файлу /etc/make.globals. Щоб відключати локації просто, видалите їх з USE_ORDER.

Наступне опис кожної локації дається в порядку, визначеному в настроюваннях Portage за замовчуванням для USE_ORDER.

Defaults

Portage визначає набір заданих за замовчуванням ключів USE. Це зазначено в make.defaults і визначено у файлі make.defaults для будь-якої конфігурації Portage. Оскільки /etc/make.profile є посиланням, дійсний набір ключів зберігається в конфігураційному файлі /etc/make.profile/make.defaults. Не рекомендується його редагувати, оскільки зміна профілю перемінить і настроювання.

Auto

Ці опції визначені в профілі Portage use.defaults (/etc/make.profile/use.defaults). Кожна стоку у файлі складається з ключового слова USE і імені відповідного пакета. Якщо пакет, перерахований напроти ключового слова USE, у даний час установлена, тоді опція USE розглядається припустимої )тобто включеної). Таким чином, наприклад, якщо Ви установили x11-base/xfree і не відключали відповідну опцію USE, тоді опція X допускається глобально, при тім, що пакет установлений. Не рекомендується редагувати цей файл оскільки зміна профілю перемінить і настроювання.

Conf

Якщо конфігураційна опція USE визначена в /etc/make.conf, те в такому випадку вона включена. Якщо її там ні, то буде перевірений /etc/make.globals. Відкривши цей файл можна побачити щось начебто:

Лістинг 2.1

USE="slang readline gpm berkdb gdbm tcpd pam libwww ssl gb tk
lm_sensors lvm ldap tex bonobo sdl gtk xfs evo pda ldap
mmx mitshm perl python guile ruby postgres dvd 3dnow tcl
lcms gif sdl vorbis ogg oss libg++ directfb decss snmp
gnome X opengl mozilla pdflib gpg -nls gd xface jpilot
-kde -qt -esd -motif -alsa oggvorbis"

Параметри настроювання USE включені, якщо виведене проста назва опції. Параметри настроювання USE будуть виключені, якщо помістити символ - перед назвою опції. Наприклад, gnome включає підтримку GNOME, а -motif виключає підтримку motif.

Файл /etc/make.conf - саме місце, що рекомендується, для включення і відключення опцій USE, якщо ви їх не визначили в попередніх локаціях. Система Portage автоматично не перезаписує цей файл.

Env

Значення USE може бути задане вручну, використовуючи перемінні оточення командної оболонки.

Лістинг 2.2

export USE="-gnome"
emerge net-im/gaim

Це дозволяє використовувати деякий набір опцій USE для установки одного чи більш пакетів. У такому випадку USE буде активна доти, поки emerge запускається в тім же самому сеансі оболонці.

Примітка: Подібний запис опції USE у Portage під час установки пакета недовговічна. Якщо пакет буде повторно встановлений чи обновлений у майбутньому, то опції USE, зазначені, подібним чином при першої зборки, не будуть прийняті в увагу.

2.4. Опції компілятора

Опції компілятора, використовувані Portage при зборці пакета, можуть бути зазначені в /etc/make.conf шляхом редагування CHOST, CFLAGS, і CXXFLAGS. Рядок CHOST указує платформу, а настроювання CFLAGS і CXXFLAGS використовуються для вказівки прапорів C і C++ відповідно.

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

Користувачі з багатопроцесорними системами виграють від використання опції MAKEOPTS у /etc/make.globals, що, передаючи make, під час компіляції включає кілька копій gcc.

2.5. Директорії

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

PORTDIR - Місце розташування дерева Portage

DISTDIR - Локальний архів завантажених файлів

PKGDIR - Локальних архів для самостійно створених tbz2 пакетів

RPMDIR - Локальний архів для самостійно створених RPM пакетів

CURRENTFILE - ???

PORTAGE_TMPDIR - Тимчасова директорія використовувана при компіляції пакета.

BUILD_PREFIX - Родинно PORTAGE_TMPDIR

PKG_TMPDIR - Родинно PKGDIR

2.6. Захист конфігураційних файлів

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

Захищені директорії можуть бути зазначені в рядку CONFIG_PROTECT файлів /make.conf чи /etc/make.globals. Не захищені файл у піддиректорії, вкладеної в захищену директорію, можна визначити в рядку CONFIG_PROTECT_MASK.

Наступне - просто приклад, його не треба копіювати.

Лістинг 2.3

CONFIG_PROTECT="/etc /usr/share/config /usr/kde/2/share/config"
CONFIG_PROTECT_MASK="/etc/gconf /etc/init.d /etc/pam.d"

Користувачі можуть запросити більш докладну інформацію щодо роботи захисту конфігураційних файлів командою:

Лістинг 2.4

emerge --help config

2.7. Додаткові особливості

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

Список подібних ОСОБЛИВОСТЕЙ можна прописати в /etc/make.conf чи /etc/make.globals. От їхній список:

digest : Автоматично створює digest файл для нових ebuild скриптів.

cvs : Автоматичний передавати нові digest файли по cvs.

sandbox : Включення "sandbox" для обмеження доступу emerge каталогом PORTAGE_TMPDIR.

noclean : Portage ніколи не чиститься автоматично.

noauto : Автоматично не виконувати попередні кроки ebuild.

2.8. Настроювання SYNC у Portage

Portage дозволяє обновляти своє дерево портів через rsync. Якщо ви віддаєте перевагу іншому шляху відновлення дерева Portage, тоді пропишіть його в рядку SYNC файлу /etc/make.conf.

RSYNC

Один з найпоширеніших способів відновлення дерева портів - це використання rsync. От так він прописується у файл /etc/make.conf:

Лістинг 2.5

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

Примітка: Метод rsync при відновленні дерева увесь час видаляє зміни, зроблені вами в локальному дере Portage. Для того, щоб цього уникнути, використовуйте PORTDIR_OVERLAY="/директорія/де/лежать/ваші/ebuild-скрипты".

Гілка CVS для розроблювачів

Розроблювачі, що мають повний доступ до CVS репозитарію, крім одержання локального дерева, шляхом emerge sync, можуть звертатися до CVS через RSH чи SSH.

Просто перевірте CVS репозитарій, використовуючи ваш обліковий запис, потім перейдіть у /usr/portage і виконаєте опцію SYNC:

Лістинг 2.6

SYNC="cvs://youraccount@cvs.gentoo.org:/home/cvsroot"

2.9. Дзеркала

Gentoo створює локальне дзеркало всіх архівних файлів, завантажених за допомогою ebuild-скриптів, у дереві Portage. Іноді вихідні коди в архівах і т.д., зберігаються на повільних серверах, що часто бувають перевантажені. Також розроблювачі видаляють старі версії програмного забезпечення з ftp, якщо з'являються більш нові версії. Для полегшення життя користувачам дистрибутива Gentoo (і зменшення навантаження) ми створюємо дзеркала нашого репозитарія. Набагато швидше і надійніше завантажувати архіви з вихідними кодами з різних дзеркал, що при цьому можуть бути набагато ближче географічно.

Щораз, коли ви намагаєтеся установити пакет, Portage спочатку перевірить наше дзеркало на наявність необхідного архіву. Якщо дзеркало не має необхідних файлів, тоді Portage пробує завантажувати їх з HTTP ЧИ FTP сервера, зазначеного в ebuild файлі.

Дзеркало Portage може бути визначене в рядку GENTOO_MIRRORS файлу /etc/make.conf. Значення за замовчуванням:

Лістинг 2.7

GENTOO_MIRRORS="<http://www.ibiblio.org/gentoo>"

Для пошуку найкращого дзеркала відвідаєте сайт Gentoo чи запитаєте на дружньому листі розсилання.

2.10. Завантажник файлів

Програма, використовувана Portage для завантаження файлів, може бути зазначена в настроюваннях FETCHCOMMAND і RESUMECOMMAND. Кілька прикладів цих рядків можна знайти в /etc/make.conf і /etc/make.globals. За замовчуванням Portage використовує wget, як самий придатний завантажник для більшості користувачів.

Примітка: Завантажник у Portage одержує інформацію про HTTP і FTP проксі, використовуючи перемінні середовища оболонки, HTTP_PROXY і FTP_PROXY.

2.11. Proxies

Portage може бути набудована на завантаження фалів через HTTP і FTP проксі. Дані про проксі можуть бути зазначені в рядках HTTP_PROXY і FTP_PROXY файлів /etc/make.conf чи /etc/make.globals. Якщо HTTP і FTP обслуговуються тим самим проксі, використовуйте опцію PROXY.

От приклад:

Лістинг 2.8

HTTP_PROXY="http://192.168.1.1:8080"
FTP_PROXY="http://192.168.1.1:8080"

чи

PROXY="http://192.168.1.1:8080"

Також у Portage на HTTP проксі може бути набудований RSYNC. Для цього потрібно відредагувати рядок RSYNC_PROXY файлу /etc/make.conf чи просто задати відповідну перемінну середовища оболонки.

Наприклад:

Лістинг 2.9

RSYNC_PROXY="192.168.1.1:8080"

Примітка: Якщо від зовнішнього світу вас відокремлює надійна система мережного захисту і ви не можете використовувати HTTP проксі, ви зможете обновити версію свого дерева системи роrtаgе, використовуючи архів репозитарія. Сам архів доступний тут: http://www.ibiblio.org/gentoo/snapshots/.

2.12. Різні опції

Нижче випливає список опцій, що теж можуть бути використані користувачами:

NOCOLOR : Відключає кольоровий висновок програми утиліти emerge.

CLEAN_DELAY : Проміжок часу, у секундах, за який користувач може безпечно зупинити процес видалення пакета.

3. Пакетний менеджер

3.1. Відновлення дерева Portage

Дерево Portage розміщається в /usr/portage і містить величезну бібліотеку інструкцій для установки (так званих скриптів ebuild) різних пакетів. Воно також містить profile і package.mask - інформацію, життєво необхідну для відновлення вашої системи. Дуже важливо підтримувати дерево в належному виді, постійно обновляючи його. Для відновлення дерева Portage використовуйте наступну команду:

Лістинг 3.1

emerge rsync

Цей спосіб використання emerge для відновлення пакетів змінює локальне дерево системи Portage. Для більшої інформації дивитеся розділ SYNC настроювання в Portage у главі Настроювання Portage.

3.2. Установка пакетів

Процес компіляції й установки пакета в Portage іменується приєднанням (merge). Portage компілює пакети і тимчасово встановлює їх у каталог "образа" (звичайно ${PORTAGE_TMPDIR}/portage/${PF}/image) де робить запис файлів, що будуть установлені. Після чого ці файли і переносяться з "образа" на реальну файлову систему.

Команда emerge - це зовнішній інтерфейс системи Portage. Саме через цю команду, шляхом її запуску з різними ключами здійсняться установка і видалення пакетів.

Для установки свіжої, незамаскованої, версії якого-небудь пакета просто вкажіть його назву, наприклад так:

Лістинг 3.2

emerge galeon

Команда скомпілює й встановить будь-які необхідні залежності (приймаючи в увагу параметри настроювань USE), а також скомпілює й установить нову, незамасковану версію galeon. Galeon також може бути згадають повним ім'ям з використанням назви категорії:net-www/galeon.

Команда emerge також приймає посилання на самі ebuild-файли. Це дозволяє користувачам установлювати більш старі чи пакети пакети третіх облич. Простий приклад:

Лістинг 3.3

emerge /usr/portage/net-www/galeon/galeon-1.2.0-r3.ebuild

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

Лістинг 3.4

root@kodiak blocke # emerge --pretend kdevelop 
These are the packages that I would merge, in order.
Calculating dependencies ...done!
[ebuild N ] kde-base/kdelibs-2.2.2-r4 to /
[ebuild N ] dev-util/kdbg-1.2.2 to /
[ebuild U ] app-text/psutils-1.17 to /
[ebuild U ] app-text/a2ps-4.13b-r3 to /
[ebuild U ] app-text/jadetex-2.20 to /
[ebuild N ] app-text/sgmltools-lite-3.0.3-r2 to /
[ebuild N ] kde-base/kdoc-2.2.2-r1 to /
[ebuild N ] net-www/htdig-3.1.5-r2 to /
[ebuild N ] app-text/enscript-1.6.3-r1 to /
[ebuild N ] kde-base/kdebase-2.2.2-r2 to /
[ebuild N ] app-doc/qt-docs-2.3.1 to /
[ebuild N ] dev-util/kdevelop-2.0.2 to /

У вищезгаданій роздруківці пакети, відзначені N - це ті, що ще не були встановлені і будуть встановлені в плині даного "дії". Буква U же свідчить про те, що більш стара версія цього пакети була встановлена і буде обновлена до нової.

Інші аргументи командного рядка:

-іfetchonly : Просто завантажить пакет і всі необхідні залежності для компіляції й установки.

-іemptytree : Дана опція змусить Portage прикинеться, що жодна з залежностей чи пакета пакетів не встановлена. Це корисно використовувати з -іpretend, що відображає закінчене дерево залежностей для будь-якого обраного пакета. Усі залежності, за винятком glibc, будуть відображені.

-іnodeps : Portage установить тільки зазначені пакети, ігноруючи їхньої залежності. Якщо у вас не установлені відповідні залежності, компіляція може потерпіти крах.

-іonlydeps : Установить тільки залежності для зазначеного пакета. Сам пакет не буде встановлений.

-іnoreplace : Пропустить установку зазначених пакетів, якщо вони уже встановлені.

-іusepkg : Замість компіляції зазначених пакетів Portage спробує використовувати бінарні tbz2 пакети з зазначеного місця розташування. Місце розташування можна вказати перемінного середовища оболонки PKGDIR.

-іdebug : Включає висновок повідомлень налагодження, що корисно для розроблювачів, що намагаються простежити помилки в bash синтаксисі ebuild-файлів.

-іautoclean : Змушує emerge видаляти визначені пакетні тимчасові каталоги перед компіляцією нової програми. Portage робить це за замовчуванням, так що опція корисна тільки для розроблювачів, що змінили настроювання за замовчуванням.

-іverbose : Дозволяє запустити emerge в інформаційному режимі. У дійсні час відображаються тільки помилки GNU info, що можуть безпечно ігноруватися користувачами.

3.3. Видалення пакетів

Процес "видалення" знищить з файлової системи всі зв'язані файли встановленого пакета. Програмне забезпечення пакета буде неможливо використовувати, поки він заново не буде встановлений.

Назва пакета, що видаляється, випливає після аргументу unmerge команди emerge. Наступний приклад видалить усі установлені версії пакета ltrace:

Лістинг 3.5

emerge unmerge ltrace

чи

emerge unmerge dev-util/ltrace

Portage також дозволяє указати визначені версії пакетів для видалення. Список визначень наступний, = (точна версія), < (більш старша версія), > (більш нова версія), <= (більш старша, або поточна), і >= (більш нова, або поточна). Наступний приклад видалить програму ltrace, версії 0.3.15 і старше:

Лістинг 3.6

emerge unmerge \<=dev-utils/ltrace-0.3.15

При вказівці пакета важливо заекранувати символи > і <, так, щоб ваша оболонка їх не інтерпретувала. Також потрібно вказати категорію пакета, як це показано в прикладі. За іншими прикладами звертайтеся до emerge -іhelp.

Увага: Видалення пакетів небезпечно. Якщо ви видалите який-небудь важливий пакет ваша система, скоріше усього, перестане функціонувати, а видалення бібліотек може невдало вплинути на роботу програмного забезпечення. Portage не попередить вас якщо ви видалите системний чи пакет яку-небудь залежність для інших пакетів.

Якщо пакет, що видаляється, установлений, emerge покаже яка саме його версія підлягає видаленню і скільки часу до цього залишилося. У плині даного періоду користувач може скасувати видалення натиснувши комбінацію клавіш Control-C.

Як тільки почнеться процес видалення ви побачите довгий список імен файлів приналежних вилученому пакету. У деяких їхніх цих рядків ліворуч від імені файлу доданий прапорець. Прапорці !mtime, !empty і cfgpro визначають причини по який дані файли не були фізично вилучені при видаленні пакета. Файли зі списку не мають прапорців, успішно вилучені з файлової системи.

Прапорець !mtime означає, що файл був змінений після установки зазначеного пакета. Тобто, хтось редагував цей файл після того, як пакет був установлений чи який-небудь інший пакет пізніше переписав цей файл. Це дозволяє обновляти пакети до більш нові версії не боячись, що видалення старих знищить життєво важливі файли.

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

Увага: Файли належать останньому встановленому пакету. Усі залежить від порядку інсталяції і не залежить від номера чи версії номера ревізії встановлених пакетів. Видалення пакета встановленого останнім і утримуючого деякий файл, видалить і сам файл, навіть якщо встановлені пакети більш старші версії того ж самого програмного забезпечення (думаючи, що користувач вручну не змінював файл).

3.4. Системне відновлення

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

Для запуску системного відновлення, укажіть:

Лістинг 3.7

 emerge --update system

Portage скомпілює й установить відновлення в залежності від того які версії пакетів у вас уже встановлені, а так само від поточної конфігурації Portage. Користувачі можуть використовувати аргумент -іpretend у прикладі вище для одержання списку пакетів, що будуть встановлені або обновлені даною командою.

Примітка: Ви повинно бути звернули увагу, що один з перших кроків це запуск emerge system для установки базових (чи "основних") пакетів. emerge -іupdate system же обновить основні пакети до версій, що рекомендуються.

3.5. Глобальне відновлення

Portage також однією командою дозволяє обновити усі встановлені пакети. Система портів досить розвита для того щоб врахувати ступінь несумісності версій різних пакетів, і зробити відновлення програмного забезпечення.

При глобальному відновленні Portage перевіряє package.mask на наявність блокованих пакетів, залежностей (включаючи діапазон версій) а також глобальний профіль на пакети нужденні у відновленні. Пакет обновиться тільки при наявності нової версії, запису в глобальному чи профілі про запис залежності усі в тім глобальному профілі. До того ж чи пакет його визначена версія не повинні бути блоковані в конфігураційному файлі package.mask.

При розгляді пакетів для відновлення Portage намагається обновити до самої останньої доступної версії всі пакети зазначені в глобальному конфігураційному файлі. Portage також розгляне залежності кожного пакета відзначеного в глобальній конфігурації і спробує обновити їх до нові версії, якщо, звичайно, ці версії доступні і не блоковані в package.mask. І звичайно будуть розглянута СЛОТИ мова про які йшла в попередній главі.

Користувачі знайомі з іншими дистрибутивами і пакетними менеджерами крім Portage, можуть бути здивовані тим, чому Portage просто не обновляє пакети, ґрунтуючись винятково на номерах версій (як це було колись у Gentoo 1.0).Більшість з пакетів, включених у репозитарій Gentoo мають багато доступних версій. Стара чи більш нова версія пакета може бути несумісна з програмним забезпеченням з нею працюючі. Наосліп відновлення бібліотек і інструментальних засобів без обліку потреб інших пакетів може швидко привести до серйозних проблем. Portage намагається уникнути цього і розглядає залежності всіх пакетів ґрунтуючись на індивідуальних ebuild скриптах.

Основа глобального відновлення Portage - це конфігураційний файл world. У відмінності від системного конфігураційного файлу який редагується тільки розроблювачами і як правило ніколи не зачіпається звичайними користувачами, глобальний конфігураційний файл генерується через якийсь час, завдяки установкам програмного забезпечення виробленим користувачем. Глобальний конфігураційний файл дуже схожий на "список обраного". Усі пакети встановлені користувачем вручну за допомогою використання програми emerge записуються у файл world, розташованому /var/cache/edb/world. Portage припускає, що раз ви установили який-небудь паку,т те вам так само необхідно його обновляти.

Глобальний файл world, що складається з категорії й імені файлу в один рядок, являє собою наступне:

Лістинг 3.8

net-im/gaim
net-www/skipstone
net-www/galeon
app-editors/vim
app-text/ispell
net-mail/evolution
dev-util/ltrace
sys-apps/xfsprogs
=net-www/mozilla-0.9.8-r3
sys-apps/attr
sys-apps/dmapi
sys-kernel/linux-sources
sys-apps/acl
app-office/gnucash
app-cdr/xcdroast

Майже всі рядки в прикладі були додані автоматично при установці пакетів користувачем. Рядки ці будуть обновлені при наявності більш нових версій.

Примітка: Щоб заощадити час і бути упевненим у тім, що потрібні вам пакети завжди будуть обновлятися, відредагуйте world файл вручну додавши дані про пакети, що вам будуть потрібні. Користувачам які поновлюють стару версією Portage можливо буде потрібно дописати цей файл. У недавно встановленого Gentoo з Portage уже мається глобальний конфігураційний файл створений у процесі інсталяції.

Ви повинно бути звернули увагу на рядок пакета mozilla (=net-www/mozilla-0.9.8-r3). До назви файлу був доданий вручну знак "=", що визначає точну версію. Списки визначень (які вже були розглянуті в главі Видалення пакетів даного керівництва) можуть використовуватися, щоб змусити Portage розглядати тільки задані діапазони версій при відновленні пакетів. У даному рядку знак "=" поставлений для того, щоб Portage розглядав mozilla-0.9.8-r3 єдиною доступною версією і ніколи не торкався її при глобальному відновленні пакетів.

Глобальне відновлення виробляється командою:

Лістинг 3.9

emerge --update world

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

Увага: Portage не буде переписувати файли в директоріях позначених захистом конфігураційних файлів. Ви повинні будите вручну виправити розходження між вашими поточними файлами конфігурації і нових версій спеціально збереженими для вас Portage. Якщо ви не обновите ваші робочі конфігураціонні файли, то не виключене, що деяке встановлене програмне забезпечення може перестати функціонувати. Для більшої інформації дивитеся Защита конфігураційних файлів у главі Настроювання Portage чи скористайтеся командою emerge -іhelp config

Для того, щоб побачити список усього, що було б обновлене чи встановлене в плині глобального відновлення, використовуйте аргумент -іpretend, як було згадано в попередніх розділах цієї глави.

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

Зацікавлений побічний ефект глобального відновлення може бути використаний користувачами для перекомпіляції всього програмного забезпечення встановленого в системі. Тому що глобальне відновлення торкається всіх пакетів і їхніх залежностей згадані у файлі world, використання аргументу -іemptytree дозволить примусово перекомпілювати пакети і їхні залежності крім glibc. Це може бути корисно для користувачів бажаючих змінити опції чи компілятора настроювання USE на все програмне забезпечення яке вони використовують без перекомпіляції кожного пакета вручну. Просто запишіть у файл world усі звичайно використовуване вами програмне забезпечення і запустите:

Лістинг 3.10

emerge --update world --emptytree

До цієї команди ви можете додати аргумент -іpretend, щоб одержати список пакетів, що були б перекомпільовані в результаті її виконання.

3.6. Чищення системи

Portage дозволяє установити кілька версій пакетів одна поруч з іншої. Чим успішно можна скористатися для ряду програмного забезпечення з дерева Portage (наприклад для зворотної сумісності, оскільки старші версії додатків можуть бути несумісні з більш новими версіями інших пакетів).

У більшості випадків замість старої версії буде використовуватися більш нова й усе, що залишиться потрібним це документація, так можливо пари незначних файлів не мають впливи на систему. Згодом накопичуючи, цей "вантаж" буде займати усе більше дискового простору.

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

Лістинг 3.11

emerge clean

Після чого emerge покаже список чи версій ревізій, що будуть вилучений список версій, що залишаться і дасть користувачу час для скасування процесу видалення натисканням Control-C. У нормальних умовах під час видалення на екран буде виводитися список файлів, що були знищені, або за якимись причинами збережені.

За замовчуванням Portage розглядає опцію чищення на усіх установлених пакетах (world. Ви можете звузити область чищення, використовую з опціями world, system, указуючи назву пакетів і використовуючи діапазони версій які були розглянуті в розділі про видалення пакетів у даній главі.

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

3.7. Знищення пакетів

Portage також має опцію prune. Знищення - це більш небезпечна форма чищення. Вона видаляє усі версії всіх пакетів, крім останньої встановленої. Вона так само не виконує багато хто з перевірок clean, у зв'язку з чим, у вашій системі можуть бути вилучені необхідні залежності. Користувачі цією опцією можуть легко порушити працездатність системи і тому використовувати її коштує тільки в деяких особливих випадках.

Опція prune схожа з попередньою опцією і використовується майже також:

Лістинг 3.12

emerge prune

3.8. Пошук по дереву Portage

Такі дерева, як Portage, що формує основу Gentoo Linux, найчастіше можуть бути дуже великими. Спеціально для цього в emerge є функція пошуку приймаюча як аргумент регулярне вираження у виді рядка в лапк. Регулярні вираження річ досить складна, тому якщо ви зацікавилися цією темою рекомендую знайти гарну книгу по ній.

Найбільш прості приклади не вимагають знання складання регулярних виражень. Наступна команда зробить пошук пакета утримуючого "gcc", як частина свого імені:

Лістинг 3.13

emerge search gcc

Для кожного зі значень пошуку буде показаний список з назви пакета останньої доступної версії, останній установленої, адреси домашньої сторінки й опису програмного забезпечення.

3.9. Одержання довідки

Для одержання більш докладної інформації з опцій і функцій emerge виконаєте команду:

Лістинг 3.14

emerge --help

3.10. Корисні утиліти

Для полегшення життя користувачам Gentoo, було створено кілька утиліт, що знаходяться в каталозі app-admin/gentoolkit дерева Portage.

etc-update : сценарій оболонки для відновлення /etc файлів (може бути небезпечно при неправильному використанні)

qpkg : утиліта для запитів до бази даних пакетів

epm : інша утиліта для запитів до бази даних пакетів, із синтаксисом RPM.