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

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

次の手順では、パッケージコマンドを使ってソフトウェアパッケージを管理する方法を説明します。

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

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

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  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 コマンドは、指定されたデバイス、ディレクトリ、またはスプールディレクトリで利用可能なすべてのパッケージをインストールします。

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


    Do you want to continue with this installation?

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

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


    # pkgchk -v pkgid
    

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


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

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


# pkgadd -d /cdrom/cdrom0/Solaris_10/Product SUNWpl5u

	.
	.
	.
Installation of <SUNWpl5u> was successful.
# pkgchk -v SUNWpl5u
/usr
/usr/bin
/usr/bin/perl
/usr/perl5
/usr/perl5/5.8.4
.
.
.

この例は、Solaris 10 10/08 リリース以上を実行していない場合に使用するパスを示しています。


# pkgadd -d /cdrom/cdrom0/s0/Solaris_10/Product SUNWpl5u

	.
	.
	.
Installation of <SUNWpl5u> was successful.
# pkgchk -v SUNWpl5u
/usr
/usr/bin
/usr/bin/perl
/usr/perl5
/usr/perl5/5.8.4
.
.
.


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

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

次の例は、リモートシステムからソフトウェアパッケージをインストールする方法を示しています。この例では、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.


例 22–6 管理ファイルを指定してリモートパッケージサーバーからソフトウェアパッケージをインストールする

この例は、前の例に似ていますが、-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.


例 22–7 ソフトウェアパッケージを特定の 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 ディレクトリを調べて、コマンド行に指定されたパッケージをすべて見つけます。パッケージをスプールディレクトリにコピーすることと、パッケージをシステム上にインストールすることとは異なることに注意してください。

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

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

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

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

    スプール済みのパッケージを削除する方法については、例 22–19 を参照してください。

  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 コマンドによってシステムプロンプトが返されます。


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

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


# pkgadd -d /cdrom/cdrom0/Solaris_10/Product -s /var/spool/pkg SUNWman

Transferring <SUNWman> package instance


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

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

次の例は、そのためのコマンドを示したものです。この例では、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


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

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


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

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

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


    $ pkginfo
    

例 22–11 インストール済みのパッケージを表示する

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


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


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

この例は、システム上にインストールされているすべてのパッケージを長形式で表示する方法を示しています。この表示には、指定されたパッケージで利用可能なすべての情報が含まれます。


$ 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:  leo20031003183400
  INSTDATE:  Feb 20 2004 16:57
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:      114 installed pathnames
                  36 shared pathnames
                  40 directories
                  57 executables
               21469 blocks used (approx)

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

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

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

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

    • ファイルの属性または内容を検査するには、次のように入力します。


      # pkgchk -a| -c -v pkid ...
      
    • スプールディレクトリの絶対パスを指定するには、次のように入力します。


      # pkgchk -d spooldir pkgid ...
    -a

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

    -c

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

    -v

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

    -d spooldir

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

    pkgid

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


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

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


# pkgchk -c SUNWbash

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



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

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


# pkgchk -a SUNWbash

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



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

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


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

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


Procedureインストール済みオブジェクトの整合性を検査する方法 (pkgchk -p、pkgchk -P)

この手順は、pkgchk コマンドを使ってインストール済みオブジェクトの整合性を検査する方法を示しています。新しい -P オプションを使用すると、部分パスを指定できます。このオプションは、ファイルとパッケージ間のマッピングを支援する目的で追加されました。このオプションを -l オプションと組み合わせると、指定した部分パスを含むファイルの情報が一覧表示されます。インストール済みオブジェクトの整合性を絶対パスを指定して検査するには、-p オプションを使用します。詳細は、pkgchk(1M) のマニュアルページを参照してください。

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

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. インストール済みオブジェクトの整合性を検査します。

    • 1 つまたは複数の絶対パス名に対するインストール済みオブジェクトの整合性を検査するには、次のように入力します。


      # pkgchk -lp path-name
      
    • 1 つまたは複数の部分パス名に対するインストール済みオブジェクトの整合性を検査するには、次のように入力します。


      # pkgchk -lP  partial-path-name
      
    -p path

    指定された 1 つまたは複数のパス名に対する整合性のみを検査します。パスは、1 つまたは複数のパス名をコンマで区切って指定します。ファイルの属性と内容 (デフォルト) ではなく、ファイルの属性 (アクセス権) だけを検査することを指定します。

    -P partial-path

    指定された 1 つまたは複数の部分パス名に対する整合性のみを検査します。部分パスは、1 つまたは複数の部分パス名をコンマで区切って指定します。部分パスに含まれる文字列を含むすべてのパス名に一致します。ファイルの内容と属性 (デフォルト) ではなく、ファイルの内容だけを検査することを指定します。

    -l

    同一パッケージに属する選択されたファイルに関する情報を表示します。このオプションを、-a-c- f-g-v の各オプションと同時に使用することはできません。冗長モードを指定します。このモードでは、処理されるたびにファイル名が表示されます。


例 22–16 絶対パス名を指定してインストール済みオブジェクトの整合性を検査する

この例では、pkgchk -lp コマンドで絶対パス名を指定してファイルシステム上の特定のオブジェクトの内容/属性を検査する方法を示しています。-l オプションは、同一パッケージに属する選択されたファイルに関する情報を表示します。


# pkgchk -lp /usr/sbin/pkgadd
Pathname: /usr/sbin/pkgadd
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: sys
Expected file size (bytes): 867152
Expected sum(1) of contents: 45580
Expected last modification: Jul 02 02:20:34 2004
Referenced by the following packages:
        SUNWpkgcmdsu   
Current status: installed


例 22–17 部分パス名を指定してインストール済みオブジェクトの整合性を検査する

この例では、pkgchk -lP コマンドでファイル名やディレクトリ名などの部分パス名を指定してファイルシステム上の特定のオブジェクトの内容/属性を検査する方法を示しています。-l オプションは、同一パッケージに属する選択されたファイルに関する情報を表示します。


# pkgchk -lP /sbin/pkgadd
Pathname: /usr/sbin/pkgadd
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: sys
Expected file size (bytes): 867152
Expected sum(1) of contents: 45580
Expected last modification: Jul 02 02:20:34 2004
Referenced by the following packages:
        SUNWpkgcmdsu   
Current status: installed

Pathname: /usr/sbin/pkgask
Type: linked file
Source of link: ../../usr/sbin/pkgadd
Referenced by the following packages:
        SUNWpkgcmdsu   
Current status: installed

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

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


注意 – 注意 –

ソフトウェアパッケージを削除するのに rm コマンドを使用しないでください。それを行なった場合、システム上にインストールされたすべてのパッケージを追跡しているデータベースの整合性がとれなくなります。


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

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

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

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


    # pkgrm pkgid ...

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


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

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


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


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

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


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