Solaris のシステム管理 (第 1 巻)

第 21 章 ソフトウェアの管理 (手順)

この章では、Solaris コマンドと Admintool グラフィカルインタフェースを使用して、ソフトウェアパッケージをインストール、削除、管理する方法を説明します。

この章で説明する手順は次のとおりです。

ソフトウェアパッケージを処理するコマンド

表 21-1 に、Solaris のインストール後に、ソフトウェアパッケージの追加、削除、検査に使用するコマンドを示します。

表 21-1 パッケージの追加および削除を行うコマンド

コマンド 

説明 

prodreg(1)

インストーラでソフトウェアパッケージをインストールする 

pkgadd(1M)

ソフトウェアパッケージをインストールする 

pkgrm(1M)

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

pkgchk(1M)

ソフトウェアパッケージのインストールを検査する 

pkginfo(1)

ソフトウェアパッケージ情報を表示する 

pkgparam(1)

ソフトウェアパッケージのパラメータ値を表示する 

パッケージの追加と削除における既知の問題

Solaris 2.5 より前に開発された一部のパッケージを追加、または削除する場合、いくつかの問題があることがわかっています。パッケージの追加または削除に失敗したり、ユーザー入力を要求されたときのユーザー応答内容が無視された場合は、次の環境変数を設定してください。

NONABI_SCRIPTS=TRUE

パッケージの追加

スタンドアロンシステムにパッケージを追加する方法

  1. スーパーユーザーとしてログインします。

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

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

  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 コマンドは、使用可能なすべてのパッケージをインストールする。

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


    Do you want to continue with this installation?

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

  4. パッケージが正常にインストールされたことを確認するには、pkgchk コマンドを使用します。


    # pkgchk -v pkgid
    

    pkgchk が、エラーがないと判断した場合は、インストールされたファイルのリストが返されます。そうでない場合は、エラーについて報告されます。

例 - マウントされた CD からソフトウェアをインストールする

次の例は、SUNWaudio パッケージをマウントされた Solaris 8 CD からインストールするコマンドを示しています。この例では、pkgchk コマンドを使用して、パッケージファイルが正しくインストールされたかどうかを検査する方法も示しています。


# pkgadd -d /cdrom/sol_8_sparc/s0/Solaris_8/Product SUNWaudio
	.
	.
	.
Installation of <SUNWaudio> was successful.
# pkgchk -v SUNWaudio
/usr
/usr/bin
/usr/bin/audioconvert
/usr/bin/audioplay
/usr/bin/audiorecord

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

インストールしたいパッケージがリモートシステムから利用できるパッケージの場合は、そのパッケージ (パッケージ形式) を含むディレクトリを手動でマウントして、ローカルシステムにパッケージをインストールすることができます。次の例は、このためのコマンドを示しています。この例では、package-server という名前のリモートシステムが、/latest-packages ディレクトリにソフトウェアパッケージを持つものと想定しています。mount コマンドは、パッケージを /mnt にローカルにマウントし、pkgadd コマンドは、SUNWaudio パッケージをインストールしています。


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

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


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

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


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

スプールディレクトリの使用

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

スプールディレクトリにパッケージを追加する方法

  1. サーバーまたはスタンドアロンシステムのスーパーユーザーとしてログインします。

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

    スプールされたパッケージを削除する方法については、「スプールされたパッケージを削除する方法」を参照してください。

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


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

    -d device-name

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

    -s spooldir

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

    pkgid

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

  4. パッケージがスプールディレクトリに正常にコピーされたことを確認するには、pkginfo コマンドを使用します。


    $ pkginfo -d spooldir | grep pkgid
    

    pkgid が正常にコピーされると、pkginfo コマンドは、それに関する 1 行の情報を返します。正常にコピーされないと、システムプロンプトが返されます。

例 - マウントされた CD からスプールディレクトリを設定する

次の例は、SUNWaudio および SUNWab2m の各パッケージを、マウントされた SPARC 版 Solaris 8 CD からデフォルトのスプールディレクトリ (/var/spool/pkg) にコピーするコマンドを示しています。


