учебники, программирование, основы, введение в,

 

Настройка ядра ОС, установка программ и обновлений

Что настраивать в ядре?
Ядро состоит из статической части и динамической части (модулей). Кроме того, в ядре располагаются многочисленные таблицы, размер которых задается параметрами ядра. Фактически, настройка ядра сводится к следующим задачам:

  1. определение (или переопределение) параметров ядра (например, числа доступных семафоров в ядре);
  2. принудительное добавление указанных модулей в ядро;
  3. принудительное запрещение загрузки указанных модулей.

Частным случаем задачи (2) является добавление и настройка драйверов устройств.
Сейчас мы рассмотрим, как именно следует выполнять эти задачи, включая те или иные команды в файл конфигурации ядра /etc/system.
Изменение файла /etc/system
Конфигурация ядра Solaris, которая определяет технические параметры системы, может быть изменена в файле /etc/system. Файл содержит настройки ядра, отличные от принятых по умолчанию. Этот файл используется при загрузке системы. Изменения, внесенные в /etc/system, оказывают действие на конфигурацию ядра после перезагрузки.
Помните, что перед внесением изменений в любой файл конфигурации следует сделать его резервную копию - про запас.
Файл /etc/system содержит команды, которые представляют собой список пар имя=значение. Строки комментариев начинаются с символа "*" (звездочка) или "#" (решетка). Все команды, за специально оговариваемыми исключениями, можно давать в любом регистре как строчными, так и заглавными буквами. Длина команды не должна превышать 80 символов.
В командах перед именем параметра указывается пространство имен модуля, к которому относится параметр, например, semsys для изменения параметров подсистемы семафоров в приведенном ниже примере:
set semsys:seminfo_semmni=100
Следующие пространства имен являются общими для всех платформ под Solaris:

  • drv - драйверы устройств;
  • exec - модули поддержки разных форматов исполняемых файлов, а именно:
    • aoutexec - модуль только для SPARC;
    • coffexec - модуль только для Intel;

для обеих платформ:

    • elfexec
    • intpexec
    • javaexec
  • fs - модули этого пространства имен - это драйверы файловых систем;
  • sched - реализация алгоритма планировщика задач;
  • strmod - модули STREAMS;
  • sys - модули исполнения системных вызовов;
  • misc - другие модули, не попавшие в указанные выше категории.

Только для платформы SPARC реализованы модули:

  • dacf - модули автонастройки устройств;
  • cpu - модули процедур ядра, связанных с конкретными процессорами.

