MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Gentoo Linux - работаем системой portage
16.11.2013
23:26
Раздел: linux - gentoo

Gentoo Linux - работаем системой portage


Дистрибутив Linux Gentoo в последнее время начинает набирать максимальные обороты. Количество пользователей, заинтересованных в использовании системы, собранной “под себя”, заметно увеличивается. Но вот прошел процесс установки системы. Или, может быть, Вы его только начали. Как ни крути, Вам придется освоить принципы работы с системой portage в Gentoo. Рассматривая множество статей о данном дистрибутиве, Вы наверняка встречали команду emerge с различными ключами. Если даже найти пару схожих статей, об установке того же KDE, можно заметить, что кто-то из авторов пишет emerge -av KDE, а кто-то emerge -pv KDE. Так в чем же разница?


Суть системы портежей состоит в том, что в системе есть специальное дерево распределенных по определенному типу приложений. За информацию о каждом приложении, его зависимостях, отвечают маленькие файлики - ebuild. Они представляют собой небольшие скрипты, с описанием процесса установки и контрольными суммами файлов. Кроме того, они также могут содержать информацию о том, какие патчи необходимо наложить на программу перед ее компиляцией. Сами файлы располагаются в директории /usr/portage. Они все удобно распределены по категориям. Например утилиты для работы с сетью лежат в папках “net-”. А приложения, необходимые для работы с php - “dev-php”. Кроме того, в каждом таком каталоге вы найдете еще несколько - для каждого приложения выделен отдельный каталог. В итоге найти необходимое приложение не составит труда. Например, apache мы найдем по адресу /usr/portage/net-www/apache. Но система портежей была бы ничем, если бы не замечательная утилита emerge. emerge emerge - это основная программа в дистрибутиве Gentoo. Именно с её помощью, мы получаем возможность использовать одну из сильнейших сторон Gentoo - систему портежей. Я опишу наиболее популярные команды для данной утилиты: emerge program : при простом вызове emerge с именем программы имеющейся в системе портежей, будет произведена проверка необходимых версий приложений и библиотек, требующихся для нашей программы, а так же установлены ли они в системе.


В случае их отсутствия, emerge сначала скачает и скомпилирует все требуемые зависимости и лишь в конце приступит к установке нашей программы. Маленький совет: файлы можно скачать и самостоятельно, сохранив их в папку distfiles, директории /usr/portage. emerge -f program : emerge не будет заниматься компиляцией программы. Система только лишь скачает все необходимые файлы, включая зависимости, для успешной компиляции приложения на данном компьютере. emerge -pv program : вызывая emerge с ключами “-pv”, мы получим список необходимых приложений и библиотек, которые нужно установить для использования данной программы. Кроме того, в конце вывода, мы сможем посмотреть, какой объем файлов необходимо скачать из Internet. emerge -av program : делает то же самое, что и “-pv”, единственное отличие, к концу вывода добавляется вопрос - хотите ли вы установить данное приложение, и если вы введете клавишу “y”, то emerge скачает и установит необходимые файлы. emerge -b program : система после успешной установки приложения так же создаст бинарный пакет, используя который уже не потребуется по новой компилировать файлы. emerge -B program : то же самое, что и запуск с ключом “-b”, с единственной разницей, что будут созданы только пакеты, устанавливаться в систему они не будут. emerge -k program : данная команда позволяет при наличии в директории /usr/portage/packages, бинарных пакетов, не тратить время на компиляцию пакетов, а установить уже скомпилированные, например с ключом “-b” во время инсталляции программы. emerge -K program : отличие от запуска с ключом “-k”, в том, что при установке если бинарный файл отсутствует в директории packages, то установка будет аварийно остановлена. emerge -g program : скачивается бинарный, уже скомпилированный пакет.


Однако найти такой сервер, содержащий скомпилированные пакеты, практически невозможно. emerge -O program : установка пакета, с полным игнорированием всего, что ему требуется. Крайне нежелательно. emerge -o program : будут установлены только необходимые для успешной установки самого приложения файлы. Сам пакет установлен не будет. emerge –resume : позволяет продолжить последний процесс установки приложения, из-за случайно возникшего сбоя. Например, во время внезапного отключения света в доме или разрыва линии модемом. emerge -s program : если вы точно не помните имени программы, можете воспользоваться данным параметром - он производит поиск в базе портежей приложений содержащих в своем имени введенное вами слово. emerge sync : собственно основная опция emerge, предназначенная для получения свежего дерева портежей из Сети. emerge unmerge program : удаление пакета из системы.


Например, при установке KDE, новая версия будет поставлена “слотом”, и мы получим возможность грузиться в старую и новую версии KDE. Кому-то это удобно, а кому-то нет. Для того, чтобы этого не происходило, можно при помощи данной команды удалить текущую версию приложения. Кроме того, при использовании emerge, есть маленькие нюансы, о которых плохо знают начинающие пользователи Gentoo. При выводе информации с ключами “-av” или другими можно увидеть: [ebuild R ] app-misc/mc-4.6.0-r13 Что означают буквы в квадратных скобках? Я приведу тут наиболее часто встречающиеся обозначения: [blocks B ] app-text/dos2unix (from pkg app-text/hd2u-0.8.0) - dos2unix блокирует установку hd2u. Перед установкой необходимо сначала удалить конфликтующую программу. [ebuild N ] app-games/qstat-25c - программа будет впервые установлена в системе. Предыдущей версии данной программы нет в списке установленных приложений. [ebuild NS ] dev-libs/glib-2.4.7 - данное приложение у вас уже стоит, но новый glib будет установлен в “слот”. Таким образом, можно будет использовать одновременно несколько версий данного приложения. Ближайший пример - KDE. Можно установить в систему 3.2.3, 3.3.2, 3.4.0 и грузиться в каждый из них по выбору. [ebuild R ] sys-apps/sed-4.0.5 - переустановка пакета. Данная версия пакета уже установлена. Произойдет пересборка пакета. [ebuild F ] media-video/realplayer-8-r6 - необходимо загрузить файлы самому, руками.