# pkgadd -d /cdrom/sol_8_sparc/s0/Solaris_8/Product -s /var/spool/pkg SUNWaudio
Transferring <SUNWaudio> package instance

例 - リモートパッケージサーバーからスプールディレクトリを設定する

インストールしたいパッケージがリモートシステムから利用できるパッケージの場合は、そのパッケージを (パッケージの形で) 含むディレクトリを手作業でマウントして、ローカルスプールディレクトリにそれをコピーすることができます。次の例は、このためのコマンドを示しています。この例では、package-server という名前のリモートシステムが、/latest-packages ディレクトリにソフトウェアパッケージを持つものと想定しています。mount コマンドは、パッケージを /mnt にローカルにマウントし、pkgadd コマンドは、SUNWman パッケージを /mnt からデフォルトのスプールディレクトリ (/var/spool/pkg) にコピーします。


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

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


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

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

次の例では、デフォルトのスプールディレクトリから SUNWman パッケージをインストールするコマンドを示しています (pkgadd にオプションを使用しないと、/var/spool/pkg で指定のパッケージが検索されます。)


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

パッケージのインストールの検査

pkgchk コマンドを使用すると、パッケージのインストールの完全性、パス名、ファイルの内容、およびファイル属性をチェックできます。オプションの詳細については、pkgchk(1M) のマニュアルページを参照してください。

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
.
.
.

インストールされたパッケージが完全であるかどうかをチェックする方法

  1. スーパーユーザーとしてシステムにログインします。

  2. インストールされたパッケージの状態を、pkgchk コマンドによってチェックします。


    # pkgchk [ -a -c -v ] pkgid ...
    # pkgchk -dspooldir pkgid ...

    -a

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

    -c

    pkgchk のデフォルトであるファイル内容と属性ではなく、ファイル内容だけを検査するように指定する。

    -v

    pkgchk による処理中、ファイル名を表示する詳細モードを指定する。

    -d spooldir

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

    pkgid

    (省略可能) 1 つまたは複数のパッケージを空白で区切って指定する。pkgid を指定しないと、pkgchk は、システムにインストールされたすべてのソフトウェアパッケージをチェックする。これを省略すると、pkgchk は使用可能なすべてのパッケージを表示する。

例 - インストールされたパッケージの内容を検査する

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


# pkgchk -c SUNWadmfw

pkgchk はエラーがないと判断すると、システムプロンプトに戻ります。そうでない場合は、エラーを表示します。

例 - インストールされたパッケージのファイル属性を検査する

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


# pkgchk -a SUNWadmfw

pkgchk はエラーがないと判断すると、システムプロンプトに戻ります。そうでない場合は、エラーを表示します。

例 - スプールディレクトリにインストールされたパッケージを検査する

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


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

注 -

スプールされたパッケージの検査は、パッケージがインストールされないとすべての情報を検査できないため、制限されます。


パッケージに関する詳細を表示する方法

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


$ pkginfo -l pkgid ...

-l

出力を長形式で表示するように指定する。これには、パッケージに関する入手可能な情報すべてが含まれる。 

pkgid

(省略可能) 1 つまたは複数のパッケージの名前を空白で区切って指定する。この引数を省略すると、pkginfo は、使用可能なすべてのパッケージに関する情報を表示する。

例 - パッケージに関する詳細を表示する


$ pkginfo -l SUNWcar
   PKGINST:  SUNWcar
      NAME:  Core Architecture, (Root)
  CATEGORY:  system
      ARCH:  sparc.sun4u
   VERSION:  11.8.0,REV=1999.09.18.11.52
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
      DESC:  core software for a specific hardware platform group
    PSTAMP:  humbolt19990821191439
  INSTDATE:  Sep 18 1999 11:53
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:     95 installed pathnames
                31 shared pathnames
                35 directories
                49 executables
             11307 blocks used (approx) 

サーバーとスタンドアロンシステムからのパッケージの削除


注意 - 注意 -

