Советы пользователям Gentoo

()

Gentoo - один из самых трудных для изучения дистрибутивов. Хотя многие старые пользователи скажут что огромное сообщество и обширная документация могут здорово помочь новичкам. В этой статье приведён ряд подсказок, которые помогут новым пользователям быстрее освоить Gentoo.

Для начала приготовьтесь прочитать огромное количество документации. Вы не сможете установить Gentoo не изучив внимательно Handbook.

Gentoo имеет графический инсталлятор, но новичкам не стоит его использовать. Установка Gentoo "традиционным" способом вынуждает читать документацию, и способствует лучшему понимаю системы. Так же инсталлятор Gentoo не так хорош при установке и настройке драйверов как инсталляторы других дистрибутивов.

Handbook содержит основную информацию о Gentoo. Дополнительная информация (например о настройке X и ALSA) может быть найдена на странице документации или на Gentoo Wiki.

Если у вас возник специфический вопрос, не освещённый в документации - попробуйте спросить на форуме или в IRC.

Основы Portage

Одно из фундаментальных отличий Gentoo от других дистрибутивов - его система управления пакетами, названная Portage, ориентированная в первую очередь на установку программ из исходных текстов. Это позволяет иметь множество настроек и точек контроля для одного пакета там, где пользователи бинарных дистрибутивов имеют несколько пакетов с разными опциями и зависимостями (фактически это тоже самое, только управление различными опциями сборки не такое гибкое). С Portage вы можете установить так называемые USE-флаги для настройки опций одного пакета или даже всей системы.

Например если вы хотите включить поддержку KDE и выключить поддержку GNOME вам нужно добавить к строке USE в файле /etc/make.conf флаги "kde -gnome". Для получения более подробной информации о USE-флагах смотрите Gentoo Handbook.

Для работы с Portage используется команда emerge. Например для установки пакета moo достаточно набрать команду emerge moo. Portage проверит зависимости, скачает все необходимые архивы с исходниками, соберёт пакет и установит его. Вся необходимая информация сохранена в базе, состоящей из ebuild'ов, каждый из которых представляет собой специальный скрипт. Все ebuild'ы находятся в папке /usr/portage.

Управление настройками Portage

Первое правило Gentoo - нужно внимательно следить за флагами USE. Почему при установке Midnight Commander устанавливается X.Org - потому что у вас разрешён флаг X. Почему нет KPDF в KDE? - Потому что KDE был собран без флага pdf (не спрашивайте почему всё же собрался KGhostScript).

Всегда устанавливайте новые пакеты командной emerge --ask --verbose (или emerge -av) для просмотра USE-флагов перед началом компиляции. Установите пакет gentoolkit (emerge gentoolkit) - среди множества полезных вещей он содержит утилиту euse, которая существенно упрощает управление флагами USE. Выполните euse -i flag для получения информации о флаге "flag". Так же просмотрите man-страницу euse (не волнуйтесь. она короткая :-)).

Если вы хотите изменить USE-флаги только для одного пакета не пытайтесь собирать его командой USE="some flags" emerge moo. Это конечно сработает, но при обновлении системы пакет будет пересобран со старыми флагами. Лучше прописывайте USE-флаги в /etc/portage/package.use, для этого выполните echo "category/moo some flags" >> /etc/portage/package.use перед установкой пакета.

Тоже относится и к ACCEPT_KEYWORDS - используйте /etc/portage/package.keywords. В Portage 2.1 вы можете использовать папки package.use и package.keywords вместо файлов для более простого управления.

Когда нужно использовать оверлеи?

Иногда возникает необходимость установить пакет, отсутствующий в Portage. Например вы можете захотеть установить пакет, удалённый из дерева Portage. Тогда вам нужно взять его ebuild из архива Portage CVS. Или например вы захотите установить новый пакет, взяв ebuild в bugzilla. Возможна ситуация, когда вы просто захотите немного подправить официальный ebuild.

В любом случае вам нужно в такой ситуации поместить ваш ebuild в локальный оверлей. Оверлей - набор ebuild'ов, которые вы хотите добавить к официальной базе данных (дереву) Portage. Не храните свои ebuild'ы внутри официального дерева (/usr/portage), поскольку при обновлении они будут удалены. Создайте каталог для оверлея, и создайте в нём структуру подкаталогов, аналогичную /usr/portage. Поместите туда ваш ebuild. Добавьте PORTDIR_OVERLAY="/path/to/local/overlay" в ваш файл /etc/make.conf.

Обычное место для оврлеев - /usr/local/overlays. Таким образом местом для вашего ebuild'а будет /usr/local/overlays/local. Что же ещё может находиться в /usr/local/overlays.

