Messages in cipher reflected in the looking glass
[ Yasuhiro Fujitsuki's Weblog ]
http://blogs.sun.com/thaniwa/date/20080516 2008年 5月 16日 金曜日

(JA) IPS : pkg command

OpenSolaris 2008.05で入った新しいパッケージ管理システムのIPS、 どんな感じか試してみました。
パッケージ管理用のGUIがあるので、通常ではGUIを利用した方が簡単だと 思いますが、今回はコマンドラインの方を試してみました。

パッケージの情報確認系(ローカルのみ)

list オプションのデフォルトではインストール済みのパッケージのみを表示します。

$ pkg list

NAME (AUTHORITY)                              VERSION         STATE      UFIX
BRCMbnx                                       0.5.11-0.86     installed  ----
FSWxorg-fonts                                 0.5.11-0.86     installed  ----
NVDAgraphics                                  0.5.11-0.86     installed  ----
SUNW1394                                      0.5.11-0.86     installed  ----
SUNWDTraceToolkit                             0.5.11-0.86     installed  ----
......
SUNWzip                                       2.32-0.86       installed  ----
SUNWzlib                                      1.2.3-0.86      installed  ----
SUNWzone                                      0.5.11-0.86     installed  ----
SUNWzsh                                       4.3.4-0.86      installed  ----
entire                                        0.5.11-0.86     installed  ----
slim_cd                                       0.5.11-0.86     installed  ----
slim_install                                  0.1-0.86        installed  ----

名前を指定することも可能ですが、完全名のみにしか対応できないようです。

$ pkg list zsh
pkg: no matching packages installed

$ pkg list SUNWzsh
NAME (AUTHORITY)                              VERSION         STATE      UFIX
SUNWzsh                                       4.3.4-0.86      installed  ----


パッケージを検索したい場合は search を使います。
詳細情報が見たい場合は info を使います。

$ pkg search zsh
INDEX      ACTION    VALUE                     PACKAGE
basename   dir       usr/share/zsh             pkg:/SUNWzsh@4.3.4-0.86

$ pkg info SUNWzsh
          Name: SUNWzsh
       Summary: Z shell (zsh)
         State: Installed
     Authority: opensolaris.org (preferred)
       Version: 4.3.4
 Build Release: 5.11
        Branch: 0.86
Packaging Date: Sat Apr 26 18:12:58 2008
          Size: 4.0 MB
          FMRI: pkg:/SUNWzsh@4.3.4,5.11-0.86:20080426T181258Z



パッケージのアップデート

アップデートパッケージが存在するかどうか確認します。 list -u オプションを利用します。

$ pkg list -u
pkg: no installed packages have available updates

全くないのか? と思ったのですが、 どうも pkg コマンドは通常ではローカルデータベースの参照しかしないようです。 list -r のように -r オプションを追加することで、 サーバ上にある情報を参照するようです。 また、refresh オプションを利用して、 一度ローカルデータベースの更新を行う方法もあるようです。

$ pkg refresh

$ pkg list -u
NAME (AUTHORITY)                              VERSION         STATE      UFIX
entire                                        0.5.11-0.86     installed  u---

アップデートは install コマンドか image-update コマンドで行うようです。 image-update はアップデートパッケージ全てを入れるコマンドですが、 新しいブートイメージを作成し、そちらをアップデートするようです。 そのため、list -u を行っても、再びアップグレード可能パッケージが表示されてしまいます。 また、このコマンドを実行すると Grub に新しいものが追加され、そちらをデフォルトで起動しようとします。
image-update は常に新しいものを作るようで、次々とBEが作られていきます。^-^;
これらのBEは beadm コマンドを利用して管理するようです。


$ pkg image-update
PHASE                                        ACTIONS
Update Phase                                     1/1 
Install Phase                                    3/3
A clone of opensolaris exists and has been updated and activated. On next boot
the Boot Environment opensolaris-1 will be mounted on '/'. Reboot when ready to
switch to this updated BE.

$ pkg list -u
NAME (AUTHORITY)                              VERSION         STATE      UFIX
entire                                        0.5.11-0.86     installed  u---

$ beadm list

BE            Active Active on Mountpoint Space 
Name                 reboot               Used  
----          ------ --------- ---------- ----- 
opensolaris-1 no     no        -          311.0K
opensolaris-2 no     yes       -          2.33G
opensolaris   yes    no        legacy     11.63M

$ beadm destroy opensolaris-1
Are you sure you want to destroy opensolaris-1? This action cannot be undone (y/[n]):
y
$ beadm destroy opensolaris-2
Are you sure you want to destroy opensolaris-2? This action cannot be undone (y/[n]):
y


install を利用すると既存のBEに追加されます。

$ pkg install entire
PHASE                                        ACTIONS
Update Phase                                     1/1 
Install Phase                                    3/3

$ pkg list -u
pkg: no installed packages have available updates

AUTHORITYの追加、パッケージのインストール

AUTHORITY(リポジトリ) にはデフォルトで opensolaris.org が登録されています。 そのため、opensolaris.org に登録されているアプリケーションの追加、アップデート等が行えます。
opensolaris.org に公開されていないアプリケーションや独自に作成したAUTHORITYを利用することもできます。ここでは、sunfreeware.com に公開されている AUTHORITY を登録してみます。


$ pkg authority
AUTHORITY                           URL
opensolaris.org (preferred)         http://pkg.opensolaris.org:80/

$ pkg set-authority -O http://pkg.sunfreeware.com:9000/ sunfreeware.com

$ pkg authority
AUTHORITY                           URL
opensolaris.org (preferred)         http://pkg.opensolaris.org:80/
sunfreeware.com                     http://pkg.sunfreeware.com:9000/


パッケージ検索には search オプションを利用します。 ここでは xmms をインストールしてみます。 ただ、search オプションはデフォルトではローカルデータベースのみを検索するようで、 何も見つかりません。 search -r を利用することでネットワーク経由で情報を取得します。 sunfreeware.com で提供されているアプリケーションは IPSFW というシンボルが付いています。詳細情報の確認にも info -r というように -r をつけます。


$ pkg search xmms
$ pkg search -r xmms
INDEX      ACTION    VALUE                     PACKAGE
basename   file      opt/sfw/bin/xmms          pkg:/IPSFWxmms@0.5.11-5.7

$ pkg info -r IPSFWxmms
          Name: IPSFWxmms
       Summary: xmms - X MultiMedia System
         State: Not installed
     Authority: sunfreeware.com
       Version: 0.5.11
 Build Release: 5.11
        Branch: 5.7
Packaging Date: Wed May  7 04:13:32 2008
          Size: 5.1 MB
          FMRI: pkg://sunfreeware.com/IPSFWxmms@0.5.11,5.11-5.7:20080507T041332Z

インストールには install を利用します。 インストール後に list で確認できます。 今回は依存関係で2つのパッケージがインストールされていますが、 grep を利用して確認してみると IPSFWgtxt が追加されていることがわかります。

$ pkg install IPSFWxmms
DOWNLOAD                                    PKGS       FILES     XFER (MB)
Completed                                    2/2     135/135     6.30/6.30 

PHASE                                        ACTIONS
Install Phase                                307/307 

$ pkg list IPSFWxmms
NAME (AUTHORITY)                              VERSION         STATE      UFIX
IPSFWxmms (sunfreeware.com)                   0.5.11-5.7      installed  ----

$ pkg list | grep IPSFW
IPSFWgtxt (sunfreeware.com)                   0.5.11-5.7      installed  ----
IPSFWxmms (sunfreeware.com)                   0.5.11-5.7      installed  ----