Saturday, December 26, 2009

Минимальная установка CentOS 5.4

Минимальная штатная установка CentOS-5.4 получается когда при инсталляции снимаются отметки напротив всех разделов в окне Package Selection (текстовый инсталлятор) и, не забывая выбрать опцию Customize software selection, отключаются все группы пакетов в окне Package Group Selection.
Всего при этом устанавливается ~192 пакета, однако даже среди них не все являются необходимыми для работы сервера на котором не требуется наличие графической оболочки.

Вот список пакетов которые были удаелны (слева) и добавлены (справа) в процессе последующей настройки сервера:
atk
bitstream-vera-fonts
                    bzip2
cairo
cups-libs
dhcpv6-client
ecryptfs-utils-75
fontconfig
freetype
gnu-efi
                    gpg-pubkey-e8562897-459f07a4
                    gpm
                    groff
gtk2
hicolor-icon-theme
iptables-ipv6
libjpeg-6b
libpng
libtiff
libX11
libXau
libXcursor
libXdmcp
libXext
libXfixes
libXft
libXi
libXinerama
libXrandr
libXrender
                    lsof
                    man
pango
rhpl
trousers
                    vsftpd
wireless-tools-28
xorg-x11-filesystem

Вообще удивляет наличие таких пакетов как TrueType шрифты bitstream-vera-fonts, fontconfig и freetype, множество иксовых библиотек (все libX*, ), gtk2, иконок hicolor-icon-theme, wireless-tools-28 в минимальной установке сервера предназначенного исключительно для работы в текстовом режиме. Как и зачем они попадают в инсталляцию и что думают по этому поводу те, кто их прописывал для установки не понятно, как не понятно и дефолтное отсутствие man, хотя все пакеты исправно устанвливают свои ман-страницы. Наверное ни один нормальный человек не сможет на память пользоваться всеми нужными ключами команд, которые могут понадобиться во время настройки и работы.

Удалённые пакеты все вместе с друг-дружкой деинсталлируются без нарушения зависимостей, кроме пакета iptables-ipv6, который требуется для утилиты конфигурации system-config-securitylevel-tui (текстовый вариант гномовской панели управления system-config-securitylevel) для настройки selinux и фаервола.

system-config-securitylevel-tui обеспечивает настройку только базового функционала файрвола сохраняя свои данные в файле /etc/sysconfig/system-config-securitylevel) и перезаписывает вручную внесённые настройки iptables. Так что этой утилитой лучше либо не пользоваться совсем либо пользоваться только ей. Формальное отсутствие пакета из зависимости не как не сказывается на её работе, тем более что IPv6 в системе всё равно отключен.

Как отключить поддержку IPv6 сказано в вики CentOS FAQ:
http://wiki.centos.org/FAQ/CentOS5#head-47912ebdae3b5ac10ff76053ef057c366b421dc4
Сперва требуется Установить опцию "NETWORKING_IPV6=no" в /etc/sysconfig/network (по умолчанию в инсталляции это так и есть). Далее если сделать как сказано для 5.4 и прописать в /etc/modprobe.d/disable-ipv6 строчку "options ipv6 disable=1", то модуль ядра ipv6 всё-равно будет загружаться. Поэтому если в системе не устанавливается демон iSCSI-инициатора для которого он нужен, можно добавить также строчку "install ipv6 /bin/true" что предотвратит загрузку модуля ipv6, а также добавить сточку "install ip6_tables /bin/true" чтобы предотвратить загрузку этого модуля ядра в случае использования system-config-securitylevel-tui (он загружается этой утилитой при сохранении настроек).

Приведённый список был получен сравнением отсортированных данных из файла /root/install.log и вывода команды rpm -qa с помощью утилиты comm -3. Кандидаты на удаление выбирались по назначению (например, избавиться от ненужных пакетов поддержки IPv6), а также большинство из удаляемых пакетов было найдено при просмотре списка пакетов, деинсталляция которых не приводит к нарушению каких-либо зависимостей для других пакетов. Перечень таких пакетов теоретически доступных для безопасного удаления не приводящего к нарушению зависимостей можно получить по команде:
for p in $(rpm -qa); do [[ $(rpm -q --whatrequires "$p" ) == "no package"* ]] && echo "$p" >>no_package_requires; done
for p in $(rpm -qa | sed 's/-[0-9]\+.*$//'); do [[ $(rpm -q --whatrequires "$p" ) == "no package"* ]] && echo "$p" >>no_package_requires; done
В общем случае посторение и просмотр этого списка требуется повторить пару раз т.к. после деинсталляции некоторых пакетов теоретически могут появиться новые доступные для удаления ненужные пакеты от которых ранее существовали зависимости.

No comments:

Post a Comment