Руководство разработчика по пакетированию приложений

Глава 4 Проверка и запись пакета

В данной главе описано, как проверить целостность пакета и записать его на распространяемый носитель (дискету или компакт-диск).

Ниже приведен общий перечень вопросов, рассмотренных в данной главе.

Проверка и запись пакета (карта задач)

В приведенной ниже таблице описаны действия, которые необходимо выполнить для проверки целостности пакета и переноса его на распространяемый носитель.

Таблица 4–1 Проверка и запись пакета (карта задач)

Задача 

Описание 

Инструкции 

1. Выполните сборку пакета 

Выполните сборку пакета на диске. 

Глава 2Сборка пакета

2. Установите пакет 

Сделайте пробную установку пакета и убедитесь, что при установке нет ошибок. 

Как устанавливать пакеты на независимой системе или сервере

3. Проверьте целостность пакета 

Проверьте целостность пакета с помощью команды pkgchk. 

Как проверить целостность пакета

4. Соберите дополнительную информацию о пакете 

Необязательная задача. С помощью команд pkginfo и pkgparam выполните проверку конкретного пакета.

Отображение дополнительной информации об установленных пакетах

5. Удалите установленный пакет 

Удалите установленный пакет из системы с помощью команды pkgrm.

Как удалить пакет

6. Запишите пакет на распространяемый носитель 

Перенесите пакет (в формате пакета) на распространяемый носитель с помощью команды pkgtrans.

Как записать пакет на распространяемый носитель

Установка пакетов ПО

Пакеты программного обеспечения устанавливаются с помощью команды pkgadd. Данная команда переносит содержимое пакета программного обеспечения с распространяемого носителя или из каталога и устанавливает его на целевую систему.

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

База данных устанавливаемого ПО

Информация о всех пакетах, установленных в системе, хранится в базе данных устанавливаемого ПО. Она содержит запись для каждого объекта пакета, а также такую информацию, как имя компонента, его местоположение и тип. Каждая запись содержит данные о пакете, к которому принадлежит тот или иной компонент, данные о других пакетах, которые могут ссылаться на данный компонент, а также такую информацию, как имя пути, местоположение компонента и его тип. Записи автоматически добавляются и удаляются с помощью команд pkgadd и pkgrm. С помощью команд pkgchk и pkginfo можно просмотреть информацию, содержащуюся в базе данных.

С каждым компонентом пакета связаны два типа информации. Атрибутивная информация описывает сам компонент. Примерами атрибутивной информации служат права доступа к компоненту, идентификатор владельца и идентификатор группы. Информация о содержимом описывает содержимое компонента, например размер файла и время последнего изменения.

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

Когда пакет установлен частично, части этого пакета могли быть установлены до того, как процесс установки был прерван. Таким образом, часть пакета установлена и запись об этом внесена в базу данных, а часть нет. При переустановке пакета выдается запрос на начало с того места, где установка была прервана, поскольку команда pkgadd имеет доступ к базе данных и может определить, какие части уже были установлены. Кроме того, установленные части пакета можно удалить на основе информации, содержащейся в базе данных устанавливаемого ПО, с помощью команды pkgrm.

Взаимодействие с командой pkgadd

Если команда pkgadd сталкивается с проблемой, то первым делом она проверяет файл администрирования установки на наличие соответствующих инструкций. (Для получения дополнительной информации см. страницу admin(4).) Если инструкции отсутствуют, или если соответствующий параметр в файле администрирования установлен на значение ask (спросить), команда pkgadd выдает сообщение с описанием проблемы и предлагает ввести ответ. Обычно запрос выглядит так: Do you want to continue with this installation? (Продолжить установку?). На этот запрос необходимо ответить yes (да), no (нет) или quit (выйти).

Если указано более одного пакета, то в случае ответа no установка текущего пакета будет остановлена, однако команда pkgadd продолжит установку других пакетов. Ответ выйти указывает команде pkgadd, что необходимо прекратить установку всех пакетов.

Установка пакетов на независимых системах или серверах в однородной вычислительной среде

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

Procedure Как устанавливать пакеты на независимой системе или сервере

  1. Выполните сборку пакета.

    См. раздел Сборка пакета.

  2. Войдите в систему как суперпользователь.

  3. Добавьте пакет программного обеспечения в систему.


    # pkgadd -d device-name [pkg-abbrev...]

    -d device-name

    Указывает расположение пакета. Обратите внимание, что device-name может быть как полным именем пути каталога, так и идентификатором в случае использования ленточного накопителя, дискеты или съемного диска.

    pkg-abbrev

    Имя одного или нескольких пакетов (разделенных пробелом), которые следует добавить. Если имя не указано, команда pkgadd устанавливает все имеющиеся пакеты.


Пример 4–1 Установка пакетов на независимых системах или серверах

Для установки пакета ПО с именем pkgA с ленточного носителя с именем /dev/rmt/0 необходимо ввести следующую команду:


