Solaris のシステム管理 (基本編)

パッケージコマンドによるソフトウェアパッケージの管理 (作業マップ)

次の作業マップは、署名付きパッケージと署名なしパッケージの両方に対して、パッケージコマンドで行えるソフトウェア管理作業を示したものです。

作業 

説明 

参照先 

ソフトウェアパッケージをローカルシステムに追加する 

pkgadd コマンドを使ってソフトウェアパッケージをローカルシステムに追加できる

ソフトウェアパッケージを追加する方法 (pkgadd)

ソフトウェアパッケージをスプールディレクトリに追加する 

ソフトウェアを実際にインストールしないで、ソフトウェアパッケージをスプールディレクトリに追加できる 

ソフトウェアパッケージをスプールディレクトリに追加する

インストールされたすべてのソフトウェアパッケージに関する情報を表示する 

pkginfo コマンドを使用して、インストールされたパッケージに関する情報を表示できる

インストール済みのすべてのパッケージに関する情報を表示する方法 (pkginfo)

インストールされたソフトウェアパッケージの整合性を検査する 

pkgchk コマンドを使って、インストールされたソフトウェアパッケージの整合性を検査できる

インストール済みのソフトウェアパッケージの整合性を検査する方法 (pkgchk)

ソフトウェアパッケージを削除する 

pkgrm コマンドを使って不要になったソフトウェアパッケージを削除できる

ソフトウェアパッケージを削除する方法 (pkgrm)

ソフトウェアパッケージを追加する方法 (pkgadd)

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. インストール済みのパッケージの中で、追加しようとしているものと同じ名前のものがあれば、すべて削除します。

    この手順によって、追加および削除されたソフトウェアの正しい記録が取れます。同じアプリケーションの複数のバージョンをシステムで管理する場合もあります。ソフトウェアの複数のコピーを管理する方法については、パッケージの削除に関するガイドライン (pkgrm)を、その作業手順については、ソフトウェアパッケージを削除する方法 (pkgrm)を参照してください。

  3. ソフトウェアパッケージをシステムに追加します。


    # pkgadd -a admin-file -d device-name pkgid ... 

    -a admin-file

    (省略可能) インストール時に pkgadd コマンドが参照する管理ファイルを示す。管理ファイルの使用方法については、管理ファイルの使用を参照。

    -d device-name

    ソフトウェアパッケージへの絶対パスを指定する。device-name には、デバイス、ディレクトリ、またはスプールディレクトリへのパスを指定できる。パッケージのあるパスを指定しないと、pkgadd コマンドはデフォルトのスプールディレクトリ (/var/spool/pkg) をチェックする。パッケージがそこにない場合、パッケージのインストールは失敗する。

    pkgid

    (省略可能) インストールする 1 つまたは複数のパッケージの名前を空白で区切って指定する。この引数を省略すると、使用可能なすべてのパッケージがインストールされる。

    パッケージのインストール中に pkgadd コマンドによって問題が検出されると、その問題に関連するメッセージに続いて、次のプロンプトが表示されます。


    Do you want to continue with this installation?

    このプロンプトには、yesno、または quit のいずれかで応答します。複数のパッケージを指定した場合は、no と入力して、インストール中のパッケージのインストールを中止してください。他のパッケージのインストールが続行されます。インストールを中止する場合は、quit と入力してください。

  4. 指定したパッケージが正常にインストールされていることを確認します。


    # pkgchk -v pkgid
    

    エラーがない場合は、インストールされたファイルのリストが返されます。エラーがある場合は、pkgchk コマンドによってエラーが報告されます。

例 — マウント済みの CD からソフトウェアパッケージを追加する

次の例は、マウント済みの Solaris 9 CD から SUNWpl5u パッケージをインストールする方法を示しています。また、パッケージファイルが正しくインストールされているかどうかを確認する方法も示します。


# pkgadd -d /cdrom/cdrom0/s0/Solaris_9/Product SUNWpl5u
	.
	.
	.
Installation of <SUNWpl5u> was successful.
# pkgchk -v SUNWpl5u
/usr
/usr/bin
/usr/bin/perl
/usr/perl5
/usr/perl5/5.00503
.
.
.

例 — リモートパッケージサーバーからソフトウェアパッケージをインストールする

インストールするパッケージがリモートシステムから利用できる場合は、そのパッケージが (パッケージ形式で) 格納されているディレクトリを手動でマウントして、ローカルシステムにパッケージをインストールすることができます。

次の例は、リモートシステムからソフトウェアパッケージをインストールする方法を示しています。この例では、package-server というリモートシステムの /latest-packages ディレクトリにソフトウェアパッケージが格納されているものとします。まず mount コマンドによってパッケージが /mnt にローカルにマウントされ、次に pkgadd コマンドによって SUNWpl5u パッケージがインストールされます。


# mount -F nfs -o ro package-server:/latest-packages /mnt
# pkgadd -d /mnt SUNWpl5u
	.
	.
	.
Installation of <SUNWpl5u> was successful.

オートマウンタがサイトで実行されている場合は、リモートパッケージサーバーを手動でマウントする必要はありません。代わりに、オートマウンタパス (この場合は /net/package-server/latest-packages) を、-d オプションの引数として使用します。


# pkgadd -d /net/package-server/latest-packages SUNWpl5u
	.
	.
	.
Installation of <SUNWpl5u> was successful.

次の例は、前の例に似ていますが、-a オプションを使用して noask-pkgadd という管理ファイルを指定している点が異なります。この管理ファイルについては、パッケージ追加時のユーザーの対話操作を省略する (pkgadd) に説明されています。この例では、noask-pkgadd 管理ファイルがデフォルトの格納場所である /var/sadm/install/admin にあるものとします。


# pkgadd -a noask-pkgadd -d /net/package-server/latest-packages SUNWpl5u
	.
	.
	.
Installation of <SUNWpl5u> was successful.

例 — ソフトウェアパッケージを特定の HTTP URL からインストールする

次の例は、特定の HTTP URL をデバイス名として使ってパッケージをインストールする方法を示しています。指定した URL は、ストリーム形式のパッケージを指している必要があります。


# pkgadd -d http://install/xf86-4.3.0-video.pkg

## Downloading...
..............25%..............50%..............75%..............100%
## Download Complete


The following packages are available:
  1  SUNWxf86r     XFree86 Driver Porting Kit (Root)
                   (i386) 4.3.0,REV=0.2003.02.28
  2  SUNWxf86u     XFree86 Driver Porting Kit (User)
                   (i386) 4.3.0,REV=0.2003.02.28

.
.
.

ソフトウェアパッケージをスプールディレクトリに追加する

使用頻度の高いインストール済みパッケージを、スプールディレクトリにコピーしておくと便利です。パッケージをデフォルトのスプールディレクトリ /var/spool/pkg にコピーする場合、pkgadd コマンドを使用するときに、コピー元のパッケージの位置 (-d device-name 引数) を指定する必要はありません。pkgadd コマンドは、デフォルトで /var/spool/pkg ディレクトリを調べて、コマンド行に指定されたパッケージをすべて見つけます。パッケージをスプールディレクトリにコピーすることと、パッケージをシステム上にインストールすることとは異なることに注意してください。