Обычно это происходит с теми сайтами, которые “отдают” файлы только после регистрации у них на сайте. [ebuild f ] media-video/realplayer-8-r6 - файлы уже загружены пользователем и помещены в /usr/portage/distfiles [ebuild U ] net-fs/samba-2.2.8_pre1 [2.2.7a] - предыдущая версия пакета уже есть в системе. Произойдет обновление пакета. [ebuild UD] media-libs/libgd-1.8.4 [2.0.11] - в системе установлена более новая версия пакета чем та, которую вы хотите установить. Если программа отказывается устанавливаться, ссылаясь на то, что она находится еще в стадии тестирования, т.е. выводит диалог примерно следующего содержания: emerge =kde-3.4.0 Calculating dependencies !!! All ebuilds that could satisfy “=kde-3.4.0″ have been masked. !!! One of the following masked packages is required to complete your request: - kde-base/kde-3.4.0 (masked by: ~x86 keyword) For more information, see MASKED PACKAGES section in the emerge man page or section 2.2 “Software Availability” in the Gentoo Handbook. то побороть эту напасть, можно поставив перед emerge следующее - ACCEPT_KEYWORDS=”~x86″. В итоге строка примет вид: ACCEPT_KEYWORDS=”~x86″ emerge =”kde-3.4.0″ Как вы еще успели заметить, перед именем необходимой программы стоит знак “=” (равно).


Данный прием позволяет установить приложение определенной версии в систему. Кроме того, перед emerge можно поставить и необходимые при компиляции флаги: USE=”mmx sse sse2 3dnow” emerge mplayer Поскольку приложения в Gentoo собираются из исходных кодов, то, как и при ручной сборке, мы можем указать им необходимые нам флаги. Это иногда позволяет включить необходимые нам опции в программе. Например, в данном случае, mplayer собирается с поддержкой расширенных инструкций для процессора Athlon, что в итоге даст некоторый прирост в производительности. Кроме всего прочего, это иногда помогает снять ненужные зависимости. По странному стечению обстоятельств, в Gentoo файловый менеджер Midnight Commander собирается с поддержкой XFree, что в итоге тянет за собой лишние 50-80 мегабайт. Добавив в USE флаг “-X” мы соберем mc без поддержки X-сервера. От этого он хуже работать не станет, и не будет “думать” после ввода mc в консоли. Только учтите - для приложений есть и жесткие USE-флаги, которые снимать нежелательно, они могут серьезно повлиять на работу. Но не emerge единым живы пользователи Gentoo. Хотя, конечно, именно это приложение выполняет львиную долю работы.


Рассмотрим такое приложение как equery. equery equery - программа, предназначенная для получения различной информации о пакетах в Gentoo Linux. Ниже кратко рассмотрены варианты ее применения. equery b program : список файлов, принадлежащих пакету. equery k program : проверка контрольных сумм файлов. equery d program : список приложений, содержащих прямые зависимости от данного приложения equery f program : список принадлежащих пакету файлов. equery h program : список приложений, имеющих во флаге USE данный пакет. equery l program : список пакетов совпадающих по имени с введенным. equery s program : вывод размера файлов, содержащихся в пакете. equery u program : выводит список используемых в приложении USE флагов. equery w program : полный путь до ebuild-файла, для данного пакета. Но на этом список интересных приложений не заканчивается. Для просмотра статистики о системе, можно установить пакет genlop. Он занимает мало места, но очень удобен для работы с логом emerge. Установка производится стандартными средствами - emerge genlop. После чего, можно вызвать программу со следующими параметрами: genlop -c : вывод информации о текущем процессе работы emerge.


Для получения данных необходимо, чтобы в момент запуска genlop с ключом “-c”, что-то компилировалось при помощи emerge. Самым интересным параметром будет ожидаемое время окончания процесса компиляции приложения. genlop -e program : вывод истории установки какого-либо приложения. Иногда бывает интересно глянуть на то, как часто обновлялось то или иное приложение. genlop -i program : вывод расширенной информации о программе. Включая флаги с которыми компилировалось приложение, среднее время компиляции, а так же, сколько раз оно устанавливалось в систему: genlop -i mc * app-misc/mc Total builds: 4 Global build time: 13 minutes and 48 seconds. Average merge time: 3 minutes and 27 seconds. Info about currently installed ebuild: * app-misc/mc-4.6.0-r13 Install date: Sun Mar 20 06:21:45 2005 USE=”nls ncurses slang -gpm -samba -X -unicode” CFLAGS=”-march=athlon-xp -mfpmath=sse -mmmx -m3dnow -O2 -mcpu=i686 -fomit-frame-pointer -I/usr/include/gssapi” genlop -l : вывод истории установки приложений и библиотек. Имеет вид “дата время >>> имя пакета” genlop -p program : оценочное время сборки того или иного пакета. Процесс довольно долгий. genlop -r : список дат, когда происходило обновление системы портежей при помощи emerge sync. genlop -s program : поиск по имени приложения. genlop -S program : фактически то же самое, но поиск идет с учетом регистра букв. genlop -t program : вывод времени компиляции для каждой установки данного пакета в систему.


Иногда бывает интересно посмотреть, как растет время компиляции для каждой новой версии приложения. genlop -u program : вывод аналогичен вызову с параметром “-i”, но так же выводятся и даты удаления пакета. С помощью данных программ можно получить полный контроль над своей системой.

Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования