Вступ

Цей розділ охоплює різні аспекти налаштування ?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 автоматично не перезаписує цей файл.

Для постійного вказання опцій USE, для конкретного пакету, краще скористатись файлом etc/portage/package.use

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

Лістинг 2.2

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

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

Примітка: Подібний запис опції USE у Portage під час встановлення пакета недовговічний. Якщо пакет буде повторно встановлений чи обновлений у майбутньому, то опції USE, зазначені, подібним чином при першій збірці, не будуть прийняті до уваги. У цьому випадку краще їх описати у файлі корисувацького профілю etc/portage/package.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 файлів etc/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 : Проміжок часу, у секундах, за який користувач може безпечно зупинити процес видалення пакета.