© 2000 solaris.org.ru    

Пакеты (packages) в Solaris

Введение

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

Виды пакетов/Что есть пакет

Пакеты могут быть либо в виде одного файла (т.н. Package datastream) либо в виде каталога определенной структуры. Рассмотрим пакет SHAgzip, это каталог с именем SHAgzip (на самом деле каталог может называться как угодно) в этом каталоге обязательно есть как минимум два файла pkginfo и pkgmap, а так же каталоги reloc & install.
Рассмотрим все это более подробно: Обычно пакеты распространяются в виде каталога (например, пакеты на дистрибутивном диске Solaris именно в этом виде). Подобный формат пакетов используется для распространения пакетов на CD-ROM, etc. Так же возможно распространение пакетов в виде datastream, из названия ясно что в таком виде пакеты размещаются на ленте, дискетах, etc.
Рекомендуется рапространять пакеты в виде каталогов, на это есть несколько причин:
  1. Всегда можно посмотреть что конкретно будет установлено, либо же просто можно скопировать необходимый файл из пакета не устанавливая его.
  2. Требуется меньше места на диске во время установки (в /var/tmp). Потому что при установке пакета в виде datastream, pkgadd преобразует его в нормальный вид в /var/tmp, что может вызвать переполнение файловой системы /var при установке больших пакетов типа GNOME от Bob Palovoda ;).

Преобразование пакетов

Пакеты могут быть в любой момент преобразованы из каталога в datastream и наоборот. Для этого используется команда pkgtrans(1). Например у нас есть пакет GNUgcc в виде datastream, преобразуем его в нормальный вид:
  user$ cd ~/pkg
  user$ mkdir GNUgcc
  user$ pkgtrans ~/download/GNUgcc GNUgcc

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

Для установки пакета используется команда pkgadd(1m). При вызове без параметров pkgadd проверяет наличие и выводит на экран список пакетов для установки расположенных в /var/spool/pkg. С помощью ключа -d можно указать другой каталог в котором pkgadd будет искать пакеты, или же вместо каталога можно указать файл в виде datastream. Таким образом установка производится следующим образом:
  root# gzcat SHAgtar.tgz | tar xvf -
  root# pkgadd -d .
пакеты в виде datastream устанавливаются следующим образом:
  root# gunzip gcc-2.95.2-i86pc.gz
  root# pkgadd -d gcc-2.95.2-i86pc
К сожалению в составе поставки Solaris нет gunzip. Поэтому это первый пакет который надо установить.

Просмотр информации о пакетах

Для просмотра информации о установленных пакетах используется команда pkginfo(1). pkginfo вызванный без параметров покажет список всех установленных в системе пакетов с кратким их описанием. pkginfo c именем пакета покажет более подробную информацию о пакете.

Для того что бы узнать к какому пакету относится тот или иной файл можно воспользоваться файлом /var/sadm/install/contents. Например мы хотим узнать к какому пакету принадлежит файл /usr/local/bin/gtar, а также хотим узнать какие еще файлы идут в этом пакете.
  root# grep bin/gtar /var/sadm/install/contents
  /usr/local/bin/gtar f gtar 0755 root other 123656 3539 924175580 SHAgtar

  root# grep SHAgtar /var/sadm/install/contents
  /usr/local/bin d none 0755 root other GNUcatdoc GNUsudo SHAgtar
  /usr/local/bin/gtar f gtar 0755 root other 123656 3539 924175580 SHAgtar
  /usr/local/info d none 0755 root other SHAgtar:gtar gnome
  ....
Так же можно просмотреть параметры пакета с помощью команды pkgparam(1). Например просмотрим параметры пакета SHAgtar:
 root# pkgparam -v SHAgtar
 CLASSES='gtar'
 BASEDIR='/usr/local'
 TZ='Asia/Yekaterinburg'
 PATH='/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin'
 OAMBASE='/usr/sadm/sysadm'
 PKG='SHAgtar'
 NAME='GNU tar (system tar replacement)'
 ARCH='i86pc'
 VERSION='1.12'
 DESC='GNU tar for Solaris 2.7'
 VENDOR='NIEE Hacker'"'"'s League'
 CATEGORY='application'
 PSTAMP='nic19990415185920'
 PKGINST='SHAgtar'
 PKGSAV='/var/sadm/pkg/SHAgtar/save'
 INSTDATE='Авг 13 1999 16:46'

Поиск и установка пакета из дистрибутива

Многие при установке системы выбирают End User Install, набор пакетов достаточный для работы офисного пользователя. Предполагается что такому пользователю для выполнения его работы не нужны пакеты необходимые разработчику. Поэтому не обнаружив в системе необходимых файлов/утилит не отчаивайтесь, скорее всего вы их просто не установили. Для того что бы определить в каком пакете находится требуемый файл просто поищите его на дистрибутивном компакт-диске.
  root# cd /cdrom/cdrom0/Solaris_2.[67]/Product
  root# grep ccs/bin/make */pkgmap
  SUNWsprot/pkgmap:1 f none usr/ccs/bin/make 0755 bin bin 252380 \ 
  49976 893359962
Как вы видите make поставляется в пакете SUNWsprot. Посмотрим что еще поставляется в этом пакете:
  root# more SUNWsprot/pkgmap
  blah, blah
  more SUNWsprot/pkgmap  
  : 1 2550 1056
  1 i copyright 59 5234 885707484
  1 i depend 892 7900 805067308
  1 i pkginfo 420 32837 893801804
  1 d none usr 0775 root sys
  1 d none usr/ccs 0755 bin bin
  1 d none usr/ccs/bin 0755 bin bin
  1 f none usr/ccs/bin/admin 0755 bin bin 43932 58824 893378688
  1 f none usr/ccs/bin/as 0755 bin bin 146248 47339 835025580
  1 f none usr/ccs/bin/cdc 0755 bin bin 41092 52869 893378689
  1 f none usr/ccs/bin/comb 0755 bin bin 30856 21024 893378690
  1 f none usr/ccs/bin/delta 0755 bin bin 57288 21124 893378690
  1 f none usr/ccs/bin/get 0755 bin bin 49860 29695 893378691
  1 f none usr/ccs/bin/help 0755 bin bin 5112 18170 893378698
  1 f none usr/ccs/bin/make 0755 bin bin 252380 49976 893359962
  1 f none usr/ccs/bin/prs 0755 bin bin 34144 24980 893378692
  1 f none usr/ccs/bin/prt 0755 bin bin 17804 64262 893378692
  1 f none usr/ccs/bin/rmdel 0755 bin bin 41092 52869 893378693
  1 f none usr/ccs/bin/sact 0755 bin bin 25384 23012 893378693
  1 f none usr/ccs/bin/sccs 0755 bin bin 35716 38810 893378694
  1 f none usr/ccs/bin/sccsdiff 0755 bin bin 2196 21177 893378696
  1 f none usr/ccs/bin/unget 0755 bin bin 25384 23012 893378694
  1 f none usr/ccs/bin/val 0755 bin bin 14084 36880 893378695
  1 f none usr/ccs/bin/vc 0755 bin bin 13392 58056 893378695
  1 f none usr/ccs/bin/what 0755 bin bin 8272 15086 893378696
  ...
Похоже тут куча полезных программ, тогда установим этот пакет:
  root# pkgadd -d . SUNWsprot

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

Как говорится -- ломать не строить ;) Удаление пакетов крайне просто. Для этого используется команда pkgrm(1m).
  root# pkgrm PKGcrap

© 2000 solaris.org.ru