Новости Магазин Библиотека LinuxBegin Gentoo.ru RedHat UNIX4all hurd.ru Форум  




UNIX4ALL
Оглавление
SYS-цикл
DISTRO-цикл
APPS-цикл
GENTOO-цикл
DIFF-цикл
PRESS-цикл
BSD-цикл
GAME-цикл
HARD-цикл
X-цикл


Авторы
Алексей Федорчук
Иван Зенков
Владимир Попов
Георгий Шаповалов (George Shapovalov)
Алексей Потанин
Юрий Борисов
Андрей Ракитин
Артем Носов
Алексей Козлов


Новости UNIX4all
Сабжы доступны для скачивания.Первый тут,а второй тут

Новый перевод документации Gentoo - Руководство по обновлению до версии 1.4.

В продаже появилась книжка под названием: FreeBSD, установка, настройка, использование Алексея Федорчука и Алексея Торна. Издательство БХВ-Петербург, 2003 г. 600 с чем-то страниц.



Почтовая рассылка


Заказ по телефону:(095) 158-47-13
E-mail:support@linuxshop.ru
Доставка:10:00 - 19:00 (Москва)
Выходные:СБ, ВС
[ Адрес офиса и план проезда ]



А чувак этот, если кто не знаить - Аристотель! о как!
UNIX4all
ПРОЕКТ АЛЕКСЕЯ ФЕДОРЧУКА и "ЛИНУКС ОНЛАЙН"

В рубрику
Articles


Портежи-2. Установка и настройка

Алексей Федорчук
alv@linux-online.ru

Содержание

Получение портежей

В прошлой заметке говорилось, что дерево портежей можно обнаружить в каталоге /usr/portage. Однако не факт, что оно появится там само собой - возможно, пользователю придется озаботиться этим самому. То есть - если дерево портежей не было установлено при инсталляции Gentoo (а в пре-релизе текущей, 1.4-й, версии, так оно и есть), следует его

  • скачать с сервера проекта Gentoo или его зеркал,
  • распаковать и развернуть архив,
  • настроить,
  • и время от времени обновлять.

О настройке системы портежей - чуть позже, а пока - о получении, установке и обновлении.

Архив дерева портежей (тарбалл вида portage-год_месяц_число.tar.bz2) имеет своим местопребыванием каталог snapshots на любом из Gentoo-серверов. И такой тарбалл там не один - обновление их происходит чуть ли не ежедневно, и обычно доступны три последние версии (а на некоторых зеркалах хранятся тарбаллы и за более длительный срок). Скачиваем один из тарбаллов (не последний ли по времени?) посредством, например, ftp-клиента wget из штатного комплекта Gentoo:

$ wget http://www.ibiblio.org/pub/Linux/distributions/gentoo/snapshots/portage-20021217.tar.bz2

Далее тарбалл разворачивается в каталоге /usr:

$ tar xjpvf portage-*.tar.bz2

в результате чего и получаем то самое дерево портежей, о котором говорилось в прошлой заметке.

Дерево портежей - живой и развивающийся организм. Как уже говорилось, новый снапшот появляется на сервере Gentoo чуть ли не ежедневно. Изменения в нем заключаются во включении поддержки а) новых пакетов (на текущий момент - более 1500), б) новых версий ранее портированных программ, в) новых реализаций прежних версий ранее портированных программ, и, наконец, г) просто в исправлении ошибок. Так что есть смысл время от времени дерево портежей обновлять - если уж не ежедневно, то по крайней мере по выходе свежих вариантов критически важного софта.

Для автоматического обновления дерева портежей в этой системе предусмотрен механизм Rsync, выполняющий сию процедуру одной командой:

$ emerge sync

Она скачивает последний по времени снапшот дерева и разворачивает архив в каталоге /usr/portage. Очевидно, что для этого предыдущий вариант дерева портежей должен быть уже установлен. Если использование Rsync почему-либо невозможно (так, судя по документации, этот механизм не работает из-за файрвола) - обновить дерево портежей можно вручную, тем же способом, как оно устанавливалось.

Несколько слов об исходниках

Как уже говорилось, в дереве портежей существует подкаталог distfiles, специально предназначенный для хранения исходных текстов портированных программ. Однако сразу же по установке древа мы его не тут не увидим. Откуда же он берется и каким образом он заполняется?

Каталог /usr/portage/distfiles возникает автоматически при установке первого же портежа. И столь же автоматически в нем появляется исходник устанавливаемого пакета и всех иных пакетов, связанных с ним отношениями зависимости и использования. При одном непременном условии - наличии подключения к Сети в момент установки портежа. Все это понятно из концепции портежей, но вызывает болезненный в постсоветских условиях вопрос - что делать, если подключения к Сети на целевой машине нет.

