Підручник з Portage
Увага!!!
Сталося, що ми маємо дві різні версії цього підручника. Це результат того, що при створенні посилань в розділах підручники та ЯКЦЕ було вибрано різні назви посилань. Перш ніж правити, треба об'єднати ці версії!!!
Інша версія:
Підручник по Gentoo Portage: Коротенький опис системи Portage Gentoo Linux
Версія : 0.9.6 від 24 Грудня 2002 року
Опис : Цей підручник містить загальний огляд Portage, що детально описує процес конфігурації, установки і підтримки системи.
Над документом працювали:
- Author and Editor: Bruce A. Locke ( blocke на shivan.org )
- Перекладач: Іван Зенков ( zenkov на gentoo.org )
- Редактор: George Shapovalov ( george на gentoo.org )
- Переклад на українську: Сергій Котенко (k.sergey на ukrpost.net, sergey на kdtu.kr.ua)
- Перегляд: Володимир Лісівка ( lvm на mystery.lviv.net )
Це мій перший переклад взагалі, так що прошу вибачити за неточності та різні огріхи. Якщо хтось щось таке помітить, або захоче щось додати, то пишіть мені (або виправте самі :) і розмістіть, де хочете )
Portage: Короткий огляд
Короткий огляд
Portage - дуже потужна та нарощувана система керування пакетами. Її гнучкість, простий механізм збирання та формування базової системи дозволяють їй гордо носити ім'я двигуна дистрибутиву. Весь дистрибутив Gentoo Linux формується навколо системи Portage.
Gentoo Linux - це дистрибутив, що складається з Portage і понад 7000 скриптів збирання програмного забезпечення, які називаються ebuild's. Ці скрипти повідомляють Portage, як скомпілювати й установити програмний пакет. За допомогою профілів і програми emerge, користувачі та розробники можуть використовувати Portage для установки та поновлення пакетів, як тих, що складають основу операційної системи, так і різноманітних додатків (applications).
Gentoo Linux - система, "що компілюється на льоту". Процес установки в Gentoo Linux використовує мінімальне базове "ядро" системи, компілятор і спеціальне середовище компонування, за допомогою яких Portage завантажує вихідні файли з Мережі і на льоту створює іншу частину базового "ядра" системи, з будь-якими бажаними додатками. Хоча Portage і підтримує використання зібраних бінарних пакетів, використовуються вони, як правило, тільки розробниками, яким потрібно швидко відновити який-небудь необхідний пакет, чи користувачами, що компілюють програми на більш потужній машині для використання на слабшій.
За рахунок цього Portage і має високі показники конфігурованості системи, що встановлює пакети. Дуже небагато інсталяцій дистрибутиву Gentoo Linux проходять абсолютно однаково. По суті, коли користувач установлює Gentoo Linux, система Portage збудовує і компілює його, виходячи з параметрів, зазначених у конфігураційному файлі й усередині самого ebuild-скрипта.
На перший погляд ідея Portage може показатися дуже поідбною до традиційної системи портів BSD. Обидві системи компілюють пакети з джерельних текстів, дозволяють користувачам безпечно встановлювати і видаляти програмне забезпечення а також автоматично обробляють залежності. Багато ідей у системі Portage запозичені із системи BSD-портів, але Portage - це не ще одна їх "ксерокопія".
Система Portage - це злиття мови Python зі сценаріями ebuild, що базуються на скриптах на Bash. Замість простого використання складальних файлів і команди 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, як збирати і встановлювати пакети з параметрами профілю.
Настроювання Portage
Уведення
Дана глава охоплює різні аспекти настроювання Portage, важливі як для користувачів, так і для розроблювачів. Portage - дуже гнучка система і вам необхідно знати принципи її конфігурування , щоб установити і налаштувати під свої потреби.
Будь ласка, зверніть увагу, що слово "користувачі" у даному документі означає "люди з адміністративними правами", тобто з можливістю використовувати Portage і змінювати конфігурацію системи. Ви повинні мати root-доступ для зміни конфігурації Portage, а також установки і видалення пакетів.
Конфігураційні файли 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.
Настроювання 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, зазначені, подібним чином при першої зборки, не будуть прийняті в увагу.
Опції компілятора
Опції компілятора, використовувані Portage при зборці пакета, можуть бути зазначені в /etc/make.conf шляхом редагування CHOST, CFLAGS, і CXXFLAGS. Рядок CHOST указує платформу, а настроювання CFLAGS і CXXFLAGS використовуються для вказівки прапорів C і C++ відповідно.
За замовчуванням представлено кілька прокоментованих настроювань. Вони вважаються перевіреними і надійними. Зміна їх може викликати помилки як у компіляції, так і в роботі відкомпільованого програмного забезпечення. Будь ласка, будьте уважні, якщо ви вирішите змінити стандартні настроювання - це може закінчитися для вас абсолютною непридатністю системи до роботи.
Користувачі з багатопроцесорними системами виграють від використання опції MAKEOPTS у /etc/make.globals, що, передаючи make, під час компіляції включає кілька копій gcc.
Директорії
Portage дозволяє вказати директорії для самостійно зібраних пакетів і для відновлення різних вилучених програм. Для більшості користувачів це, скоріше усього, не знадобиться. Правда, необхідні опції усе-таки виглядають так:
PORTDIR - Місце розташування дерева Portage
DISTDIR - Локальний архів завантажених файлів
PKGDIR - Локальних архів для самостійно створених tbz2 пакетів
RPMDIR - Локальний архів для самостійно створених RPM пакетів
CURRENTFILE - ???
PORTAGE_TMPDIR - Тимчасова директорія використовувана при компіляції пакета.
BUILD_PREFIX - Родинно PORTAGE_TMPDIR
PKG_TMPDIR - Родинно PKGDIR
Захист конфігураційних файлів
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
Додаткові особливості
Portage також пропонує для розроблювачів кілька спеціалізованих опцій, керуючих поводженням і чищенням Portage безпосередньо на стадії зборки пакета. Ці опції, скоріше усього, будуть цікаві розроблювачам і можуть викликати проблеми в звичайних користувачів.
Список подібних ОСОБЛИВОСТЕЙ можна прописати в /etc/make.conf чи /etc/make.globals. От їхній список:
digest : Автоматично створює digest файл для нових ebuild скриптів.
cvs : Автоматичний передавати нові digest файли по cvs.
sandbox : Включення "sandbox" для обмеження доступу emerge каталогом PORTAGE_TMPDIR.
noclean : Portage ніколи не чиститься автоматично.
noauto : Автоматично не виконувати попередні кроки ebuild.
Настроювання 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"
Дзеркала
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 чи запитаєте на дружньому листі розсилання.
Завантажник файлів
Програма, використовувана Portage для завантаження файлів, може бути зазначена в настроюваннях FETCHCOMMAND і RESUMECOMMAND. Кілька прикладів цих рядків можна знайти в /etc/make.conf і /etc/make.globals. За замовчуванням Portage використовує wget, як самий придатний завантажник для більшості користувачів.
Примітка: Завантажник у Portage одержує інформацію про HTTP і FTP проксі, використовуючи перемінні середовища оболонки, HTTP_PROXY і FTP_PROXY.
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/.
Різні опції
Нижче випливає список опцій, що теж можуть бути використані користувачами:
NOCOLOR : Відключає кольоровий висновок програми утиліти emerge.
CLEAN_DELAY : Проміжок часу, у секундах, за який користувач може безпечно зупинити процес видалення пакета.
Пакетний менеджер
Відновлення дерева Portage
Дерево Portage розміщається в /usr/portage і містить величезну бібліотеку інструкцій для установки (так званих скриптів ebuild) різних пакетів. Воно також містить profile і package.mask - інформацію, життєво необхідну для відновлення вашої системи. Дуже важливо підтримувати дерево в належному виді, постійно обновляючи його. Для відновлення дерева Portage використовуйте наступну команду:
Лістинг 3.1
emerge rsync
Цей спосіб використання emerge для відновлення пакетів змінює локальне дерево системи Portage. Для більшої інформації дивитеся розділ SYNC настроювання в Portage у главі Настроювання Portage.
Установка пакетів
Процес компіляції й установки пакета в 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 не дозволяє більш новому встановлюваному пакету, що вимагає свій конфігураційний файл, замінити вже існуючий.
Увага: Файли належать останньому встановленому пакету. Усі залежить від порядку інсталяції і не залежить від номера чи версії номера ревізії встановлених пакетів. Видалення пакета встановленого останнім і утримуючого деякий файл, видалить і сам файл, навіть якщо встановлені пакети більш старші версії того ж самого програмного забезпечення (думаючи, що користувач вручну не змінював файл).
Системне оновлення
Portage дозволяє обновляти встановлені пакети всього однією командою. Важлива особливість для успішного функціонування системи, це процес оновлення "основних" системних пакетів до версії рекомендується розроблювачами дистрибутива Gentoo. Системне оновлення не торкається рядових пакетів, воно працює тільки з тими пакетами, що визначені в конфігураційному файлі Portage як необхідні для функціонування і підтримки системи в робочому виді.
Для запуску системного оновлення, укажіть:
Лістинг 3.7
emerge --update system
Portage скомпілює й установить оновлення в залежності від того які версії пакетів у вас уже встановлені, а так само від поточної конфігурації Portage. Користувачі можуть використовувати аргумент -іpretend у прикладі вище для одержання списку пакетів, що будуть встановлені або оновлені даною командою.
Примітка: Ви повинні були звернули увагу, що один з перших кроків - це запуск emerge system для установки базових (чи "основних") пакетів. emerge -іupdate system же оновить основні пакети до версій, що рекомендуються.
Глобальне оновлення
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, щоб одержати список пакетів, що були б перекомпільовані в результаті її виконання.
Чищення системи
Portage дозволяє установити кілька версій пакетів одна поруч з іншої. Чим успішно можна скористатися для ряду програмного забезпечення з дерева Portage (наприклад для зворотної сумісності, оскільки старші версії додатків можуть бути несумісні з більш новими версіями інших пакетів).
У більшості випадків замість старої версії буде використовуватися більш нова й усе, що залишиться потрібним це документація, так можливо пари незначних файлів не мають впливи на систему. Згодом накопичуючи, цей "вантаж" буде займати усе більше дискового простору.
Щоб бороти з цим, Portage підтримує спосіб видалення всіх старих версій з користувальницької системи. Це можливо завдяки опції clean і використовується наступним чином:
Лістинг 3.11
emerge clean
Після чого emerge покаже список чи версій ревізій, що будуть вилучений список версій, що залишаться і дасть користувачу час для скасування процесу видалення натисканням Control-C. У нормальних умовах під час видалення на екран буде виводитися список файлів, що були знищені, або за якимись причинами збережені.
За замовчуванням Portage розглядає опцію чищення на усіх установлених пакетах (world. Ви можете звузити область чищення, використовую з опціями world, system, указуючи назву пакетів і використовуючи діапазони версій які були розглянуті в розділі про видалення пакетів у даній главі.
Перед видаленням визначеної версій пакета, Portage ретельно перевіряє різні конфігураційні файли, залежності встановлених пакетів, і СЛОТИ. Одержавши потрібні дані Portage безпечно видалить стару версію пакета не не порушивши систему і зберігши її функціональність.
Знищення пакетів
Portage також має опцію prune. Знищення - це більш небезпечна форма чищення. Вона видаляє усі версії всіх пакетів, крім останньої встановленої. Вона так само не виконує багато хто з перевірок clean, у зв'язку з чим, у вашій системі можуть бути вилучені необхідні залежності. Користувачі цією опцією можуть легко порушити працездатність системи і тому використовувати її коштує тільки в деяких особливих випадках.
Опція prune схожа з попередньою опцією і використовується майже також:
Лістинг 3.12
emerge prune
Пошук у дереві Portage
Такі дерева, як Portage, що формує основу Gentoo Linux, найчастіше можуть бути дуже великими. Спеціально для цього в emerge є функція пошуку за взірцем, що є формальним виразом у виді рядка в лапках. Формальні вирази - річ досить складна, тому якщо ви зацікавилися цією темою, рекомендую знайти гарну книгу по ній.
Найпростіші випадки не вимагають знання формальних виразів. Наступна команда зробить пошук пакета, що містить "gcc" у своїй назві:
Лістинг 3.13
emerge search gcc
Для кожного зі значень пошуку буде показаний список з назви пакета останньої доступної версії, останній установленої, адреси домашньої сторінки й опису програмного забезпечення.
Одержання довідки
Для одержання більш докладної інформації з опцій і функцій emerge виконаєте команду:
Лістинг 3.14
emerge --help
Корисні утиліти
Для полегшення життя користувачам Gentoo, було створено кілька утиліт, що знаходяться в каталозі app-admin/gentoolkit дерева Portage.
etc-update : сценарій оболонки для відновлення /etc файлів (може бути небезпечно при неправильному використанні)
qpkg : утиліта для запитів до бази даних пакетів
epm : інша утиліта для запитів до бази даних пакетів, із синтаксисом RPM.