Во многих случаях, когда вы ищите пакеты, не включённые в официальное дерево, вы находите не только ebuild'ы, но и оверлеи. Например один из самых популярных оверлеев xgl-coffee содержит всё, что нужно для работы XGL. Вы можете установить его в /usr/local/overlays/xgl-coffee что не смешивать с другими оверлеями и обновлять его через SVN.

Вы можете найти подробную информацию относительно использования оверлеев на Gentoo Wiki. Там же вы найдёте список неофциальных оверлеев и описание процесса синхронизации с ними.

Как часто нужно обновляться?

Вам нет смысла обновляться чаще чем раз в сутки. Можно даже реже. Вы можете следить за вашими любимыми пакетами периодически посещяя сайты packages.gentoo.org или gentoo-portage.com (или подписавшись на RSS).

Сохраните мир чистым

Каждый раз, когда вы выполняете emerge some-package, имя пакета записываете в файл /var/lib/portage/world. Когда вы обновляете систему командой emerge --update --deep world - используется список из этого файла. Поэтому этот файл должен быть по возможности короче. В нём должны быть только необходимые пакеты. Если какой-то пакет является всего лишь зависимостью другого - не стоит держать его в файле world.

Например если вы устанавливаете пакет, использующий библиотеку wxWidgets, то эта библиотека устанавливается как зависимость и не добавляется в файл world. Если вы деинсталлируете все пакеты использующие эту библиотеку - она перестанет обновляться при выполнении emerge --update (...) world, и будет удалены после вызова emerge --depclean world. Единственный случай когда стоит добавить wxWidgets в world - если вы разрабатываете приложения на основе этой библиотеки.

Существует скрипт, помогающий очистить world от всего лишнего. Для установки пакета без занесения его в world используйте опцию --oneshot (-i). Эта опция так же будет хорошем решением при временной установке какого-либо пакета.

Деинсталляция пакетов

Все ваши действия с emerge записываются в файл /var/log/emerge.log. Если вы хотите знать какой пакет собирается в натсоящее время - выполните tail /var/log/emerge.log. Утилита genlop (emerge genlop) позволяет извлечь множество различной инфрмации из этого файла. Например genlop -c покажет вам какой пакет собирается в данный момент и попытается предсказать сколько времени осталось до конца сборки.

Удаление временных файлов

Когда сборка пакета завершается с ошибкой - остаётся каталог с временными файлами в /var/tmp/portage. Если вы устраняете проблему и пакет нормально собирается - файлы удаляются. Если же нет - вы можете очистить каталоu /var/tmp/portage вручную.

После обновления вы можете удалить устаревшие файлы из /usr/portage/distfiles. Для этого воспользуйтесь утилитой eclean из пакета gentoolkit. Она поможет удалить не нужные файлы. Эта утилита может работать как с исходниками, так и с бинарными пакетами. (просто вызовите её как eclean-dist или eclean-pkg соответственно). Прочитайте страницу man для получения полного списка опций.

Gentoo предоставляет вам огромные возможности по настройке вашей системы. Автор статьи надеется что после прочтения этих строк вы сможете воспользоваться этими возможностями и испытать чувство глубокого удовлетворение от возможности управления любыми аспектами системы. Вам понравиться это ощущение.

Источник

Ключевые слова: gentoo, portage, overlay.

Комментарии:

LXj 2006-11-23 01:50:01 (#)

Возможно, свою собственную статью я перевёл бы и лучше, но всё равно спасибо, получилось хорошо!

Мне нравится это ощущение ;)

slash 2006-11-24 15:05:26 (#)

--oneshot (-1 short option)
опечатка (См. emerge --help)
"Эта опция так же будет хорошем решением при временной установке какого-либо пакета."
Я бы сказал, для обновления или перекомпиляции уже установленного пакета из system или зависимостей world. Да бы не заносить этот пакет в world.

Кстати, пакет portage является частью system.
После обновления Portage, emerge предлагает обновить пакет portage следующим образом - "emerge portage" (прощу прощения за тавтологию). Хотя правильным было бы "emerge --oneshort portage". Если сделать как предлагаю (emerge portage), то ничего страшного не произойдет, пакет portage не будет занесен в world.
emerge some-system-package - может добавить этот пакет в system, что несет некую опасность.
Чуть не забыл.. обновлять пакет можно еще и следующим, имхо, более правильным способом:
emerge --update --deep package

MooSE 2006-11-24 18:39:48 (#)

Я обновлюсь следующей последовательностью команд (каждое утро:)):

# emerge-delta-webrsync
# emerge --deep --newuse world

Этого более чем достаточно:)

Anonymous 2009-12-04 17:00:50 (#)

# emerge --deep --newuse world
Неужели ты каждый день меняешь use флаги? ;-)
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE