В данной главе описано, как проверить целостность пакета и записать его на распространяемый носитель (дискету или компакт-диск).
Ниже приведен общий перечень вопросов, рассмотренных в данной главе.
В приведенной ниже таблице описаны действия, которые необходимо выполнить для проверки целостности пакета и переноса его на распространяемый носитель.
Таблица 4–1 Проверка и запись пакета (карта задач)
Задача |
Описание |
Инструкции |
---|---|---|
1. Выполните сборку пакета |
Выполните сборку пакета на диске. | |
2. Установите пакет |
Сделайте пробную установку пакета и убедитесь, что при установке нет ошибок. | |
3. Проверьте целостность пакета |
Проверьте целостность пакета с помощью команды pkgchk. | |
4. Соберите дополнительную информацию о пакете |
Необязательная задача. С помощью команд pkginfo и pkgparam выполните проверку конкретного пакета. |
Отображение дополнительной информации об установленных пакетах |
5. Удалите установленный пакет |
Удалите установленный пакет из системы с помощью команды pkgrm. | |
6. Запишите пакет на распространяемый носитель |
Перенесите пакет (в формате пакета) на распространяемый носитель с помощью команды pkgtrans. |
Пакеты программного обеспечения устанавливаются с помощью команды pkgadd. Данная команда переносит содержимое пакета программного обеспечения с распространяемого носителя или из каталога и устанавливает его на целевую систему.
В данном разделе приводятся базовые инструкции по установке пакета с целью проверки правильности установки.
Информация о всех пакетах, установленных в системе, хранится в базе данных устанавливаемого ПО. Она содержит запись для каждого объекта пакета, а также такую информацию, как имя компонента, его местоположение и тип. Каждая запись содержит данные о пакете, к которому принадлежит тот или иной компонент, данные о других пакетах, которые могут ссылаться на данный компонент, а также такую информацию, как имя пути, местоположение компонента и его тип. Записи автоматически добавляются и удаляются с помощью команд pkgadd и pkgrm. С помощью команд pkgchk и pkginfo можно просмотреть информацию, содержащуюся в базе данных.
С каждым компонентом пакета связаны два типа информации. Атрибутивная информация описывает сам компонент. Примерами атрибутивной информации служат права доступа к компоненту, идентификатор владельца и идентификатор группы. Информация о содержимом описывает содержимое компонента, например размер файла и время последнего изменения.
База данных устанавливаемого ПО отслеживает состояние пакета. Пакет может быть полностью установлен (успешно завершен процесс установки) или установлен частично (процесс установки не был успешно завершен).
Когда пакет установлен частично, части этого пакета могли быть установлены до того, как процесс установки был прерван. Таким образом, часть пакета установлена и запись об этом внесена в базу данных, а часть нет. При переустановке пакета выдается запрос на начало с того места, где установка была прервана, поскольку команда pkgadd имеет доступ к базе данных и может определить, какие части уже были установлены. Кроме того, установленные части пакета можно удалить на основе информации, содержащейся в базе данных устанавливаемого ПО, с помощью команды pkgrm.
Если команда pkgadd сталкивается с проблемой, то первым делом она проверяет файл администрирования установки на наличие соответствующих инструкций. (Для получения дополнительной информации см. страницу admin(4).) Если инструкции отсутствуют, или если соответствующий параметр в файле администрирования установлен на значение ask (спросить), команда pkgadd выдает сообщение с описанием проблемы и предлагает ввести ответ. Обычно запрос выглядит так: Do you want to continue with this installation? (Продолжить установку?). На этот запрос необходимо ответить yes (да), no (нет) или quit (выйти).
Если указано более одного пакета, то в случае ответа no установка текущего пакета будет остановлена, однако команда pkgadd продолжит установку других пакетов. Ответ выйти указывает команде pkgadd, что необходимо прекратить установку всех пакетов.
В данном разделе описывается, как производить установку пакетов на независимых системах или серверах в однородной вычислительной среде.
См. раздел Сборка пакета.
Войдите в систему как суперпользователь.
Добавьте пакет программного обеспечения в систему.
# pkgadd -d device-name [pkg-abbrev...] |
-d device-name |
Указывает расположение пакета. Обратите внимание, что device-name может быть как полным именем пути каталога, так и идентификатором в случае использования ленточного накопителя, дискеты или съемного диска. |
pkg-abbrev |
Имя одного или нескольких пакетов (разделенных пробелом), которые следует добавить. Если имя не указано, команда pkgadd устанавливает все имеющиеся пакеты. |
Для установки пакета ПО с именем pkgA с ленточного носителя с именем /dev/rmt/0 необходимо ввести следующую команду:
# pkgadd -d /dev/rmt/0 pkgA |
Можно устанавливать несколько пакетов одновременно, отделяя их имена друг от друга с помощью пробела:
# pkgadd -d /dev/rmt/0 pkgA pkgB pkgC |
Если не указано имя устройства, на котором расположен пакет, команда проверяет буферный каталог, установленный по умолчанию (/var/spool/pkg). Если пакета там нет, установка завершается сбоем.
Для перехода к следующей задаче откройте ссылку Как проверить целостность пакета.
С помощью команды pkgchk можно проверить целостность пакетов независимо от того, установлены ли они в системе или находятся в пакетном формате (готовы к установке командой pkgadd). Команда подтверждает структуру пакета, установленных файлов и каталогов или отображает информацию об объектах пакета. Команда pkgchk может вывести список или проверить следующее:
Сценарии установки пакета.
Содержимое и/или атрибуты объектов, установленных в системе.
Содержимое помещенного в буфер, удаленного пакета.
Содержимое и/или атрибуты объектов, описанных в указанном файле pkgmap.
Для получения дополнительной информации см. страницу pkgchk(1M).
Команда pkgchkвыполняет два типа проверки. Она проверяет атрибуты файла (права доступа и принадлежность файла, а также старшие и младшие номера блочных или символьных устройств) и содержимое файла (размер, контрольная сумма и дата изменения). По умолчанию команда проверяет как атрибуты, так и содержимое файла.
Кроме того, команда pkgchk сравнивает атрибуты файла и содержимое установленного пакета с базой данных устанавливаемого ПО. Записи о пакете могли измениться со времени установки. Например, другой пакет мог изменить какой-то компонент пакета. Подобные изменения отражаются в базе данных.
Установите пакет.
См. раздел Как устанавливать пакеты на независимой системе или сервере
Проверьте целостность пакета.
# pkgchk [-v] [-R root-path] [pkg-abbrev...] |
-v |
Выводит список файлов по мере их обработки. |
-R root-path |
Указывает расположение корневой файловой системы клиента. |
pkg-abbrev |
Имя одного или нескольких пакетов (разделенных пробелом), которые следует проверить. Если имя не указано, команда pkgchk проверяет все имеющиеся пакеты. |
В данном примере показана команда, которую следует использовать для проверки целостности установленного пакета.
$ pkgchk pkg-abbrev $ |
При наличии ошибок команда pkgchk выводит их на печать. В противном случае данные не выводятся, и возвращается код выхода 0. Если сокращение пакета не указано, осуществляется проверка всех пакетов в системе.
При необходимости можно использовать параметр -v для вывода на печать списка файлов пакета при отсутствии в нем ошибок. Пример:
$ pkgchk -v SUNWcadap /opt/SUNWcadap /opt/SUNWcadap/demo /opt/SUNWcadap/demo/file1 /opt/SUNWcadap/lib /opt/SUNWcadap/lib/file2 /opt/SUNWcadap/man /opt/SUNWcadap/man/man1 /opt/SUNWcadap/man/man1/file3.1 /opt/SUNWcadap/man/man1/file4.1 /opt/SUNWcadap/man/windex /opt/SUNWcadap/srcfiles /opt/SUNWcadap/srcfiles/file5 /opt/SUNWcadap/srcfiles/file6 $ |
Если требуется проверить пакет, установленный в корневой файловой системе клиента, используйте следующую команду:
$ pkgchk -v -R root-path pkg-abbrev |
Для перехода к следующей задаче откройте ссылку Как получить информацию с помощью команды pkginfo.
Для отображения информации об установленных пакетах можно использовать еще две команды:
Команда pkgparam отображает значения параметров.
Команда pkginfo отображает информацию из базы данных устанавливаемого ПО.
Команда pkgparam позволяет вывести на экран значения параметров, указанных в командной строке. Эти значения извлекаются либо из файла pkginfo конкретного пакета, либо из указанного вами файла. В каждой строке отображается одно значение параметра. Можно выводить на экран только значения или параметры и их значения.
Установите пакет.
См. раздел Как устанавливать пакеты на независимой системе или сервере
Отобразите дополнительную информацию о пакете.
# pkgparam [-v] pkg-abbrev [param...] |
-v |
Отображает имя параметра и его значение. |
pkg-abbrev |
Имя конкретного пакета. |
param |
Указывает один или несколько параметров, значения которых отображаются. |
Например, для отображения только значений используйте следующую команду.
$ pkgparam SUNWcadap none /opt US/Mountain /sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin /usr/sadm/sysadm SUNWcadap Chip designers need CAD application software to design abc chips. Runs only on xyz hardware and is installed in the usr partition. system release 1.0 SPARC venus990706083849 SUNWcadap /var/sadm/pkg/SUNWcadap/save Jul 7 1999 09:58 $ |
Для отображения параметров и их значений используйте следующую команду:
$ pkgparam -v SUNWcadap pkgparam -v SUNWcadap CLASSES='none' BASEDIR='/opt' TZ='US/Mountain' PATH='/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin' OAMBASE='/usr/sadm/sysadm' PKG='SUNWcadap' NAME='Chip designers need CAD application software to design abc chips. Runs only on xyz hardware and is installed in the usr partition.' CATEGORY='system' VERSION='release 1.0' ARCH='SPARC' PSTAMP='venus990706083849' PKGINST='SUNWcadap' PKGSAV='/var/sadm/pkg/SUNWcadap/save' INSTDATE='Jul 7 1999 09:58' $ |
Для отображения значения конкретного параметра используйте следующий формат:
$ pkgparam SUNWcadap BASEDIR /opt $ |
Для получения дополнительной информации см. страницу pkgparam(1).
Для перехода к следующей задаче воспользуйтесь ссылкой Как удалить пакет.
С помощью команды pkginfo можно отобразить информацию об установленных пакетах. У данной команды есть несколько параметров, которые позволяют настроить формат и содержимое выводимой на экран информации.
Можно запросить информацию о любом количестве экземпляров пакета.
Когда команда pkginfo выполняется без параметров, она отображает категорию, экземпляр пакета и имена всех пакетов, которые были полностью установлены в системе. Отображение упорядочено по категориям, как показано в следующем примере:
$ pkginfo . . . system SUNWinst Install Software system SUNWipc Interprocess Communications system SUNWisolc XSH4 conversion for ISO Latin character sets application SUNWkcspf KCMS Optional Profiles application SUNWkcspg KCMS Programmers Environment application SUNWkcsrt KCMS Runtime Environment . . . $ |
Результаты выполнения команды pkginfo могут отображаться в любом из трех форматов: кратком, извлеченном и длинном.
Значением по умолчанию является краткий формат. В этом формате отображается только категория, аббревиатура и полное имя пакета, как показано в разделе Вывод команды pkginfo по умолчанию.
В извлеченном формате отображаются аббревиатура и имя пакета, архитектура пакета (если есть) и версия пакета (если есть). Для получения выходных данных в извлеченном формате используйте параметр -x, как показано в следующем примере:
$ pkginfo -x . . . SUNWipc Interprocess Communications (sparc) 11.8.0,REV=1999.08.20.12.37 SUNWisolc XSH4 conversion for ISO Latin character sets (sparc) 1.0,REV=1999.07.10.10.10 SUNWkcspf KCMS Optional Profiles (sparc) 1.1.2,REV=1.5 SUNWkcspg KCMS Programmers Environment (sparc) 1.1.2,REV=1.5 . . . $ |
При указании параметра -l выдаются данные в длинном формате, в котором показана вся имеющаяся информация о пакете:
$ pkginfo -l SUNWcadap PKGINST: SUNWcadap NAME: Chip designers need CAD application software to design abc chips. Runs only on xyz hardware and is installed in the usr partition. CATEGORY: system ARCH: SPARC VERSION: release 1.0 BASEDIR: /opt PSTAMP: system980706083849 INSTDATE: Jul 7 1999 09:58 STATUS: completely installed FILES: 13 installed pathnames 6 directories 3 executables 3121 blocks used (approx) $ |
В приведенной ниже таблице описаны параметры пакета, которые могут быть отображены для каждого пакета. Параметр и его значение отображаются только в том случае, если параметр имеет назначенное ему значение.
Таблица 4–2 Параметры пакета
Параметр |
Описание |
---|---|
ARCH |
Архитектура, поддерживаемая данным пакетом. |
BASEDIR |
Базовый каталог, в котором размещен пакет ПО (отображается если пакет является перемещаемым). |
CATEGORY |
Категория или категории программного обеспечения, частью которых является этот пакет (например, system или application). |
CLASSES |
Список классов, определенных для пакета. Порядок следования классов в этом списке определяет последовательность их установки. Классы, приведенные в начале списка, будут установлены первыми (из расчета "носитель за носителем"). Этот параметр может быть изменен сценарием request. |
DESC |
Текст с описанием пакета. |
|
Адрес электронной почты, используемый для запросов от пользователей. |
HOTLINE |
Информация о том, как получить оперативную помощь по пакету. |
INTONLY |
Указывает, что пакет следует устанавливать в интерактивном режиме только при наличии любого не пустого значения. |
ISTATES |
Список разрешенных состояний выполнения для установки пакета (например, S s 1). |
MAXINST |
Максимальное количество экземпляров пакета, которые могут одновременно находиться на компьютере. По умолчанию разрешен только один экземпляр пакета. |
NAME |
Имя пакета - обычно текст, описывающий аббревиатуру пакета. |
ORDER |
Список классов, определяющий порядок, в котором классы будут переноситься на носитель. Используется командой pkgmk при создании пакета. Классы, не определенные в этом параметре, размещаются на носителе в соответствии со стандартными процедурами сортировки. |
PKGINST |
Аббревиатура устанавливаемого пакета. |
PSTAMP |
Производственная марка пакета. |
RSTATES |
Список разрешенных состояний выполнения для удаления пакета (например, S s 1). |
ULIMIT |
Если этот параметр установлен, он передается в качестве аргумента команде ulimit, которая определяет максимальный размер файла в ходе установки. Применимо только к файлам, созданным с помощью процедурных сценариев. |
VENDOR |
Имя поставщика пакета программного обеспечения. |
VERSION |
Версия пакета. |
VSTOCK |
Инвентарный номер, предоставленный поставщиком. |
Для получения дополнительной информации о команде pkginfo см. справочную страницу pkginfo(1).
Установите пакет.
См. раздел Как устанавливать пакеты на независимой системе или сервере
Отобразите дополнительную информацию о пакете.
# pkginfo [-x | -l] [pkg-abbrev] |
-x |
Отображает информацию о пакете в извлеченном формате. |
-l |
Отображает информацию о пакете в длинном формате. |
pkg-abbrev |
Имя конкретного пакета. Если имя не указано, команда pkginfo отображает информацию обо всех установленных пакетах в формате по умолчанию. |
Для перехода к следующей задаче откройте ссылку Как удалить пакет.
Поскольку команда pkgrm обновляет информацию в базе данных ПО, для удаления пакета важно использовать именно команду pkgrm, а не команду rm. Например, команду rm можно использовать для удаления двоичного исполняемого файла, но это не то же самое, что использование команды pkgrm для удаления пакета ПО, содержащего двоичный исполняемый файл. Использование команды rm для удаления файлов пакета приведет к повреждению базы данных ПО. (Если действительно требуется удалить только один файл, можно использовать команду removef, которая корректно обновит базу данных ПО.
Удалите установленный пакет.
# pkgrm pkg-abbrev ... |
pkg-abbrev |
Имя одного или нескольких пакетов (разделенных пробелом). Если имя не указано, команда pkgrm удаляет все имеющиеся пакеты. |
Проверьте, что пакет был успешно удален. Используйте для этого команду pkginfo.
$ pkginfo | egrep pkg-abbrev |
Если пакет pkg-abbrev установлен, команда pkginfo возвращает строку с информации о нем. В противном случае команда pkginfo возвращает системную подсказку.
Команда pkgtrans перемещает пакеты и производит преобразование формата пакета. Для выполнения преобразований устанавливаемого пакета можно использовать команду pkgtrans. При ее выполнении можно совершить следующие преобразования:
Преобразование формата файловой системы в формат потока данных
Преобразование формата потока данных в формат файловой системы
Преобразование формата одной файловой системы в формат другой файловой системы
Выполните сборку пакета путем создания пакета в формате каталога, если этого не было сделано ранее.
Для получения дополнительной информации см. раздел Как собрать пакет.
Установите пакет, чтобы проверить, что установка выполняется корректно.
См. раздел Как устанавливать пакеты на независимой системе или сервере
Проверьте целостность пакета
При необходимости см. разделы Как проверить целостность пакета, Как получить информацию с помощью команды pkginfo и Как получить информацию с помощью команды pkgparam.
Удалите установленный пакет из системы.
См. раздел Как удалить пакет.
Запишите пакет (в формате пакета) на распространяемый носитель.
Для выполнения базового преобразования выполните следующую команду:
$ pkgtrans device1 device2 [pkg-abbrev...] |
device1 |
Имя устройства, на котором в данный момент расположен пакет. |
device2 |
Имя устройства, на которое будет записан преобразованный пакет. |
[pkg-abbrev] |
Одна или несколько аббревиатур пакета. |
Если имена пакета не указаны, то все пакеты, находящиеся на устройстве device1, преобразуются и записываются на устройство device2.
Если на устройстве device1 находится более одного экземпляра пакета, необходимо использовать идентификатор экземпляра пакета. Описание идентификатора пакета содержится на веб-странице Определение экземпляра пакета. Если на устройстве device2 уже имеется экземпляр преобразуемого пакета, то команда pkgtrans не выполняет преобразование. Для перезаписи всех имеющихся экземпляров на устройстве назначения можно использовать параметр -oкоманды pkgtrans и параметр -n для создания нового экземпляра, если на этом устройстве уже существуют экземпляры пакета. Обратите внимание, что данная проверка неприменима, если устройство device2 поддерживает формат потока данных.
К данному моменту мы завершили этапы, необходимые для разработки, сборки, проверки и записи пакета. Для изучения практических примеров см. Глава 5Практические примеры создания пакета. Дополнительные идеи по разработке пакетов приведены в Глава 6Дополнительные методы создания пакетов.