Ссылка на оригинал: http://gentoo.blog.ru/6345603.html#comments
C версии: 1.5
Автор: gentoo
Пост навеян аськой (да, я гентушник, и я не пользуюсь джаббером)), а точнее до боли знакомой фразой "привет! я читал твой блог! Есть вопрос!")) Нет, я совсем не против новых знакомств, у самого когда-то была туча вопросов, и спасибо всем тем, кто терпеливо отвечал и помогал мне в своё время во всём разобраться ;) Но на одних подсказках далеко не уедешь, нужно (нужно!) читать хендбук (благо он на русском) и другие материалы. Хотя по себе знаю, что решения возникшей проблемы всегда хочется "здесь и сейчас", а стоит открыть хендбук и увидеть СКОЛЬКО много там букв, как уже всякое желание читать пропадает)) Напишу здесь ещё несколько советов, которые могут помочь сориентироваться новичкам, может где-то повторюсь, неважно.
Итак, предположим, вы удачно установили систему и загрузились в неё. Может быть вы уже обновили дерево портежей (по 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. Рекомендуется использовать вторую команду, как более мощную, а при соответствующей настройке, умеющую сохранять историю изменений. В любом случае здесь рекомендуется включать мозг и внимательно изучать, какие строчки будут удалены, а какие - добавлены. Если обновляется какой-либо конфиг, где вы вносили свои корректировки, они могут быть предложены к удалению - поэтому нужно быть внимательным (сам по-первости попался - обновил конфиги не глядя, а потом удивлялся, почему настройки, которые я терпеливо прописывал в несколько файлов вдруг заменились на дефолтные).
>с флагами я не совсем разобрался... зачем их прописывать, если проги и без них поставятся?
Предположим, ставим мы с тобой 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, различные кодеки и прочие приложения. Можно сказать "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