Ещё раз о главном - жизнь после установки

Ссылка на оригинал: http://gentoo.blog.ru/6345603.html#comments

C версии: 1.5

Автор: gentoo

Дата: 21.02.2008



Пост навеян аськой (да, я гентушник, и я не пользуюсь джаббером)), а точнее до боли знакомой фразой "привет! я читал твой блог! Есть вопрос!")) Нет, я совсем не против новых знакомств, у самого когда-то была туча вопросов, и спасибо всем тем, кто терпеливо отвечал и помогал мне в своё время во всём разобраться ;) Но на одних подсказках далеко не уедешь, нужно (нужно!) читать хендбук (благо он на русском) и другие материалы. Хотя по себе знаю, что решения возникшей проблемы всегда хочется "здесь и сейчас", а стоит открыть хендбук и увидеть СКОЛЬКО много там букв, как уже всякое желание читать пропадает)) Напишу здесь ещё несколько советов, которые могут помочь сориентироваться новичкам, может где-то повторюсь, неважно.

Итак, предположим, вы удачно установили систему и загрузились в неё. Может быть вы уже обновили дерево портежей (по emerge --sync), и может быть пересобрали все пакеты системы (по emerge -epv world). Вобщем готовы двигаться дальше, ставить Х'сы, биться с дровами за direct rendering, компилировать свой любимый DE/WM. Но стоп. Если вы смутно представляете, зачем нужны use-флаги, что такое eix, elogv, как обновлять мир, то вам сначала под кат =)


Совет: Не стоит выбирать профиль "desktop", который включает в себя несколько десятков use-флагов, предположительно подходящих для любой desktop-системы. Все необходимые флаги в любом случае пропишем постепенно в процессе установок пакетов, а добавление на начальном этапе этой кучи флагов из профиля desktop приведёт к большим зависимостям, и вы просто замучаетесь просматривать сто пакетов (и их use-флаги), потянувшихся по зависимостям за установкой всего одного-единственного необходимого вам пакета.

Совет: Перед установкой любого пакета, запускать команду emerge сначала с дополнительными ключами "pv" (или "av" - кому как больше нравится). Это даст возможность оценить предстоящий процесс установки, проверить и по необходимости включить (отключить) интересующие USE-флаги устанавливаемых пакетов.

Полезные пакеты и команды:

# emerge emerge-delta-webrsync - теперь обновлять дерево портежей будет гораздо быстрее (за счёт экономии трафика), минус - дерево портежей после обновления будет актуально на вчерашний день включительно (изменения за сегодня вы получите только завтра).

# emerge eix - с помощью этого пакета гораздо удобнее (и быстрее) работать с поиском по дереву портежей.

# eix-sync -Wv - этой командой удобно обновлять дерево портежей, она сделает emerge-delta-webrsync && update-eix и выведет в конце список изменений в дереве portage (что добавилось, что исчезло, что готово проапгрейдиться).

# emerge -uDNvp world (или -uDNva) - предлагаю эту команду для обновления мира (если не придумаете свою, более удобную). Совсем не обязательно обновляться как только хотя бы один пакет появится в выводе этой команды. Я, например, обновляю лишь некоторые пакеты, выборочно и достаточно редко.

# emerge elogv - позволит просматривать информационные сообщения всех устанавливаемых пакетов после их установки, но сначала необходимо его настроить. Как настроить - читаем в строках после установки, у меня настроено так (/etc/make.conf):

PORTAGE_ELOG_CLASSES="warn error log qa"

PORTAGE_ELOG_SYSTEM="save"

А если также добавить строку:

PORT_LOGDIR=/var/log/portage, то вся информация выводимая на экран во время компиляции пакета будет помещаться в указанный каталог (на случай, если вас не устроит elogv).

