понедельник, 25 июля 2011 г.

Жизнь после установки


Здесь нет какого-то строго определённого плана действий, попробую набросать несколько советов. Неплохая идея сразу же проверить систему на бесхозные (ненужные) пакеты: # emerge -av --depclean. Также неплохая идея содержать систему в чистоте и после удаления пакетов подчищать за ними оставшиеся ненужные зависимости (всё тем же emerge -av --depclean). В конце в пункте 6 привожу листинг процесса, как он проходил у меня.

1. Обновить portage.

Этот шаг предстоит делать периодически (но не чаще чем раз в день). При этом обновляется дерево portage (добавляются новые пакеты, новые версии пакетов, удаляются старые).

# emerge --sync

Желающие экономить трафик, возможно захотят воспользоваться командой emerge-delta-webrsync из одноимённого пакета.


2. Пересобрать (обновить) system и мир.

При этом обновится большинство пакетов, уже установленных в системе (развёрнутых из stage3).

Для обновления читаем HOWTO Полное обновление системы, либо просто:
# emerge -epv world

Сразу же смотрим какие USE-флаги используются пакетами, с помощью ufed в другой консоли включаем нужные, отключаем ненужные.

После обновления пакетов:
# revdep-rebuild (входит в пакет gentoolkit)
и потребуется обновить много конфигурационных (и не только) файлов:
# dispath-conf (возможно входит в тот же gentoolkit)
Внимание! Всегда обновляем внимательно, смотрим что удаляет и что добавляет, и решаем, нужно нам это или нет.

3. Настройки.

# reboot

Если при загрузке выводит: "Warning: the current /etc/modules.conf has not been automatically generated" выполняем:
# update-modules force

Добавление ssh в автозагрузку:
# rc-update add sshd default

Добавление мыши для консоли в автозагрузку:
# nano /etc/conf.d/gpm
#MOUSE=ps2
MOUSE=imps2
# rc-update add gpm default

Установка elogv для чтения информации, выводимой пакетами во время установки:
# emerge elogv

Пакет для работы с portage:
# emerge eix
# update-eix

Управление частотой процессора, установка работы "по требованию" (для 2х-ядерного процессора с корректно настроенным ядром):
# nano /etc/conf.d/local.start
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

Установка acpid:
# emerge sys-power/acpid
# rc-update add acpid default

Настройка звука (при работающих драйверах в ядре):
# emerge media-sound/alsa-utils
# rc-update add alsasound boot (будет сохранять регяторы громкости при выключении компьютера и восстанавливать при включении)
# /etc/init.d/alsasound start
# alsamixer (снять "mute", настроить громкость)

4. Создание обычного пользователя.

Первое правило: не работать по root'ом. Во-первых, глупая опечатка может порушить систему. Во-вторых, уязвимое ПО, запущенное под root'ом может повлиять на безопасность всей системы (актуально и для Windows ;)). Под root'ом рекомендуется работать через sudo и su.

Создаём пользователя:
# useradd user -m -G users,audio,wheel
Где:
-m : создать home-директорию
-G : включить пользователя в перечисленные группы (users, audio, wheel)

Задаём ему пароль:
# passwd user

В /home появится папка с именем пользователя - его домашний каталог.

Второе правило: каждому пользователю - свой логин.

5. Полезная информация.

Некоторые ключи emerge.
# emerge <пакет> -ключи
-f - скачать все файлы, необходимые для установки пакета, но ничего не устанавливать.
-fp - вывести на экран ссылки на файлы, которые необходимо скачать для установки пакета.
-pv - просмотр плана установки пакета: какие будут использованы USE-флаги, какие пакеты будут ставиться по зависимостям.
-pvt - тоже самое, только список пакетов будет отображен в виде дерева, в котором можно увидеть какой пакет от какого зависит.
-pa - аналог pv, разница в том, что после вывода информации на экран, выдаётся запрос: начать установку - Yes/No?
-C - удалить пакет из системы.
-uDNvp - ключи для обновления мира - # emerge -uDNvp world

Про удаление пакетов.
# emerge -C удаляет пакет, но не удаляет пакеты, установленные по зависимостям к данному пакету. Они останутся в системе бесполезным мусором (если от них не зависит какой-нибудь другой пакет). Проверить систему на бесхозные пакеты можно так: # emerge -av --depclean
Проверить, нужен ли каждый пакет, список которых выведет emerge (зависит ли от него кто-нибудь) можно так:
# equery d <пакет>
Если он нужен, прописать его в world:
# emerge -n <пакет>