Подчеркну еще раз - для использования портежей достаточно иметь возможность физического выхода в Сеть вообще (не обязательно с данной машины). То есть можно скачать исходники где угодно, переместить их на любом носителе (CD-R/RW, Zip, съемный диск), а потом скопировать их в каталог /usr/portage/distfiles, созданный командой mkdir, вручную. С точки зрения системы портежей, это ничем не будет отличаться от автоматического получения нужных файлов с помощью соответствующих опций команд emerge или ebuild.

Откуда брать исходники? Да откуда угодно, хоть с мастер-сайтов разработчиков каждой требуемой программы. Но наиболее удобное место - каталог distfiles на серверах проекта Gentoo (или каталог gentoo-src, содержание их идентично). Здесь имеют место быть архивы всех версий каждой из портированных в Gentoo программ. И отсюда их можно скачать оптом и в розницу. Подчеркну - это именно копии авторских исходников, ничем не отличающиеся от тех, которые можно забрать с мастер-сайта разработчика (и практически всегда если не последние, то предпоследние их версии). Ибо все Gentoo-специфичные дополнения, призванные обеспечить корректную установку и работу портированной программы, оформляются в виде патчей.

В отличие от системы портов FreeBSD, Gentoo-специфичные патчи в портежах не входят в состав конкретного портежа - их следует искать в том же каталоге distfiles, что и оригинальные исходники. Как правило, попытка установки портежа без патчей вызовет сообщение об ошибке. Хотя отсутствие патча и не помешает собрать пакет вручную (с помощью стандартных ./configure, make, make install etc.), но при этом во многом теряется смысл всей системы.

Как определить, необходимо ли скачать патчи для установки конкретного пакета, и если да - то какие? Универсальный способ для этого будет описан в разделе о командах работы с портежами. Пока же напомню систему именования ebuild-файлов: имя_пакета-номер_версии-[номер_ревизии]. Очевидно, что имя пакета и номер его версии наследуются от именования его разработчиком. И ebuild-файл, номера ревизии не имеющий, скорее всего, дополнительных патчей не потребует (хотя из этого правила есть немало исключений). А вот номера ревизий - это уже дело рук разработчиков Gentoo. И различные ревизии одной и той же версии пакета отличаются друг от друга именно Gentoo-специфичными патчами - ведь сам исходник данной версии, как мы помним, абсолютно идентичен авторскому. То есть установка любого ebuild-файла, имеющего в составе имени компонент -r#, таких патчей потребует с вероятностью сто процентов.

Тем не менее, в крайнем случае можно прибегнуть и к ручной сборке требуемого пакета: такие самосборные пакеты будут существовать в системе на равных правах с установленными портежами. Более того, при определении системой портежей отношений зависимости и использования они будут благополучно опознаны. Особенность системы портежей в том, что для контроля зависимостей она не только (и даже не столько) проверяет базу данных установленных пакетов /var/db/pkg, сколько выполняет реальное прединсталляционное конфигурирование. То есть делает то же самое, что и скрипт ./configure при ручной сборке. И потому в Gentoo не придется сталкиваться с обычной для многих пакетных дистрибутивах ситуацией, когда самосборный пакет, от которого зависит вновь устанавливаемый, не опознается системой управления пакетами (типа rpm сотоварищи).

Я столь подробно остановился на проблеме получения исходников и их ручной сборки потому, что ее касается большинство вопросов, задаваемых мне в переписке (и всплывающих на Gentoo-форуме - пользуясь случаем, приношу извинения тем, кому на такие вопросы не ответил по техническим причинам). И действительно, вопросы эти - весьма актуальны в условиях, когда поголовная телефонизация страны (не говоря уж о о-Сетенении) выглядит столь же недостижимой, как коммунизм в 1980 году; или - как отдельная квартира для каждой семьи, не помню уж, к какой дате.

Так вот, поскольку от решения проблемы исходников зависит возможность применения дистрибутива Gentoo вообще, подчеркну еще раз со всей определенностью: для использования системы портежей необходимо и достаточно иметь машину с подключением к Сети в пределах физической досягаемости. Финансовой стороны вопроса касаться не буду - но желательно, чтобы за трафик при этом платил кто-нибудь другой, например, госбюджет (не из наших ли налогов он образуется?).

А уж на худой конец, как говаривала одна дама (к слову сказать - ученый-геохимик с мировым именем, это без иронии), у нас есть вареные яйца. То есть - исходники, прилагаемые к большинству хороших CD-изданий всамделишних пакетных дистрибутивов. Нужно лишь вытащить его из SRPM или из deb-пакета. Возможно, там не окажется последней версии нужной программы - не беда, в том-то и сила системы портежей, что она поддерживает серию сосуществующих реализаций. Быть может, не хватит какого-либо Gentoo-специфичного патча - но его можно выкачать и по модему (благо патчи такие обычно тянут на килобайты или первые их десятки). И нельзя исключить, что такой пакет что-то потеряет в функциональности - это сполна перекроется тем, что собран он будет с вашими настройками и под вашу конкретную машину. А уж то, что каждое приложение и каждая утилита в системе будет установлена осознанно и целенаправленно - не измеримо никакими деньгами.