Совет: не пренебрегайте этой командой, после установки крупных вещей (Х'сы, Gnome, KDE) обязательно запустите elogv и внимательно просмотрите сообщения всех пакетов, что устанавливались. В выводе некоторых могут встречаться важные инструкции, которые необходимо будет выполнить. Удалить текущую запись из журнала elogv - dd, помощь — F1.

# emerge gentoolkit - сюда входят eclean, equery, eread, euse, glsa-check, а главное - revdep-rebuild. Must have.

Обновление конфигов.

При обновлении некоторых пакетов может потребоваться вручную обновить их конфиги. Если после установки какого-либо пакета вы видите на экране такое сообщение:

 * IMPORTANT: 2 config files in '...' need updating.

значит некоторые конфиги ждут своего обновления. Обновить их можно либо с помощью etc-update, либо с помощью dispatch-conf. Рекомендуется использовать вторую команду, как более мощную, а при соответствующей настройке, умеющую сохранять историю изменений. В любом случае здесь рекомендуется включать мозг и внимательно изучать, какие строчки будут удалены, а какие - добавлены. Если обновляется какой-либо конфиг, где вы вносили свои корректировки, они могут быть предложены к удалению - поэтому нужно быть внимательным (сам по-первости попался - обновил конфиги не глядя, а потом удивлялся, почему настройки, которые я терпеливо прописывал в несколько файлов вдруг заменились на дефолтные).

USE-флаги

>с флагами я не совсем разобрался... зачем их прописывать, если проги и без них поставятся?

Предположим, ставим мы с тобой kopete (IM-клиент). Ты не включаешь никакие флаги и ставишь пакет, а я включаю "irc" и "yahoo". Так вот мой копете будет поддерживать также протоколы irc и yahoo, а твой - не будет.

>т.е. прогу надо будет заново ставить?

Да, тебе придётся прописать флаги и пересобрать пакет. USE-флаги нужны для того, чтобы включать некоторый функционал в собираемом пакете.

>вот мы дали команду emerge gnome -pv

>там появились строки..красного, синего и желтого цвета...что это все означает?

Жёлтым выделены изменения в наборе флагов пакета. Флаги, больше недействительные (удалённые) для новой версии пакета будут взяты в скобки, новые (добавленные) флаги, появившиеся для новой версии, будут без скобок. Красные - включенные флаги.

Синие - соответственно не включенные (идут по минусу).

Зелёные* - флаг был включен в системе после сборки пакета, пакет был собран без этого флага, готов к пересборке с ним.


Например:

[ebuild     UD] app-emulation/wine-0.9.49 [0.9.57]


предлагает понизить версию пакета wine (я ставил тестовую 0.9.57, у которой были доступны новые use-флаги "gecko" и "samba", и которых не будет, если пересобрать пакет в версию 0.9.49).

Флаг "java" я включил в системе только что, и поэтому он подсветился во всех пакетах, где он может использоваться, зелёным цветом.USE-флаги добавляются (включаются) в системе по мере необходимости.


>ну вот я и пытаюсь узнать..как определить необходимость?

К примеру, поставил ты систему, чист твой /etc/make.conf, включено только несколько обязательных флагов (прописаны в профиле). Теперь хочешь установить Пакет_А, по-хорошему пишешь:

# emerge < Пакет_А > -pv

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

Если прописываешь флаги в make.conf - то они будут действовать глобально для всех пакетов, где встретятся. Если в /etc/portage/package.use в формате: категория/пакет флаг [флаг -флаг] (app-misc/mc 7zip -X -gpm -ncurses slang) то тогда эти флаги будут включены только для этого пакета.

Обычно в make.conf находится некоторое количество глобальных флагов (X, kde, gnome, alsa, etc...) и много-много строк в package.use. Так постепенно use-флаги и накапливаются. А если ты сразу пропишешь в make.conf "Х, kde, gnome, samba" и т.д. (думая, что "вот сейчас я пропишу всё что мне надо и забуду про эти флаги"), то установка какого-нибудь mc потянет за собой столько пакетов по зависимостям... что ты будешь совсем не рад =) Причём, есть вероятность, что всё зациклится и выпадет ошибка.

Смотреть, что означает конкретный флаг удобно в другой консоли в ufed.


В make.conf можно прописать дефолтные опции, которые всегда будут ставится после emerge, к примеру, так:
EMERGE_DEFAULT_OPTS="--ask --verbose"


Еще стоит отметить, как более правильно распределять флаги между make.conf и package.use. У меня сейчас глобальные флаги, описывающие всю мою систему, в make.conf, а более локальные - относящиеся к конкретным программам - в package.use. Так наверно более удобно. Вообще я как-то стремлюсь сократить число флагов в make.conf.


Полезный пакет:

# emerge ufed - интерактивный ncurses-based редактор use-флагов. В нём флаги можно включать (отключать) и ufed будет прописывать их в /etc/make.conf. Конечно информация о флагах здесь не настолько подробная, как хотелось бы (особенно для новичка), но всё же лучше чем ничего.


>но ведь можно сделать так:

>USE="флаг" emerge < пакет >

А при обновлении мира, флаг у этого пакета потеряется, ибо нигде не прописан, то есть при пересборке (обновлении пакета) получится

USE="-флаг" emerge < пакет >и пакет потеряет часть функциональности.


>понял, а как быть, если прога тянет за собой другие, а у тех свои зависимости?