Про USE-флаги.
USE-флаги прописываются либо глобально в /etc/make.conf, либо для каждого пакета индивидуально в /etc/portage/package.use. Где их прописывать - дело ваше. Например, для mc необходима такая комбинация флагов: "-ncurses slang". Прописываем в package.use:
# echo "app-misc/mc -ncurses slang" >> /etc/portage/package.use
Для редактирования USE-флагов в make.conf используем ufed. Совсем необязательно пытаться сразу включить кучу, как вам может казаться, нужных флагов. Всему своё время: хотите поставить пакет, смотрите какие флаги пакетом могут использоваться, и решаете, что включать, а что нет. При включении какого-либо флага, к установке могут добавляться другие пакеты, тянущиеся по зависимости, и, в свою очередь, имеющие свой набор USE-флагов.

Про автозагрузку.
Сюда мы добавляли при установке: поднятие сети, старт syslog'a, gpm. Это не аналог меню "Автозагрузка" в Windows. Это скорее старт сервисов при загрузке всей системы. В каждой графической среде (Gnome, KDE, xfce, etc...) автозагрузка программ реализуется по-своему.
# rc-update -s - посмотреть список автозагрузки. rc-status - то же самое, кроме уровня "boot".
# rc-update add <программа> <уровень загрузки> - добавление.
# rc-update del <программа> <уровень загрузки> - удаление. Если не указан уровень, удаляется из всех, где присутствует.

6. Практический пример.

# emerge --sync

Сразу проверяю систему на бесхозные (ненужные) пакеты:
# emerge -av --depclean
Один пакет было предложено удалить, как не используемый никем (sys-libs/pwdb), удалил.

# emerge gentoolkit (сюда входит revdep-rebuild)
# revdep-rebuild (проверка целостности всех библиотек)
# emerge elogv (позволит прочитать сообщения после массовой установки пакетов)

Сразу хочу мышку в консоли:
Настроить конфиг: # nano /etc/conf.d/gpm
Запустить: # /etc/init.d/gpm start
Прописать в автозагрузку: # rc-update add gpm default

Предстоит пересборка system и world, хочу посмотреть все USE-флаги:
# emerge -epv world

На текущий момент USE-флаги в make.conf: USE="sse sse2 ssse3 -ipv6"
Содержимое /etc/portage/package.use:
# не нужно нам поддержку java (gcj) и gtk-шной морды для неё (gtk)
sys-devel/gcc -gcj -gtk
# по-умолчанию используется ncurses, думаю slang помешает
app-editors/nano -slang -spell

Добавление sshd в автозагрузку *если нужно*:
# rc-update add sshd default

Список всех компиляторов (просто интересно):
# gcc-config -l
[1] i686-pc-linux-gnu-4.1.1 *

Пересборка toolchain:
# emerge linux-headers glibc binutils gcc-config gcc --oneshot

* IMPORTANT: 1 config files in '/etc' need updating.

Обновление конфигов: # dispatch-conf

Список всех компиляторов:
# gcc-config -l
[1] i686-pc-linux-gnu-4.1.2 *

# source /etc/profile (по ходу установки это советуют сделать binutils и gcc)
# elogv (посмотреть сообщения пакетов, к сожалению про "source /etc/profile" там ни слова, и как это побороть я не знаю)

Повторная пересборка с созданием бинарных пакетов (каталог packages должен быть пуст):
# emerge linux-headers glibc binutils gcc-config gcc portage --oneshot -b

# source /etc/profile

Пересборка system с использованием уже собранных бинарных пакетов:
# emerge -ebk system (97 пакетов)

* IMPORTANT: 16 config files in '/etc' need updating.

# dispatch-conf

Пересборка world:
# emerge -ebk world
(не понимаю, почему нельзя было выполнить это сразу, ведь system входит в world и будет опять пересобираться, разве что пакеты будут браться из бинарников, для ускорения процесса. Но не вижу смысла делать сначала emerge -e system, а следом emerge -e world)

* IMPORTANT: 1 config files in '/etc' need updating.

# dispatch-conf
# source /etc/profile

# emerge eix
# update-eix

# cat /proc/cpuinfo
# echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Управление частотой процессора, установка работы "по требованию":
# nano /etc/conf.d/local.start
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

# reboot

* Warning: the current /etc/modprobe.conf has not been automatically generated
* Use "update-modules force" to force (re)generation

# update-modules force
# reboot





Совет: Не стоит выбирать профиль "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
>там появились строки..красного, синего и желтого цвета...что это все означает?

Пример вывода emerge -uDNvp world у меня:


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

Например, на рисунке:
[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.
Полезный пакет:
# 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".


Установка пакетов. Х'сы, 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/

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

Отправить комментарий