Принципы настройки системы портежей

Однако я отвлекся. Пора переходить к настройке системы портежей - это первый шаг после развертывания их древа.

Настройка портежей под индивидуальные требования основана на концепции профильных файлов (profile, что часто транскрибируется просто как профайлы - последуем и мы этому примеру). Это - некий набор конфигурационных файлов, описывающих (с помощью соответствующих переменных окружения) условия сборки портированных программ, а именно:

  • пути для поиска компонентов системы портежей;
  • условия получения исходных текстов пакетов;
  • условия их прединсталляционного конфигурирования;
  • условия компиляции.

Значения переменных путей поиска указывают на каталоги, где по умолчанию размещаются а) сама система портежей (PORTDIR=/usr/portage), исходные тексты пакетов (DISTDIR=${PORTDIR}/distfiles), промежуточные продукты компиляции (PORTAGE_TMPDIR=/var/tmp) и так далее.

Переменные условий получения исходников включают в себя базовый URL сервера, адрес, используемый механизмом Rsync, ftp-клиент, вызываемый для получения исходников и для продолжения оборванного скачивания.

Переменные условий конфигурирования представлены одной единственной переменной - USE, довольно подробно описанной ранее.

Наконец, переменные условий компиляции - это указания на хост-машину и флаги оптимизации, о которых также говорилось отдельно.

Подробности о том, как задаются значения переменных в Gentoo (не только для системы портежей, но и вообще), можно прочитать в русском переводе Env.d HOWTO, доступном благодаря усилиям Ивана Зенкова.

Предусмотрено три уровня профайлов (в порядке возрастания приоритета):

  • /etc/make.globals, глобально определяющий переменные условий сборки;
  • /etc/make.profile/make.defaults, определяющий умолчальные значения переменных условий сборки;
  • /etc/make.conf, в который заносятся пользовательские переменные условий сборки.

Первые два файла генерируются автоматически, изменять их не рекомендуется. Да в этом и нет необходимости: любые изменения, сделанные в файле /etc/make.conf (а он именно для пользовательского редактирования и предназначен), перекроют глобальные и умолчальные значения переменных условий сборки.