Смотришь их флаги, включаешь, а они после этого потянут ещё что-нибудь... смотришь теперь и их флаги)) пока не остановится процесс разрастания))


Если не планируется использовать deltup, можно прописать зеркало yandex в make.conf:

GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/";

(хотя эта строка и при дельтапе не помешает).


Поддержание системы в чистоте и порядке =)

При установке пакета А, он прописывается в world (/var/lib/portage/world), все пакеты B C D, которые он потянул за собой по зависимостям никуда не прописываются, но они нужны пакету А и поэтому не болтаются в системе мёртвым грузом. Соответственно команда

"# emerge -a —depclean"

не сообщает ни о каких бесхозных пакетах.

Пакет А нам надоел и мы его удаляем: "# emerge -C пакет_А"

Но пакеты B C D всё ещё остаются в системе, совершенно ненужные никому. Удалить их можно лишь точно зная их имена, либо с помощью команды "# emerge -a —depclean".

Проверка целостности системы:

# revdep-rebuild - команда проверит целостность зависимостей системы, и при необходимости (найденных ошибках) переустановит (доустановит) необходимые пакеты. Рекомендуется запускать всегда после выполнения команды

"emerge -a —depclean".


"Masked" пакеты.

>а еще один вопрос - хочу проставить rawstudio

>а это программа под маской

>как правильно снять маску на эту программу

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

По умолчанию используется стабильная ветвь ПО. Большое количество пакетов (версий) могут находиться в тестовой ветви. Это не означает, что эти пакеты ужасно нестабильные, отнюдь, вполне возможно, что они будут стабильно работать у вас 364 дня в году ;) Чтобы использовать такие пакеты, есть два варианта:

1. Можно перейти полностью на тестовую ветвь и иметь всегда последние версии ПО.

2. Либо можно комбинировать стабильную ветвь с некоторыми пакетами из тестовой.

В данном случае видим:

# eix rawstu

* media-gfx/rawstudio

     Available versions:  ~0.6 ~0.7

     Homepage:            http://rawstudio.org

     Description:         a program to read and manipulate raw images from digital cameras.


Обе версии пакетов замаскированы тильдой, т.е. относятся к тестовой ветви ПО. Снять такую маску можно прописав "категория/пакет ~x86" в /etc/portage/package.keywords, например:

media-gfx/rawstudio ~x86

(вместо ~x86 может быть ~amd64, либо **)


Второй случай: [M] - пакет заблокирован.

# eix kde-meta

* kde-base/kde-meta

     Available versions:

        (3.5)   3.5.8 ~3.5.9

        (kde-4) [M]~4.0.1 [M]~4.0.2


Здесь kde-4 помечен как находящийся в тестовой ветви (~), плюс к тому же заблокирован от использования (M), т.е. разработчики не рекомендуют пока его использовать - обязательно будут ошибки. Но если очень хочется... ;) то можно разблокировать, прописав "категория/пакет" в /etc/portage/package.unmask, например:

kde-base/kde-meta

(и в данном случае нужно будет также снять тильду, как описано выше).


Установка пакетов. Х'сы, DE.


Опишу свои личные соображения. Так как система будет использоваться на десктопе для повседневной работы, то обязательно понадобятся Х'сы, какое-то DE, различные кодеки и прочие приложения. Можно сказать "emerge gnome" или "emerge kde" и потом долго ковыряться в use-флагах нескольких сотен пакетов - а их будет много, ибо потянутся и Х'сы, а если повезёт, то захватятся и кодеки. Зато, если хватит сил, вся система будет установлена одной командой =)


Я же предпочитаю разбивать этот процесс на подпроцессы:

# emerge xorg-x11 - ставим только Х'сы, драйвер на видеокарту, добиваемся его работы и direct rendering'а.

# emerge ffmpeg imagemagick xine-lib mplayer - в каком порядке не особо важно, главное не одновременно (а то опять увязнете в сотне-другой зависимостей). После установки этих пакетов и всех нужных зависимостей, в системе будут стоять все необходимые видео/аудио кодеки, а также будет поддержка графических форматов. Здесь же может потянуться в зависимостях samba и cups.

И уже последним делом:

# emerge gnome (или kde-meta) - Гном, KDE, либо что вам там нравится.

Наблюдать за процессом установки можно в другой консоли, запустив:

tail -f /var/log/emerge.log


Надеюсь, эта информация помогла вам разобраться хоть в каких-то вопросах =)
Внимание! Этот пост не отменяет прочтение хендбука, так что вам теперь сюда: http://www.gentoo.org/doc/ru/handbook/


HandBook 2006.1 ru, HandBook 2007.0 en, Советы пользователям Gentoo