Фактически, каждое пространство имен представляет собой каталог, в котором находится тот или иной модуль, например, модуль ipc находится в пространстве имен misc и располагается в каталоге /kernel/misc. Загрузка такого модуля выполняется командой
modload misc/ipc
В файле /etc/system допустимы следующие команды:

  • exclude: <namespace>/<modulename> - запрет загрузки модуля;
  • include: <namespace>/<modulename> - разрешение загрузки модуля, любые модули по умолчанию разрешено загружать;
  • forceload: <namespace>/<modulename> - требовать загрузки модуля при инициализации ядра, в отличие от принятой по умолчанию загрузки по мере необходимости;
  • rootdev: <device name> - установить иное устройство для загрузки, чтобы изменить принятое по умолчанию при загрузке или установленное командой boot среды OpenBoot;
  • rootfs: <root filesystem type> - указать тип файловой системы загрузочного устройства;
  • moddir: <first module path>[[{:, }"second ...>]...] - установить список каталогов, в которых следует искать модули для загрузки;
  • set [<module>:]<symbol> {=, |, &} [~][-]<value> - установить параметр ядра в указанное значение; если параметр относится к конкретному модулю, в команде следует указать явно этот модуль (см. выше пример с установкой параметров семафоров в ядре).

Некоторые настраиваемые параметры ядра
Здесь мы рассмотрим параметры, влияющие на максимальное количество процессов, которые можно запустить в системе, и на максимальное количество процессов, которые может запустить один пользователь.
Основным параметром является maxusers, который влияет на значения параметров max_nprocs и maxuprc.
Параметр maxusers в прошлом определял максимальное разрешенное количество одновременно работающих в системе пользователей. Размер многих таблиц в ядре вычислялся с использованием этого параметра. В настоящее время старое значение этого параметра утратило смысл, но некоторые параметры ядра продолжают базироваться на maxusers. Это максимально допустимое количество процессов в системе, размер структур квотирования в системе и размер кэша имен каталогов (directory name lookup cache - DNLC). По умолчанию maxusers равно меньшему из двух чисел - объему памяти системы в мегабайтах или 2048. Может принимать любое значение от 1 до 2048, при явной установке в /etc/system - от 1 до 4096, но следует указывать разумные значения. Значение maxusers явно мало, если система выдает сообщения
out of processes
Значение maxusers по умолчанию скорее всего будет велико для систем с малым количеством запущенных процессов и большим объемом памяти - серверов баз данных, вычислительных серверов и т.п.
Еще одним важным параметром является max_nprocs: он ограничивает максимальное количество процессов, которые можно одновременно запустить в системе. Влияет на вычисление значения maxuprc. Кроме того, значение max_nprocs влияет на:

  • вычисление размеров кэша имен каталогов (DNLC);
  • резервирование структур, обеспечивающих квотирование дискового пространства (если не указано явно значение ndquot);
  • проверку того, что объем памяти, занятый под семафоры, не превышает системных ограничений;
  • настройку подсистемы Hardware Address Translation для систем x86 и sun4m.

Значение max_nprocs по умолчанию - 10 + (16 x maxusers), диапазон значений - от 266 до максимально возможного идентификатора процесса (maxpid). Изменение этого параметра понадобится, если потребуется запускать более 30 000 процессов одновременно.
Кроме ограничения на общее количество одновременно запущенных процессов, существует ограничение на количество процессов, запускаемых одним пользователем. Это количество контролируется параметром maxuprc.
По умолчанию этот параметр равен разности max_nprocs и reserved_procs, где reserved_procs - это параметр, отвечающий за резервирование некоторого количества идентификаторов процессов для пользователя root (даже если вся таблица процессов заполнена процессами пользователей, для процессов root оставляется резерв строк в этой таблице). По умолчанию reserved_procs устанавливается равным 5.
Количество процессов, которое имеет право запустить один пользователь, можно только уменьшить - сделать его большим, чем max_nprocs - reserved_procs, нельзя.
Превышение пользователем ограничения, установленного параметром maxuprc, приводит к выдаче сообщения
out of per-user processes for uid N
Для более детального изучения параметров ядра, доступных для настройки, имеет смысл ознакомиться с Solaris Tunable Reference Manual, размещенным на docs.sun.com.


Загрузка модулей
Некоторые полезные модули, если они не требуются для выполняемых системой задач, могут не загружаться в начале работы системы. Для того чтобы обеспечить их загрузку, следует использовать вышеупомянутые настройки в /etc/system. Если требуется загрузить модуль во время работы системы, не перегружая ее, воспользуйтесь командой modload.
Предположим, нам потребовалось проверить количество семафоров в ядре и мы обнаружили, что модуль, отвечающий за семафоры, не загружен:
sysdef | tail -20

*
* Streams Tunables
*
9 maximum number of pushes allowed (NSTRPUSH)
65536 maximum stream message size (STRMSGSZ)
1024 max size of ctl part of message (STRCTLSZ)
*
* IPC Messages module is not loaded
*
*
* IPC Semaphores module is not loaded
*
*
* IPC Shared Memory module is not loaded
*
*
* Time Sharing Scheduler Tunables
*
60   maximum time sharing user priority (TSMAXUPRI)
SYS   system class name (SYS_NAME)
Стандартные модули располагаются в подкаталогах каталога /kernel:
ls -l /kernel

total 2856
drwxr-xr-x  2 root  sys 512    Мар 17 10:42   dacf
drwxr-xr-x  2 root  sys        3072    Мар 17 11:16   drv
drwxr-xr-x  2 root  sys        512     Мар 17 11:10   exec
drwxr-xr-x  2 root  sys        512     Мар 17 10:52   fs
-rwxr-xr-x  1 root  sys        1438036 Ноя 4  2002    genunix
drwxr-xr-x  2 root  sys        512     Мар 17 11:07   ipp
drwxr-xr-x  2 root  sys        512     Мар 17 10:50   mach
drwxr-xr-x  3 root  sys        1024    Мар 17 11:07   misc
drwxr-xr-x  2 root  sys        512     Мар 17 10:43   sched
drwxr-xr-x  2 root  sys        1024    Мар 17 10:53   strmod
drwxr-xr-x  2 root  sys        512     Мар 17 10:49   sys
Загружаем модуль командой
modload /kernel/misc/ipc
Теперь он загружен и будет отображаться программами мониторинга:
modinfo | grep ipc
146 feab6fb2  332  -  1 ipc (common ipc code)
sysdef | tail -28
*
* IPC   Messages
*
2048 max message size (MSGMAX)
4096 max bytes on queue (MSGMNB)
50   message queue identifiers (MSGMNI)
40   system message headers (MSGTQL)
*
* IPC Semaphores
*
100 semaphore identifiers (SEMMNI)
60   semaphores in system (SEMMNS)
30   undo structures in system (SEMMNU)
25   max semaphores per id (SEMMSL)
100 max operations per semop call (SEMOPM)
10   max undo entries per process (SEMUME)
32767       semaphore maximum value (SEMVMX)
16384       adjust on exit max value (SEMAEM)
*
* IPC Shared Memory
*
8388608     max shared memory segment size (SHMMAX)
100 shared memory identifiers (SHMMNI)
*
* Time Sharing Scheduler Tunables
*      
60   maximum time sharing user priority (TSMAXUPRI)
SYS  system class name (SYS_NAME)
Для выгрузки модуля следует дать команду modunload:
modunload ipc 
usage: modunload -i <module_id> [-e <exec_file>]
modunload -i 146
can't unload the module: Device busy
Если модуль чем-то занят, или его ресурс кем-то использовался ранее и блокировка не снята, удалить модуль не удастся.
Изменим файл /etc/system:
set semsys:seminfo_semmni=101
set semsys:seminfo_semopm=101
После перезагрузки картина будет иной, но модуль ipc придется загрузить вручную, так как он относится к модулям, которые загружаются по запросу:
modload misc/ipc
sysdef
*
* IPC Semaphores
*
101     semaphore identifiers (SEMMNI)
60      semaphores in system (SEMMNS)
30      undo structures in system (SEMMNU)
25      max semaphores per id (SEMMSL)
101     max operations per semop call (SEMOPM)
10      max undo entries per process (SEMUME)
32767   semaphore maximum value (SEMVMX)
16384   adjust on exit max value (SEMAEM)
*
Вывод sysdef в этом примере сильно сокращен.

Подключение нового оборудования

Задача подключения нового оборудования сводится к двум шагам: загрузке соответствующего драйвера нового устройства в ядро и созданию файла устройства в каталоге /dev. Это справедливо для всех систем UNIX. В Solaris все немного сложнее: как уже говорилось, сначала надо создать файл устройства в /devices, а затем - соответствующие символические ссылки на него в /dev.
К счастью, эти задачи можно решать автоматизированно: в Solaris есть утилита devfsadm, которая автоматически распознает вновь подключенные устройства и создает необходимые файлы в /devices и /dev.
Для получения информации об уже установленных устройствах следует пользоваться программами prtconf, sysdef и dmesg.
Программа prtconf выдает информацию о конфигурации системы в том виде, в котором она иерархически представлена в системе; с помощью prtconf можно выяснить, "увидела" ли система то или иное устройство.
Программа sysdef дает больше информации о системе, она выводит не только список аппаратуры в системе, но и перечень псевдоустройств и загруженных модулей, параметры ядра, информацию о разделяемой памяти, семафорах и т.п.
Программа dmesg выдает сообщения из файла протокола и список устройств, обнаруженных при последней перезагрузке системы. Эти сообщения можно также посмотреть в файле /var/adm/messages.
При загрузке ядро системы в состоянии выполнить автоматическую самонастройку, определяя, какие именно устройства подключены к системе. Если вы подключили любое новое устройство к компьютеру (например, новый накопитель), и оно в настоящее время не видно ядру, следует создать файл /reconfigure и перезапустить систему:

touch reconfigure; reboot

После перезагрузки система увидит новое устройство, если только оно вообще поддерживается данной версией системы.
Вместо создания файла /reconfigure и перезапуска допустимо при загрузке системы дать команду из строки начального загрузчика:

boot -r

Этот способ менее предпочтителен, потому что не позволяет запланировать перезапуск на более поздний срок и требует интерактивного вмешательства администратора.
Начиная с версии Solaris 8 можно добавлять и удалять устройства из системы без ее перезагрузки, для этого служит утилита devfsadm. Ее можно запускать интерактивно, но если запущен демон автоконфигурации devfsadmd, то в этом нет надобности - изменения будут сделаны автоматически. Программы devfsadm и devfsadmd работают с файлом /etc/path_to_inst, в котором находится список устройств в системе. При добавлении новых устройств записи в файле не перенумеруются - к старым посто добавляются новые.
В случае, если файл /etc/path_to_inst был удален или неверно отредактирован, система не сможет загрузиться. В этом случае можно загрузиться с CD-ROM и переписать файл с дистрибутивного диска.
Еще одним важным файлом в контексте разговора об устройствах в Solaris является файл /etc/name_to_major, который служит для отображения имен устройств в major номера файлов устройств; этот файл создается при формировании содержимого каталога /devices, например, при работе devfsadmd.

Компиляция, установка пакетов, управление пакетами, применение пакетов обновлений

Существует несколько способов установить программу или пакет программ в UNIX. Выбор способа зависит от того, в каком виде доступен пакет программ, который вам требуется. Если пакет доступен только в виде набора исполняемых файлов, уже скомпилированных для вашей платформы, то выбор невелик: придется устанавливать то, что имеется.
Например, требуется найти более наглядное средство наблюдения за процессами, чем ps. На sunfreeware.com ищем top и загружаем его на свой компьютер. Если прямо с sunfreeware его получить не удается, набираем имя файла top-3.5-sol9-intel-local.gz в строке поиска Google и получаем достаточное количество ссылок на ftp-серверы, где он лежит. Такое бывает часто: сервер sunfreeware перегружен и не всегда готов принять посетителя.
Теперь распаковываем подарочек...

gunzip top-3.5-sol9-intel-local.gz 

и в нашем распоряжении оказывается файл пакета. Надо указать команде pkgadd, что именно отсюда мы будем пакет устанавливать:

pkgadd -d top-3.5-sol9-intel-local
The following packages are available:
   1 SMCtop            top
                  (intel) 3.5
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: y
 
ERROR: Entry does not match available menu selection. Enter the
number of the menu item you wish to select, or the token which is
associated with the menu item, or a partial string which uniquely
identifies the token for the menu item. 
Enter ?? to reprint the menu.
 
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all

Ошибка (сообщение ERROR в 6-й строке листинга) вызвана тем, что мы поторопились ввести y в ответ на вопрос: привычка сказывается. Честно напишем all, чтобы установить все программы, которые доступны в пакете. После этого получаем:

Processing package instance <SMCtop> from
</export/home/top-3.5-sol9-intel-local>
 
top
(intel) 3.5
William LeFebvre
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
   4 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
The following files are being installed with setuid and/or setgid
permissions:
   /usr/local/bin/top <setgid sys>
 
Наконец вопрос, на который как раз следует ответить утвердительно:
 
Do you want to install these as setuid/setgid files [y,n,?,q] y
Installing top as <SMCtop>
## Installing part 1 of 1.
/usr/local/bin/top
/usr
/usr/local/doc/top/Changes
/usr/local/doc/top/FAQ
/usr/local/doc/top/INSTALL
/usr/local/doc/top/Porting
/usr/local/doc/top/README
/usr/local/doc/top/SYNOPSIS
/usr/local/man/man1/top.1
[ verifying class <none> ]
Installation of <SMCtop> was successful.

Проверить, удачно ли установился пакет, можно командой

pkginfo | grep top
application SMCtop     top
system  SUNWdtcor      Solaris Desktop /usr/dt filesystem anchor
system  SUNWdtdst      CDE Desktop Applications
system  SUNWdtdte      Solaris Desktop Login Environment
system  SUNWdtezt      Solaris Desktop Extensions Applications
system  SUNWdthez      Desktop Power Pack Help Volumes
system  SUNWdtlog      System boot for Desktop Login
system  SUNWdtmaz      Desktop Power Pack man pages
system  SUNWeuodf      UTF-8 Core OPENLOOK Desktop Files
system  SUNWsadmi      Solstice Enterprise Agents 1.0.3 Desktop 
   Management Interface

Как видно, пакетов, в названиях которых имеется подстрока top, установлено немало, и тот, которым занимались мы, - на самом первом месте.
Удалить пакет можно командой pkgrm, например, pkgrm SMCtop.
Иногда бывает необходимо не просто установить пакет, который получен в виде набора исполняемых файлов и документации, а собрать его из исходных текстов. В этом случае надо следовать инструкциям по установке, которые обычно находятся в файлах README и INSTALL дистрибутива пакета. В любом случае вам понадобится программа make (поставляется в комплекте с Solaris) и компилятор языка С (не поставляется).
Коммерческая версия компилятора С фирмы Sun не поставляется с бесплатным набором компакт-дисков дистрибутива Solaris. Его надо покупать отдельно, это можно сделать со страницы http://wwws.sun.com/software/sundev/suncc/buy/index.html.
Компания Sun предоставляет возможность использовать ее компилятор С в течение 60 дней бесплатно. Для этого с той же страницы надо загрузить trial-версию. Она является полнофункциональной - просто при установке следует выбрать вариант установки trial, и временный серийный номер продукта будет сгенерирован автоматически.
Кроме коммерческого компилятора можно работать с бесплатной версией GNU C под Solaris. Ее можно получить с www.sunfreeware.com или найти через центральный портал проекта GNU gnu.org. GNU C можно загрузить в виде пакета gcc.
Загрузим файл gcc_small-3.3.2-sol9-intel-local.gz и установим пакет gcc для того, чтобы иметь возможность компилировать программы из исходных текстов:

pkgadd gcc_small-3.3.2-sol9-intel-local.gz 
pkgadd: ERROR: no packages were found in </var/spool/pkg>

Ошибка: файл пакета сжат, ему требуется декомпрессия, кроме того, имя файла пакета надо указывать с ключом d:

gunzip gcc_small-3.3.2-sol9-intel-local.gz
ls
gcc_small-3.3.2-sol9-intel-local
pkgadd -d gcc_small-3.3.2-sol9-intel-local
The following packages are available:
   1 SMCgcc            gcc
                  (intel) 3.3.2
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: 

Далее действуем, как в предыдущем примере.
Если необходимо, то можно получить довольно много бесплатного программного обеспечения под Solaris со страницы http://www.sun.com/bigadmin/features/articles/x86_desktop.html.
Затем его можно установить вышеописанным образом.
При установке программ из исходных текстов, следует руководствоваться инструкциями из файлов README и INSTALL, которые присутствуют в дистрибутиве наряду с исходными текстами.


Проверка содержимого пакетов и перечня установленного ПО
Чтобы узнать, какие пакеты уже установленны в системе, а также узнать подробную информацию по каждому из этих пакетов, следует пользоваться программой pkginfo:
pkginfo
application    SMCtop top
system SUNW1251f      Russian 1251 fonts
ALE     SUNW5ttf       Traditional Chinese BIG5 True Type
Fonts Package
ALE     SUNW5xmft      Traditional Chinese (BIG5) X Window
s Platform minimum required Fonts Package
system SUNWGlib       GLIB - Library of useful routines f
or C programming
system SUNWGtkr       GTK - The GIMP Toolkit (Root)
system SUNWGtku       GTK - The GIMP Toolkit (Usr)
system SUNWTcl        Tcl - Tool Command Language
system SUNWTiff       libtiff - library for reading and w
pkginfo -l SMCtop
PKGINST:    SMCtop
NAME:       top
CATEGORY:   application
ARCH:       intel
VERSION:    3.5
BASEDIR:    /usr/local
VENDOR:     William LeFebvre
PSTAMP:     Steve Christensen
INSTDATE:   Апр 21 2004 14:47
EMAIL:      steve@smc.vnet.net
STATUS:     completely installed
FILES:              13      installed pathnames
4     shared pathnames
5     directories
1     executables
1     setuid/setgid executables
258   blocks used (approx)
Проверка пакетов ПО с помощью pkgchk
Чтобы узнать, изменялись ли файлы установленных пакетов с момента их установки, используйте pkgchk:
bash-2.05# pkgchk SMCtop
bash-2.05#
Как видим, сообщений от pkgchk не последовало. Отсутствие новостей - лучшие новости. Если программа pkgchk не выдала сообщений, стало быть, проблем нет.
Можно проверить, изменилось ли содержимое файла пакета с момента его установки:
pkgchk -p /etc/shadow
ERROR: /etc/shadow
modtime <11/04/02 01:06:28 > expected
<03/18/04 05:05:29 > actual
file size <253> expected <298> actual
file cksum <17353> expected <20785> actual
Файл изменился с момента установки системы. Это естественно: ведь мы добавили новых пользователей и назначили им пароли.
Для более подробной информации можно использовать ключ l:
pkgchk -l -p /etc/shadow
Pathname: /etc/shadow
Type: editted file
Expected mode: 0400
Expected owner: root
Expected group: sys
Referenced by the following packages:
SUNWcsr   
Current status: installed
База данных установленных пакетов
Информация об установленных пакетах сохраняется в файле /var/sadm/install/contents.
Можно просмотреть его содержимое для изучения того, что именно и куда было установлено при инсталляции пакета. Программа pkgrm использует содержимое этого файла для удаления пакета. Например, можно увидеть, какие файлы и с какими правами были созданы в результате установки пакета top. Кстати, если имя пакета начинается на SUNW, это значит, что пакет создан компанией Sun Microsystems, а если начало имени пакета иное - то это продукт третьей фирмы. Как видите, последнее относится и к программе top - ведь ее пакет называется SMCtop.
more /var/sadm/install/contents | grep SMCtop 
/usr/local/bin d none 0755 root bin SMCgcc SMCtop
/usr/local/bin/top f none 2711 root sys 47348 46603
1081404717 SMCtop
/usr/local/doc d none 0755 root bin SMCgcc SMCtop
/usr/local/doc/top d none 0755 root bin SMCtop
/usr/local/doc/top/Changes f none 0644 root bin 30674
28431 1081404751 SMCtop
/usr/local/doc/top/FAQ f none 0644 root bin 15167 37360
1081404751 SMCtop
/usr/local/doc/top/INSTALL f none 0644 root bin 7460 472
1081404751 SMCtop
/usr/local/doc/top/Porting f none 0644 root bin 7058
38204 1081404751 SMCtop
/usr/local/doc/top/README f none 0644 root bin 7958 47937
1081404751 SMCtop
/usr/local/doc/top/SYNOPSIS f none 0644 root bin 2109
45452 1081404751 SMCtop
/usr/local/man d none 0755 root bin SMCgcc SMCtop
/usr/local/man/man1 d none 0755 root bin SMCgcc SMCtop
/usr/local/man/man1/top.1 f none 0644 root bin 12736 8086
1081404723 SMCtop
Поскольку в файле /var/sadm/install/contents указано, в какой каталог установлена программа, можно искать в нем нужную программу, чтобы понять, в какой каталог она установлена (если установлена вообще).

Установка обновлений

Обновления пакетов программ (например, bind) или операционной системы в целом выходят, когда в существующем ПО нашли брешь с точки зрения безопасности или неверный код, либо для того чтобы при необходимости дополнить функциональность программы (системы). Обновление может представлять собой "заплатку" - т.е. кусочек измененного исходного текста, файла конфигурации или кода - которую следует "наложить на ПО". При этом в ПО, требующее изменения, вносятся те коррективы, которые описаны в файле-заплатке. Кроме того, речь может идти о полноценном обновлении, когда один файл просто заменяется другим.
Для работы с обновлениями и заплатками в Solaris предусмотрен ряд программ: patch, gpatch, patchadd, patchrm, smpatch.
Можно также устанавливать обновления системы с помощью Solaris Management Console. Это делается через пункт "Patches" (подробности см. в лекции 26).
Для того чтобы узнать точно версию вашей системы Solaris и получить информацию обо всех установленных обновлениях системы, следует использовать команду showrev:

showrev -a
Hostname: sola
Hostid: 284521a
Release: 5.9
Kernel architecture: i86pc
Aplication architecture: i386
Hardware provider:
Domain:
Kernel version: SunOS 5.9 Generic_112234-03 November 2002
 
OpenWindows version:
Solaris X11 Version 6.6.1 16 October 2002
No patches are installed

Для изменения текстовых файлов (например, исходных текстов программ или файлов конфигураций) можно применять программу patch. Для ее работы нужно два файла: исходный текстовый файл, подлежащий изменению, и файл заплатки (patch-файл). Файл заплатки обычно имеет формат вывода программы diff, но patch понимает также формат скрипта редактора ed или контекстный вывод diff. Контекстным называется формат вывода, когда в файле различий, создаваемом diff, приводятся не только те строки файлов, которые отличаются друг от друга, но и контекст, в котором они появились (по три строки сверху и снизу от них). Типичный файл заплатки для исходного текста или файла конфигурации выглядит так:

cat system.patch
--- system             Mon May 17 02:15:34 2004
+++ system.new Tue Jun 22 10:50:48 2004 @@ -76,6 +76,6 @@
 *
 *      set test_module:debug = 0x13
-set semsys:seminfo_semmni=100
+set semsys:seminfo_semmni=110
 set semsys:seminfo_semopm=100

Этот файл заплатки system.patch можно "приложить" к старому файлу system для того, чтобы внести в него изменения; предполагается, что старый файл имеет имя, совпадающее с именем в первой строке файла заплатки (то, что написано после ---):

patch -i system.patch system

Кроме программы patch в Solаris имеется программа gpatch (GNU Patch), которая, в отличие от традиционной команды patch, строго соответствует стандарту POSIX и несколько по-другому интерпретирует ключи и обрабатывает полные имена файлов в файлах заплаток. Применяйте ту программу, которая требуется согласно описанию заплатки; в трудных случаях имеет смысл изучить раздел Compatibility issues в man gpatch.
Программы patch и gpatch не предназначены для установки обновлений Solaris, которые Sun Microsystems регулярно выпускает по мере обнаружения ошибок в существующем коде или для усовершенствования тех или иных системных программ. Для установки обновлений системы (а это наборы двоичных файлов) используются программы patchadd. Для удаления обновления и возвращения системы в состояние, в котором она пребывала до обновления, используйте patchrm. Программы patchadd и patchrm работают с Solaris версий 2.x и новее.
С помощью команды smpatch можно установить обновления системы на несколько машин сразу, удалить их с нескольких машин и выяснить текущее состояние систем в сети с точки зрения установленных обновлений. Для работы с командой smpatch требуется заранее создать роль, отвечающую за управление обновлениями, в каждой из систем вашей сети.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика