вторник, 28 июля 2009 г.

Минимизация установленного ПО Solaris

Очень часто приходится выполнять установку Солярис не в минимальном варианте, а устанавливая Entire Distribution (многие прикладные системы требуют полную установку - например, Oracle).

Разумеется, можно поступить брутально, установить метакластер Minimal with network support и, после этого, вручную доустановить все необходимые пакеты. Однако это долго, хлопотно, и требуется знать назубок все зависимости пакетов.

Значительно проще выполнить установку метакластера SUNWCall, а затем удалить из нее то, что не является безусловно необходимым.

Зачем нужно выполнять удаление неиспользуемых пакетов?

Прежде всего, для безопасности.

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

Дополнительное удобство - обновления и патчи будут устанавливаться в значительно меньшем количестве, что сильно упрощает задачи обслуживания сервера.

Ну и, главное - есть пакеты и компоненты, которым на сервере делать безусловно нечего. Например, почтовые клиенты и браузеры (для серверных задач есть WGET, офисные продукты, устаревшие компоненты - UUCP/NIS итп.

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

Однако тут начинаются сложности. Удалять по одному пакету несколько десятков компонентов - неудобно. Далеко не во всех случаях установка выполняется посредством JumpStart, в профиле которого можно удалить необходимые пакеты еще до их установки. Медитация над программой интерактивной установки тоже не витамин.

Соответственно, ввиду того, что подобные задачи приходится выполнять достаточно часто, пришлось написать пакет для списочного удаления (минимизации) пакетов Солярис.

Пакет достаточно прост и был написан с таким расчетом, чтобы его можно было использовать с различными списками (их можно задавать из командной строки), в качестве постинсталляционного скрипта JumpStart и т.п.

Минимизационный список по умолчанию рассчитан на установку метакластера SUNWCall и последующего жесткого удаления ПО, не требуемого на бастионной машине, подключенной к Internet. Список подобран для сборки Oracle, но без всяких излишеств.

Вы можете использовать собственные списки минимизации, которые технически представляют из себя просто текстовые файлы с последовательным списком имен пакетоув ( в одну колонку без разделителя) и указывать их из командной строки главного скрипта.

ВНИМАНИЕ! Я категорически советую подходить к формированию минимизационных списков осмотрительно и вдумчиво. Избегая и паранойи и минимизационной истерии. Необдуманный вынос пакетов, требуемых для работы ядра, может привести систему в незагружаемое состояние. Причем, что важно, обновление Солярис не возвращает удаленные пакеты на место, а обновляет лишь те, которые физически установлены на машине в момент обновления. Список, входящий в состав пакета, подобным опасным действием не обладает.

В частности, не стоит удалять поддержку FC (это важный депендент ядра) и DTrace.

В любом случае, при составлении собственных списков минимизации, рекомендую сначала изучить зависимости пакетов, которые Вы планируете удалять, утилитой pkginfo.

Что делать, если Вы ошибочно удалили нужный пакет?

Не паниковать. Запуск с внешнего носителя, монтирование пострадавшей системы и добавление пакета утилитой pkgadd c дистрибутивного имиджа спасет гиганта мысли.

Удачных вам минимизаций!