# pkgadd -d /dev/rmt/0 pkgA

Можно устанавливать несколько пакетов одновременно, отделяя их имена друг от друга с помощью пробела:


# pkgadd -d /dev/rmt/0 pkgA pkgB pkgC

Если не указано имя устройства, на котором расположен пакет, команда проверяет буферный каталог, установленный по умолчанию (/var/spool/pkg). Если пакета там нет, установка завершается сбоем.


См. также

Для перехода к следующей задаче откройте ссылку Как проверить целостность пакета.

Проверка целостности пакета

С помощью команды pkgchk можно проверить целостность пакетов независимо от того, установлены ли они в системе или находятся в пакетном формате (готовы к установке командой pkgadd). Команда подтверждает структуру пакета, установленных файлов и каталогов или отображает информацию об объектах пакета. Команда pkgchk может вывести список или проверить следующее:

Для получения дополнительной информации см. страницу pkgchk(1M).

Команда pkgchkвыполняет два типа проверки. Она проверяет атрибуты файла (права доступа и принадлежность файла, а также старшие и младшие номера блочных или символьных устройств) и содержимое файла (размер, контрольная сумма и дата изменения). По умолчанию команда проверяет как атрибуты, так и содержимое файла.

Кроме того, команда pkgchk сравнивает атрибуты файла и содержимое установленного пакета с базой данных устанавливаемого ПО. Записи о пакете могли измениться со времени установки. Например, другой пакет мог изменить какой-то компонент пакета. Подобные изменения отражаются в базе данных.

ProcedureКак проверить целостность пакета

  1. Установите пакет.

    См. раздел Как устанавливать пакеты на независимой системе или сервере

  2. Проверьте целостность пакета.


    # pkgchk  [-v] [-R root-path] [pkg-abbrev...]

    -v

    Выводит список файлов по мере их обработки. 

    -R root-path

    Указывает расположение корневой файловой системы клиента. 

    pkg-abbrev

    Имя одного или нескольких пакетов (разделенных пробелом), которые следует проверить. Если имя не указано, команда pkgchk проверяет все имеющиеся пакеты.


Пример 4–2 Проверка целостности пакета

В данном примере показана команда, которую следует использовать для проверки целостности установленного пакета.


$ 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

Команда pkgparam позволяет вывести на экран значения параметров, указанных в командной строке. Эти значения извлекаются либо из файла pkginfo конкретного пакета, либо из указанного вами файла. В каждой строке отображается одно значение параметра. Можно выводить на экран только значения или параметры и их значения.

ProcedureКак получить информацию с помощью команды pkgparam

  1. Установите пакет.

    См. раздел Как устанавливать пакеты на независимой системе или сервере

  2. Отобразите дополнительную информацию о пакете.


    # pkgparam [-v] pkg-abbrev [param...]

    -v

    Отображает имя параметра и его значение. 

    pkg-abbrev

    Имя конкретного пакета. 

    param

    Указывает один или несколько параметров, значения которых отображаются. 


Пример 4–3 Получение информации с помощью команды pkgparam

Например, для отображения только значений используйте следующую команду.


$ 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 по умолчанию

Когда команда 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 могут отображаться в любом из трех форматов: кратком, извлеченном и длинном.

Значением по умолчанию является краткий формат. В этом формате отображается только категория, аббревиатура и полное имя пакета, как показано в разделе Вывод команды 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)
$

Описание параметров для длинного формата команды pkginfo

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

Таблица 4–2 Параметры пакета

Параметр 

Описание 

ARCH

Архитектура, поддерживаемая данным пакетом. 

BASEDIR

Базовый каталог, в котором размещен пакет ПО (отображается если пакет является перемещаемым). 

CATEGORY

Категория или категории программного обеспечения, частью которых является этот пакет (например, system или application).

CLASSES

Список классов, определенных для пакета. Порядок следования классов в этом списке определяет последовательность их установки. Классы, приведенные в начале списка, будут установлены первыми (из расчета "носитель за носителем"). Этот параметр может быть изменен сценарием request.  

DESC

Текст с описанием пакета. 

EMAIL

Адрес электронной почты, используемый для запросов от пользователей. 

HOTLINE

Информация о том, как получить оперативную помощь по пакету. 

INTONLY

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

ISTATES

Список разрешенных состояний выполнения для установки пакета (например, S s 1).

MAXINST

Максимальное количество экземпляров пакета, которые могут одновременно находиться на компьютере. По умолчанию разрешен только один экземпляр пакета. 

NAME

Имя пакета - обычно текст, описывающий аббревиатуру пакета. 

ORDER

Список классов, определяющий порядок, в котором классы будут переноситься на носитель. Используется командой pkgmk при создании пакета. Классы, не определенные в этом параметре, размещаются на носителе в соответствии со стандартными процедурами сортировки.

PKGINST