インストールされたパッケージの削除には、rm コマンドではなく、必ず pkgrm コマンドを使用してください。rm コマンドを使用すると、インストールされたパッケージのシステム記録に不具合が生じます。


パッケージを削除する方法

  1. システムにスーパーユーザーとしてログインします。

  2. インストールされたパッケージを削除します。


    # pkgrm pkgid... 
    

    pkgid

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

スプールされたパッケージを削除する方法

  1. スーパーユーザーとしてログインします。

  2. インストールされたパッケージを、pkgrm -s コマンドによってスプールディレクトリから削除します。


    # pkgrm -s spooldir pkgid... 

    -s spooldir

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

    pkgid

    (省略可能) 1 つまたは複数のパッケージの名前を空白で区切っ指定する。pkgid を指定しないと、pkgrm は、ユーザーに対して、スプールディレクトリにある各パッケージを削除するように要求する。これを省略すると、使用可能なパッケージすべてが表示される。

Admintool を使用してソフトウェアパッケージを追加または削除する

Solaris オペレーティング環境 には Admintool が組み込まれています。これは、ソフトウェアパッケージの追加と削除を含む、いくつかの管理作業を実行するためのグラフィカルユーザーインタフェースです。Admintool を使用すると、特に次のことを実行できます。

Admintool を起動する方法

  1. インストールされたシステムにログインして、スーパーユーザーになります。

    シェルプロンプトに、次のように入力します。


    $ su
    

    UNIX の sysadmin グループ (グループ 14) のメンバーでない場合、Admintool でソフトウェアパッケージの追加または削除を行うには、システムのスーパーユーザーになる必要があります。

  2. CD を CD-ROM ドライブにロードします。

    ボリューム管理が自動的に CD をマウントします。

  3. Admintool を起動します。


    # admintool &
    

    「ユーザー (Users)」ウィンドウが表示されます。

  4. 「ブラウズ (Browse)」メニューから「ソフトウェア (Software)」を選択します。

    「ソフトウェア (Software)」ウィンドウが表示されます。

  5. 「編集 (Edit)」メニューから「追加 (Add)」を選択します。

    「ソース媒体の設定 (Set Source Media)」ウィンドウが表示されます。必要であれば、インストール媒体へのパスを指定して、「OK」をクリックします。デフォルトのパスは、マウント済みの SPARC Solaris CD です。

    「ソフトウェアを追加 (Add Software)」ウィンドウが表示されます。

    Graphic
  6. ローカルシステムにインストールしたいソフトウェアを選択します。

    ウィンドウの「ソフトウェア (Software)」部分で、インストールしたいソフトウェアに対応するチェックボックスをクリックします。

  7. 「追加 (Add)」をクリックします。

    各パッケージがインストールされるごとに、コマンドツールウィンドウが表示され、インストールの出力が表示されます。

    「ソフトウェア (Software)」ウィンドウがリフレッシュされて、追加されたばかりのパッケージが表示されます。

Admintool でパッケージを削除する方法

  1. インストールされたシステムにログインして、スーパーユーザーになります。

    シェルプロンプトに、次のように入力します。


    $ su
    

    UNIX の sysadmin グループ (グループ 14) のメンバーでないかぎり、Admintool でソフトウェアパッケージを追加または削除するためには、スーパーユーザーにならなければなりません。

  2. Admintool を起動します。


    # admintool &
    
  3. 「ブラウズ (Browse)」メニューから「ソフトウェア (Software)」を選択します。

    「ソフトウェア (Software)」ウィンドウが表示されます。

    Graphic
  4. ローカルシステムから削除したいソフトウェアを選択します。

  5. 「編集 (Edit)」メニューから「削除 (Delete)」を選択します。

    本当にソフトウェアを削除するのかどうかを確認するための警告ポップアップウィンドウが表示されます。

  6. 「削除 (Delete)」をクリックして、ソフトウェアを削除したいことを確認します。

    削除するパッケージごとにコマンドツールウィンドウが表示され、もう一度ソフトウェアを削除するのかどうか確認されます。yn、または q を入力します。ソフトウェアを削除することを選択した場合、削除プロセスからの出力が表示されます。