Кроме этого, переменные условий сборки могут задаваться в командной строке (как переменные оболочки, в виде ПЕРЕМЕННАЯ="значение", так и как переменные окружения, в виде export ПЕРЕМЕННАЯ="значение". Заданные таким образом значения имеют высший приоритет, перекрывая не только глобальные и умолчальные значения, но и пользовательские настройки в файле /etc/make.conf.

Рассмотрим вкратце содержание профайлов системы портежей, начав с наиболее глобального (но и наименее приоритетного) - /etc/make.globals.

Во первой строке его (после комментариев, предупреждающих о нежелательности редактирования) задается порядок просмотра значений переменной USE:

USE_ORDER="env:conf:auto:defaults"

Значения этой переменной перечислены в порядке уменьшения приоритета. Значение env указывает, что наиболее приоритетными выступают значения USE, заданные как переменные (оболочки или окружения). То есть команда

$ USE="-gnome"

данная перед исполнением программы emerge или ebuild, отключит поддержку GNOME в собираемом в данный момент пакете (и только в нем), даже если таковая была включена в каком-либо из профильных файлов. А команда

$ export USE="-gnome"

сделает то же самое для всего текущего сеанса работы.

Значение conf предписывает, что в случае отсутствия явно определенных значений переменной USE, таковые берутся из строки USE="..." файла /etc/make.conf (подробности - в указанной выше заметке.

Далее легко догадаться, что если требуемых значений переменной USE не обнаружено ни в оболочке или окружении, ни в файле /etc/make.conf, в силу вступает значение auto. Auto-значения переменной USE перечислены в файле /etc/make.profile/use.default. Он содержит список ключевых слов (флагов) переменной USE, соответствующих отвечающим за них пакетам. И смысл его в том, что если такой пакет установлен в системе, обеспечиваемая им опция рассматривается как автоматически включенная, вне зависимости от того, перечислена ли она в строке USE файла /etc/make.profile/make.defaults. То есть если мы установили пакет gpm, поддержка службы консольной мыши станет доступной для всех приложений (для которых она предусмотрена разработчиком).

Ну а значение defaults именно из строки USE файла /etc/make.profile/make.defaults и берется.

Далее в файле /etc/make.globals указываются базовый URL проекта и адрес источника для синхронизации дерева портежей

GENTOO_MIRRORS="http://www.ibiblio.org/pub/Linux/distributions/gentoo"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"

и тип хост машины, например,

CHOST=i686-pc-linux-gnu

В следующих строках описываются пути поиска компонентов системы портежей - каталога для временных файлов, создаваемых при сборке пакетов

PORTAGE_TMPDIR=/var/tmp

корневого каталога дерева портежей

PORTDIR=/usr/portage

и его подкаталогов, предназначенных для хранения архивов исходников, автономных бинарных пакетов и rpm-пакетов (буде таковые образуются):

DISTDIR=${PORTDIR}/distfiles
PKGDIR=${PORTDIR}/packages
RPMDIR=${PORTDIR}/rpm

Следующие строки перечисляют каталоги, конфигурационные файлы в которых защищены от изменения при установке новых пакетов

CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config 
/usr/kde/2/share/config /usr/kde/3/share/config"

и файлы в защищенных каталогах, которые, напротив, должны изменяться в этой ситуации

CONFIG_PROTECT_MASK="/etc/gconf"

Здесь в текущей (1.4-rc1) версии вклинивается строка

MAKEOPTS="-j2"

отвечающая за поддержку мультипроцессорности.

В следующих строках описываются переменные условий получения исходников, то есть ftp-клиент, запускаемый по умолчанию для скачивания исходников (и продолжения оного) вместе с необходимыми опциями, включая каталог для размещения полученных файлов:

FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp ${URI} -P ${DISTDIR}"
RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp ${URI} -P ${DISTDIR}"

Затем - флаги оптимизации для компилятора:

CFLAGS="-O2 -mcpu=i686 -pipe"
CXXFLAGS=${CFLAGS}

и еще некоторые опции (типа очистки временного каталога по завершении сборки, и т.д.).

Повторю еще раз - если какие-то значения переменных в файле /etc/make.globals пользователя не устраивают, в редактировании его необходимости нет: требуемые настройки могут быть сделаны в файле /etc/make.conf. Так, в последнем есть закрытые комментариями примеры изменения ftp-клиента по умолчанию, не говоря уж о значениях переменной USE и флагах оптимизации. Нет противопоказаний и для задания в нем иных поисковых путей - для архивов исходников, например, или каталога для временных файлов.

Каталог, в котором расположен файл make.defaults, /etc/make.profile, на самом деле представляет собой символическую ссылку на один из каталогов профайлов в дереве портежей - /usr/portage/profiles, создаваемую автоматически в соответствие с архитектурой машины и номером версии дистрибутива. В текущем пре-релизе для PC-архитектуры исходный для ссылки каталог - /usr/portage/profiles/default-x86-1.4. Теоретически источник ссылки можно бы и изменить, хотя необходимости в том я не вижу.

Соответственно, когда речь идет о файле /etc/make.profile/make.defaults, в действительности рассматривается содержимое файла /usr/portage/profiles/default-x86-1.4/make.defaults. Каковое ограничивается а) перечислением умолчальных значений переменной USE, указанием архитектуры машины (x86 для PC) и версии компилятора gcc.

В каталоге /usr/portage/profiles/default-x86-1.4 (или, что равнозначно, в каталоге /etc/make.profile есть еще несколько профайлов системы портежей. О файле use.defaults речь уже была - это автоматически обновляемый список разрешенных отношений использования (сиречь включенных значений переменной USE). Профайл packages.build содержит маски пакетов базовой системы (то есть сокращенные имена типа sys-apps/bash, которые можно использовать в качестве аргументов команды emerge), а профайл packages, плюс к таким маскам - еще и указание на версии (или диапазон версий), которые подпадают под маскирование.

О файле /etc/make.conf говорилось достаточно в заметках про USE и про флаги оптимизации. Остается лишь добавить, что здесь можно переопределить все переменные из файла /etc/make.globals, которые чем-то не приглянулись. Иногда это может быть целесообразно: например, при стойкой антипатии к умолчальному ftp-клиенту (wget), необходимости брать архивы исходников с сервера локальной сети или желании помещать отходы компиляции, ускорения процесса для, в файловую систему в оперативной памяти - /dev/shm.

Ну а к установке переменных условий сборки портежей в командной строке мы еще вернемся, когда речь дойдет до практического использования системы портежей.




Главная страница  |  Новости  |  Библиотека  |  UNIX для всех  |    |   Магазин  |  Выход
Software  |  Атрибутика  |  Книги  |  Распродажа  |  Прайс-лист  |  Справка  |  О проекте | Правовая информация | Privacy
Корзина  |  Оформить заказ  |  Настройки покупателя


© 2000 - 2003 ООО "Линукс-Онлайн"


Cчетчик Rambler's TopShop
RB2 Network RB2 Network