Аббревиатура устанавливаемого пакета. 

PSTAMP

Производственная марка пакета. 

RSTATES

Список разрешенных состояний выполнения для удаления пакета (например, S s 1).

ULIMIT

Если этот параметр установлен, он передается в качестве аргумента команде ulimit, которая определяет максимальный размер файла в ходе установки. Применимо только к файлам, созданным с помощью процедурных сценариев.

VENDOR

Имя поставщика пакета программного обеспечения. 

VERSION

Версия пакета.  

VSTOCK

Инвентарный номер, предоставленный поставщиком. 

Для получения дополнительной информации о команде pkginfo см. справочную страницу pkginfo(1).

ProcedureКак получить информацию с помощью команды pkginfo

  1. Установите пакет.

    См. раздел Как устанавливать пакеты на независимой системе или сервере

  2. Отобразите дополнительную информацию о пакете.


    # pkginfo [-x | -l] [pkg-abbrev]

    -x

    Отображает информацию о пакете в извлеченном формате. 

    -l

    Отображает информацию о пакете в длинном формате. 

    pkg-abbrev

    Имя конкретного пакета. Если имя не указано, команда pkginfo отображает информацию обо всех установленных пакетах в формате по умолчанию.

Что делать дальше

Для перехода к следующей задаче откройте ссылку Как удалить пакет.

Удаление пакета

Поскольку команда pkgrm обновляет информацию в базе данных ПО, для удаления пакета важно использовать именно команду pkgrm, а не команду rm. Например, команду rm можно использовать для удаления двоичного исполняемого файла, но это не то же самое, что использование команды pkgrm для удаления пакета ПО, содержащего двоичный исполняемый файл. Использование команды rm для удаления файлов пакета приведет к повреждению базы данных ПО. (Если действительно требуется удалить только один файл, можно использовать команду removef, которая корректно обновит базу данных ПО.

ProcedureКак удалить пакет

  1. Войдите в систему как суперпользователь.

  2. Удалите установленный пакет.


    # pkgrm pkg-abbrev ...

    pkg-abbrev

    Имя одного или нескольких пакетов (разделенных пробелом). Если имя не указано, команда pkgrm удаляет все имеющиеся пакеты.

  3. Проверьте, что пакет был успешно удален. Используйте для этого команду pkginfo.


    $ pkginfo | egrep pkg-abbrev
    

    Если пакет pkg-abbrev установлен, команда pkginfo возвращает строку с информации о нем. В противном случае команда pkginfo возвращает системную подсказку.

Запись пакета на распространяемый носитель

Команда pkgtrans перемещает пакеты и производит преобразование формата пакета. Для выполнения преобразований устанавливаемого пакета можно использовать команду pkgtrans. При ее выполнении можно совершить следующие преобразования:

ProcedureКак записать пакет на распространяемый носитель

  1. Выполните сборку пакета путем создания пакета в формате каталога, если этого не было сделано ранее.

    Для получения дополнительной информации см. раздел Как собрать пакет.

  2. Установите пакет, чтобы проверить, что установка выполняется корректно.

    См. раздел Как устанавливать пакеты на независимой системе или сервере

  3. Проверьте целостность пакета

    При необходимости см. разделы Как проверить целостность пакета, Как получить информацию с помощью команды pkginfo и Как получить информацию с помощью команды pkgparam.

  4. Удалите установленный пакет из системы.

    См. раздел Как удалить пакет.

  5. Запишите пакет (в формате пакета) на распространяемый носитель.

    Для выполнения базового преобразования выполните следующую команду:


    $ pkgtrans device1 device2 [pkg-abbrev...]

    device1

    Имя устройства, на котором в данный момент расположен пакет. 

    device2

    Имя устройства, на которое будет записан преобразованный пакет. 

    [pkg-abbrev]

    Одна или несколько аббревиатур пакета. 

    Если имена пакета не указаны, то все пакеты, находящиеся на устройстве device1, преобразуются и записываются на устройство device2.


    Примечание –

    Если на устройстве device1 находится более одного экземпляра пакета, необходимо использовать идентификатор экземпляра пакета. Описание идентификатора пакета содержится на веб-странице Определение экземпляра пакета. Если на устройстве device2 уже имеется экземпляр преобразуемого пакета, то команда pkgtrans не выполняет преобразование. Для перезаписи всех имеющихся экземпляров на устройстве назначения можно использовать параметр -oкоманды pkgtrans и параметр -n для создания нового экземпляра, если на этом устройстве уже существуют экземпляры пакета. Обратите внимание, что данная проверка неприменима, если устройство device2 поддерживает формат потока данных.


Что делать дальше

К данному моменту мы завершили этапы, необходимые для разработки, сборки, проверки и записи пакета. Для изучения практических примеров см. Глава 5Практические примеры создания пакета. Дополнительные идеи по разработке пакетов приведены в Глава 6Дополнительные методы создания пакетов.