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

パッケージコマンドによるソフトウェアパッケージの追加と削除 (作業マップ)

次の作業マップに、パッケージコマンドを使って行うことができるソフトウェアの管理作業を示します。

作業 

説明 

参照先 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    この手順によって、追加および削除されたソフトウェアの正しい記録が取れます。同じアプリケーションの複数のバージョンをシステムで管理する場合もあります。ソフトウェアの複数のコピーを管理する方法については、パッケージの削除に関するガイドラインを、その作業手順については、ソフトウェアパッケージを削除する方法 (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 という管理ファイルを指定している点が異なります。この管理ファイルについては、パッケージ追加時のユーザーの対話操作を省略するに説明されています。この例では、noask-pkgadd 管理ファイルがデフォルトの格納場所である /var/sadm/install/admin にあるものとします。


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

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

使用頻度の高いインストール済みパッケージを、スプールディレクトリにコピーしておくと便利です。パッケージをデフォルトのスプールディレクトリ /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 SUNWdmfex.u
The following package is currently spooled:
   SUNWdmfex.u           Sun Davicom 10/100Mb Ethernet Driver (64-bit)
                         (sparc.sun4u) 11.9.0,REV=2001.07.24.15.53

Do you want to remove this package? y
Removing spooled package instance <SUNWdmfex.u>