Учебник по системе PortageАвтор: Bruce A. Locke Перевод: Иван Зенков Редактор: Алексей Федорчук Этот учебник, общий обзор Portage, детально описывающий процесс конфигурации, установки и поддержки системы. 0.9.6 Dec 24, 2002 Portage: Краткий обзорКраткий обзорPortage - очень мощная расширенная система управления пакетами. Ее гибкость, простой механизм сборки и формирования основ Linux системы позволяют ей гордо носить имя мета-дистрибутивного движка. Весь дистрибутив Gentoo Linux формируется вокруг Portage. Gentoo Linux - это дистрибутив, состоящий из Portage и 1,500 скриптов сборки программного обеспечения, называемых ebuild. Эти ebuild-скрипты сообщают Portage, как откомпилировать и установить программный пакет. С помощью profiles и программы emerge пользователи и разработчики могут использовать Portage для установки и обновления пакетов, составляющих как основу операционной системы, так и ее приложения. 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 поддерживает СЛОТЫ. В период развития Gentoo Linux его разработчикам часто требовались разные версии пакетов (библиотек) в установленном виде, чтобы удовлетворить запросы других пакетов. Традиционный подход к решению этой проблемы состоял в том, чтобы обработать различные версии того же самого пакета как различные пакеты с немного разными именами. Вместо этого разработчики научили Portage, как обрабатывать и поддержать несколько версий того же самого пакета, используя СЛОТЫ (SLOTS). Мы рассмотрим пример с обычной библиотекой 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.globals. Пожалуйста, обратите внимание, что все пользовательские настройки должны быть указаны либо в среде оболочки, либо в файле /etc/make.conf, который специально для них предназначен. Важно обратить внимание, что любая опция, определенная в /etc/make.conf будет почти всегда отменять установку, сделанную в /etc/make.global. Все содержимое /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. DefaultsPortage определяет набор заданных по умолчанию ключей 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. Открыв этот файл можно увидеть что-то вроде: 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 может быть задано вручную, используя среду оболочки. 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 позволяет указать директории для самостоятельно собранных пакетов и для восстановления различных удаленных программ. Для большинства пользователей это, скорей всего, не понадобится. Правда, необходимые опции все же выглядят так:
Защита конфигурационных файловPortage позволяет защитить все конфигурационных файлы в указанных директориях. Подобные файлы Portage не переписывает. Если устанавливаемый пакет попытается заменить защищенный файл, то у него ничего не получится, версия устанавливаемого им файлы будет переименована, к примеру, в ._cfg0000_name. Это позволяет пользователю в будущем сравнить содержимое двух файлов и исправить по мере надобности различия между ними. Защищенные директории могут быть указаны в строке CONFIG_PROTECT файлов /etc/make.conf или /etc/make.globals. Не защищенные файл в поддиректории защищенной директории можно определить в строке CONFIG_PROTECT_MASK. Следующее просто пример, его не надо копировать. CONFIG_PROTECT="/etc /usr/share/config /usr/kde/2/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/init.d /etc/pam.d" Пользователи могут запросить более подробную информацию относительно работы защиты конфигурационных файлов командой: emerge --help config Дополнительные особенностиPortage также предлагает несколько специализированных опций для разработчиков, управляющих поведением и чисткой Portage непосредственно на стадии сборки пакета. Эти опции скорей всего будут интересны разработчикам и могут вызвать проблемы у обычных пользователей. Список подобных ОСОБЕННОСТЕЙ можно прописать в /etc/make.conf или /etc/make.globals. Вот их список:
SYNC настройки в PortagePortage позволяет обновлять свое дерево портов через rsync. Если вы предпочитаете другой путь обновления дерева Portage, тогда пропишите его в строке SYNC файла /etc/make.conf. RSYNCОдин из самых распространенных способов обновления дерева портов - это использование rsync. Вот так он прописывается в файл /etc/make.conf: SYNC="rsync://cvs.gentoo.org/gentoo-x86-portage" Метод rsync при обновлении дерева все время удаляет изменения, сделанные вами в локальном дере Portage. Для того, чтобы этого избежать, используйте PORTDIR_OVERLAY="/директория/где/лежат/ваши/ebuild-скрипты". Ветка CVS для разработчиковРазработчики, имеющие полный подступ к CVS репозитарию, помимо получения локального дерева, путем emerge sync, могут обращаться к CVS через RSH или SSH. Просто проверьте CVS репозитарий, используя вашу учетную запись, затем перейдите в /usr/portage и выполните опцию SYNC: SYNC="cvs://[email protected]:/home/cvsroot" ЗеркалаGentoo создает локальное зеркало всех архивных файлов, загруженных при помощи ebuild скриптов, в дереве Portage. Иногда исходники в архивах и т.д. хранятся на медленных серверах, которые часто бывают перегружены. Также, разработчики удаляют старые версии программного обеспечения с ftp, если появляется более новые версии. Для облегчения жизни пользователям дистрибутива Gentoo (и уменьшения нагрузки) мы создаем зеркала нашего репозитария. Гораздо быстрей и надежней загружать архивы с исходниками с разных зеркал, которые при этом могут быть гораздо ближе географически. Каждый раз, когда вы пытаетесь установить пакет, Portage сначала проверит наше зеркало на наличие необходимого архива. Если зеркало не имеет необходимых файлов, тогда Portage пробует загружать их с HTTP ИЛИ FTP сервера, указанного в ebuild файле. Зеркало Portage может быть определено в строке GENTOO_MIRRORS файла /etc/make.conf. Значение по умолчанию: 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. ProxiesPortage может быть настроена на загрузку фалов через HTTP и FTP прокси. Данные о прокси могут быть указаны в строках HTTP_PROXY и FTP_PROXY файлов /etc/make.conf или /etc/make.globals. Если HTTP и FTP обслуживаются одним и тем же прокси, используйте опцию PROXY. Вот пример: 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 или просто задать соответствующую переменную среды оболочки. Например: RSYNC_PROXY="192.168.1.1:8080" Если от внешнего мира вас отделяет надежная система сетевой защиты и вы не можете использовать HTTP прокси, Вы сможете обновить версию свего дерева Portage системы, используя архив репозитария. Сам архив доступен здесь http://www.ibiblio.org/gentoo/snapshots. Различные опцииСледующий список опций, которые тоже могут быть использованы пользователями:
Пакетный менеджерОбновление дерева PortageДерево Portage размещается в /usr/portage и содержит огромную библиотеку инструкций для установки (так называемых ebuild-скриптов) различных пакетов. Оно также содержит profile и package.mask - информацию, жизненно необходимую для обновления вашей системы. Очень важно поддерживать дерево в должном виде, постоянно обновляя его. Для обновления дерева Portage используйте следующую команду: emerge rsync Этот способ использования emerge для обновления пакетов изменяет локальное дерево системы Portage. Для большей информации смотрите раздел SYNC настройки в Portage в главе Настройка Portage. Установка пакетовПроцесс компиляции и установки пакета в Portage определяется как "присоединение" (merging). Portage компилирует пакеты и временно устанавливает их в каталог "image", где производит запись файлов, которые будут установлены. После чего эти файли и объединяются из "image" с реальной файловой системой. Команда emerge - это внешний интерфейс системы Portage. Именно через эту команду осуществятся установка и удаление пакетов путем ее запуска с различными ключами. Для установки свежей незамаскированной версии какого-нибудь пакета просто укажите его название, например так: emerge galeon Команда скомпилирует и установит любые необходимые зависимости (принимая во внимание параметры настроек USE), а так же скомпилирует и установит новую, незамаскированную версию galeon. Galeon также может быть упомянут полным именем с использованием названия категории: /net-www/galeon/. Команда emerge также принимает ссылки на сами ebuild файлы. Это позволяет пользователям устанавливать более старые пакеты или пакеты третьих лиц. Простой пример: emerge /usr/portage/net-www/galeon/galeon-1.2.0-r3.ebuild В дополнение к названию пакета или ebuild файла, который будет установлен, emerge поддерживает несколько очень полезных параметров командной строки. Из всех этих параметров --pretend, наверное, наиболее полезен. При использовании этого параметра установка выполняться не будет. Вместо чего Portage просто отобразит список пакетов, которые должны быть установлены или обновлены для выполнения действия, например, все той же установки. В следующем примере показано, что должно быть установлено или обновлено на примере инсталляции последней версии пакета kdevelop: 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 же свидетельствует о том, что более старая версия этого пакеты была установлена и будет обновлена до новой. Другие аргументы командной строки:
Удаление пакетовПроцесс "удаления" уничтожит из файловой системы все связанные файлы установленного пакета. Программное обеспечение пакета будет невозможно использовать, пока он заново не будет установлен. Название удаляемого пакета следует после аргумента unmerge команды emerge. Следующий пример удалит все установленные версии пакета ltrace: emerge unmerge ltrace или emerge unmerge dev-util/ltrace Portage также позволяет указать определенные версии пакетов для удаления. Список определений следующий: = (последняя либо текущая версия), < (более старшая версия), > (более новая версия), <= (более старшая, либо текущая), и >= (более новая, либо текущая). Следующий пример удалит программу ltrace, версии 0.3.15 и старше: 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 как необходимые для функционирования и поддержания системы в рабочем виде. Для запуска системного обновления укажите: 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 состоящий из категории и имени файла в одну строку, представляет из себя следующие: 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 единственной доступной версией и никогда не затрагивал ее при глобальном обновлении пакетов. Глобальное обновление производится командой: emerge --update world После чего Portage попробует обновить все пакеты упомянутые в конфигурационном файле world и если необходимо, обновит любые зависимости. Зависимости обновляются до самой последней версии, основываясь на потребности обновляемого пакета. Пакеты не перечисленные в конфигурационном файле world независимы и не обновлены. Portage не будет переписывать файлы в директориях помеченных защитой конфигурационных файлов. Вы должны будете вручную исправить различия между вашими текущими файлами конфигурации и новыми версиями специально сохраненными для вас Portage. Если вы не исправите ваши текущие конфигурации, то не исключено, что некоторое установленное программное обеспечение может перестать функционировать. Для большей информации смотрите Защита конфигурационных файлов в главе Настройка Portage или воспользуйтесь командой emerge --help config. Для того, чтобы увидеть список всего, что было бы обновлено или установлено в течении глобального обновления, используйте аргумент --pretend, как было упомянуто в предыдущих разделах этой главы. Глобальное обновление также автоматически выполняет и системное обновление. При этом основные пакеты не могут быть закреплены, используя метод файла глобального обновления world, поскольку текущая конфигурация Portage этого не позволяет. Любопытный побочный эффект глобального обновления может быть использован пользователями для перекомпиляции всего программного обеспечения установленного в системе. Так как глобальное обновление затрагивает все пакеты и их зависимости, упомянутые в файле /world/, использование аргумента --emptytree позволит принудительно перекомпилировать пакеты и их зависимостей исключая glibc. Это может быть полезно для пользователей, желающих изменить опции компилятора или настройки USE на все программное обеспечение которое они используют без перекомпиляции каждого пакета вручную. Просто запишите в файл world все обычно используемое вами программное обеспечение и запустите: //emerge --update world --emptytree К этой команде вы можете добавить аргумент /--pretend/, чтобы получить список пакетов, которые были бы перекомпилированы в результате ее выполнения. Чистка системыPortage позволяет установить несколько версий пакетов одна рядом с другой. Чем успешно можно воспользоваться для ряда программного обеспечения из дерева Portage (например для обратной совместимости, поскольку старшие версии приложений могут быть несовместимы с более новыми версиями других пакетов). В большинстве случаев взамен старой версии будет использоваться более новая и все, что останется нужным это документация, да возможно пара незначительных файлов не имеющих влияния на систему. Со временем накапливаясь, этот "груз" будет занимать все больше дискового пространства. Дабы бороться с этим, Portage поддерживает способ удаления всех старых версий из пользовательской системы. Эта возможно благодаря опции clean и используется следущим образом: emerge clean После чего emerge покажет список версий или ревизий, которые будут удалены список версий, которые останутся и даст пользователю время для отмены процесса удаления нажатием Control-C. В нормальных условиях во время удаления на экран будет выводиться список файлов, которые были уничтожены, либо по каким-либо причинам сохранены. По умолчанию Portage рассматривает опцию чистки на всех установленных пакетах world. Вы можете сузить область чистки, использую с опциями world, system, указывая название пакетов и используя диапазоны версий которые были рассмотрены в разделе об удалении пакетов в данной главе. Перед удалением определенной версий пакета, Portage тщательно проверяет различные конфигурационные файлы, зависимости установленных пакетов, и СЛОТЫ. Получив нужные данные Portage безопасно удалит старую версию пакета не не нарушив систему и сохранив ее функциональность. Уничтожение пакетовPortage также имеет опцию /prune/. Уничтожение - это более опасная форма чистки. Она удаляет все версии всех пакетов, кроме последней установленной. Она так же не выполняет многие из проверок /clean/, в связи с чем, в вашей системе могут быть удалены необходимые зависимости. Пользователи этой опцией могут легко нарушить работоспособность системы и потому использовать ее стоит только в некоторых особенных случаях. Опция prune схожа с предыдущей опцией и используется почти также: emerge prune Поиск по дереву PortageТакие деревья, как Portage, формирующий основу Gentoo Linux, зачастую могут быть очень большими. Специально для этого в emerge есть функция поиска в виде строки на вводе, принимающей регулярное выражение в кавычках. Регулярные выражения вещь достаточно сложная, потому если вы заинтересовались этой темой рекомендую найти лучше хорошую книгу по ней. Наиболее простые примеры не требуют знания составления регулярных выражений. Следующая команда произведет поиск пакета содержащего "gcc", как часть своего имени: emerge search gcc Для каждого из значений поиска будет показан список из названия пакета последней доступной версии, последний установленной, адреса домашней страницы и описания программного обеспечения. Получение справкиДля большей информации относительно опции и функций emerge выполните команду: emerge --help Для облегчения жизни пользователям Gentoo, было создано несколько утилит, которые находятся в /app-admin/gentoolkit/ дерева Portage.
|