ソフトウェアパッケージをスプールディレクトリに追加する方法 (pkgadd)

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. スプール済みのパッケージの中で、追加しようとしているものと同じ名前のものがあれば、すべて削除します。

    スプール済みのパッケージを削除する方法については、例 — スプールされたソフトウェアパッケージを削除するを参照してください。

  3. ソフトウェアパッケージをスプールディレクトリに追加します。


    # pkgadd -d device-name -s spooldir pkgid...

    -d device-name

    ソフトウェアパッケージへの絶対パスを指定する。device-name には、デバイス、ディレクトリ、またはスプールディレクトリへのパスを指定できる。

    -s spooldir

    パッケージがスプールされるスプールディレクトリの名前を指定する。spooldir を指定する必要がある。

    pkgid

    (省略可能) スプールディレクトリに追加する 1 つまたは複数のパッケージの名前を空白で区切って指定する。この引数を省略すると、使用可能なすべてのパッケージがコピーされる。 

  4. 指定したパッケージがスプールディレクトリに正常にコピーされていることを確認します。


    $ pkginfo -d spooldir | grep pkgid
    

    pkgid が正常にコピーされると、pkginfo コマンドによって、pkgid に関する 1 行の情報が返されます。正常にコピーされなかった場合は、pkginfo コマンドによってシステムプロンプトが返されます。

例 — マウント済みの CD からスプールディレクトリを設定する

次の例は、SUNWman パッケージをマウント済みの SPARC Solaris 9 CD からデフォルトのスプールディレクトリ (/var/spool/pkg) に転送する方法を示しています。


# pkgadd -d /cdrom/cdrom0/s0/Solaris_9/Product -s /var/spool/pkg SUNWman
Transferring <SUNWman> package instance

例 — リモートソフトウェアパッケージサーバーからスプールディレクトリを設定する

コピーするパッケージがリモートシステムから利用できる場合は、そのパッケージが (パッケージ形式で) 格納されているディレクトリを手動でマウントして、ローカルスプールディレクトリにパッケージをコピーすることができます。

次の例は、このためのコマンドを示しています。この例では、package-server というリモートシステムの /latest-packages ディレクトリにソフトウェアパッケージが格納されているものとします。まず mount コマンドによってパッケージが /mnt にローカルにマウントされ、次に pkgadd コマンドによって SUNWpl5p パッケージが /mnt からデフォルトのスプールディレクトリ (/var/spool/pkg) にコピーされます。


# mount -F nfs -o ro package-server:/latest-packages /mnt
# pkgadd -d /mnt -s /var/spool/pkg SUNWpl5p
Transferring <SUNWpl5p> package instance

オートマウンタが実行されている場合は、リモートパッケージサーバーを手動でマウントする必要はありません。代わりに、オートマウンタパス (この場合は、/net/package-server/latest-packages) を、-d オプションの引数として使用してください。


# pkgadd -d /net/package-server/latest-packages -s /var/spool/pkg SUNWpl5p
Transferring <SUNWpl5p> package instance

例 — デフォルトのスプールディレクトリからソフトウェアパッケージをインストールする

次の例は、デフォルトのスプールディレクトリから SUNWpl5p パッケージをインストールする方法を示しています。オプションを何も指定しないと、pkgadd コマンドは /var/spool/pkg ディレクトリを検索して名前付きのパッケージを見つけます。


# pkgadd SUNWpl5p
	.
	.
	.
Installation of <SUNWpl5p> was successful.

インストール済みのすべてのパッケージに関する情報を表示する方法 (pkginfo)

pkginfo コマンドを使用して、インストール済みのパッケージに関する情報を表示します。


$ pkginfo

例 — インストール済みのすべてのパッケージを表示する

次は、システムがスタンドアロンまたはサーバーのどちらであるかにかかわらず、pkginfo コマンドが、ローカルシステムにインストールされているすべてのパッケージを表示する例です。基本カテゴリ、パッケージ名、およびパッケージの説明が表示されています。


$ pkginfo
system      SUNWaccr       System Accounting, (Root)
system      SUNWaccu       System Accounting, (Usr)
system      SUNWadmap      System administration applications
system      SUNWadmc       System administration core libraries
.
.
.

例 — ソフトウェアパッケージに関する詳細情報を表示する


$ pkginfo -l SUNWcar
   PKGINST:  SUNWcar
      NAME:  Core Architecture, (Root)
  CATEGORY:  system
      ARCH:  sparc.sun4u
   VERSION:  11.9.0,REV=2002.04.06.15.27
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
      DESC:  core software for a specific hardware platform group
    PSTAMP:  crash20020406153633
  INSTDATE:  Nov 19 2002 14:49
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:      111 installed pathnames
                  36 shared pathnames
                  40 directories
                  56 executables
               18843 blocks used (approx)

インストール済みのソフトウェアパッケージの整合性を検査する方法 (pkgchk)

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. インストール済みのパッケージの状態を調べます。


    # pkgchk -a| -c -v pkgid ...
    # pkgchk -d spooldir pkgid ...

    -a

    ファイルの属性と内容 (デフォルト) ではなく、ファイルの属性 (つまりアクセス権) だけを検査することを指定する。 

    -c

    ファイルの内容と属性 (デフォルト) ではなく、ファイルの内容だけを検査することを指定する。 

    -v

    冗長モードを指定する。このモードでは、処理されるたびにファイル名が表示される。 

    -d spooldir

    スプールディレクトリへの絶対パスを指定する。 

    pkgid

    (省略可能) 1 つまたは複数のパッケージの名前を空白で区切って指定する。pkgid を指定しない場合は、システムにインストールされているすべてのソフトウェアパッケージが検査される。

例 — インストール済みのソフトウェアパッケージの内容を検査する

次の例は、パッケージの内容を検査する方法を示しています。


# pkgchk -c SUNWbash

エラーがない場合は、システムプロンプトが返されます。エラーがある場合は、pkgck コマンドによってエラーが報告されます。

例 — インストール済みのソフトウェアパッケージのファイル属性を検査する

次の例は、パッケージのファイル属性を検査する方法を示しています。


# pkgchk -a SUNWbash

エラーがない場合は、システムプロンプトが返されます。エラーがある場合は、pkgck コマンドによってエラーが報告されます。

例 — スプールディレクトリにインストールされているソフトウェアパッケージを検査する

次の例は、スプールディレクトリ (/export/install/packages) にコピーされたソフトウェアパッケージを検査する方法を示しています。


# pkgchk -d /export/install/packages
## checking spooled package <SUNWadmap>
## checking spooled package <SUNWadmfw>
## checking spooled package <SUNWadmc>
## checking spooled package <SUNWsadml>

注 –

スプールされたパッケージの検査には限界があります。これは、パッケージがインストールされないとすべての情報を検査できないからです。


ソフトウェアパッケージを削除する

ソフトウェアパッケージを削除 (アンインストール) するときは、このパッケージの追加 (インストール) 時に使用した関連ツールを使用します。たとえば、Web Start インストーラを使ってインストールしたソフトウェアは、Web Start アンインストーラでアンインストールします。


注意 – 注意 –

ソフトウェアパッケージを削除するのに rm コマンドを使用しないでください。


ソフトウェアパッケージを削除する方法 (pkgrm)

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. インストール済みのパッケージを削除します。


    # pkgrm pkgid... 
    

    pkgid は、削除する 1 つまたは複数のパッケージの名前 (空白で区切られている) を識別します。この引数を省略すると、使用可能なパッケージがすべて削除されます。

例 — ソフトウェアパッケージを削除する

次の例は、パッケージの削除方法を示しています。


# pkgrm SUNWctu

The following package is currently installed:
   SUNWctu         Netra ct usr/platform links (64-bit)
                   (sparc.sun4u) 11.9.0,REV=2001.07.24.15.53

Do you want to remove this package? y

## Removing installed package instance <SUNWctu>
## Verifying package dependencies.
## Processing package information.
## Removing pathnames in class <none>
.
.
.

例 — スプールされたソフトウェアパッケージを削除する

次の例は、スプールされたパッケージの削除方法を示しています。


# pkgrm -s /export/pkg SUNWaudh
The following package is currently spooled:
   SUNWaudh        Audio Header Files
                   (sparc) 11.10.0,REV=2003.08.08.00.03
Do you want to remove this package? y
Removing spooled package instance <SUNWaudh>