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

第 22 章 ソフトウェアの管理 (概要)

ソフトウェアの管理には、スタンドアロンシステム、サーバー、およびそのクライアントへのソフトウェアの追加やソフトウェアの削除が含まれます。この章では、ソフトウェアのインストールや管理に使用できる各種ツールについて説明します。

この章では、新しいシステムでの Solaris ソフトウェアのインストールについては説明しません。また、新バージョンの Solaris ソフトウェアのインストールやアップグレードについても説明しません。Solaris ソフトウェアのインストールやアップグレードについては、『Solaris 9 4/04 インストールガイド』を参照してください。

この章の内容は次のとおりです。

ソフトウェアを管理するための手順については、第 23 章「ソフトウェアの管理 (手順)」を参照してください。

Solaris 9 Update リリースの新しいソフトウェア管理機能

この節では、この Solaris リリースの新しいソフトウェア管理機能について説明します。

pkgaddpatchadd による署名付きパッケージおよびパッチのサポート

Solaris 9 12/03 – この Solaris リリースでは、拡張された pkgadd コマンドと patchadd コマンドを使うことで、デジタル署名を含む Solaris パッケージと Solaris パッチを安全にダウンロードできるようになりました。

以前の Solaris リリースでは、Solaris パッチ管理ツールをダウンロードし、smpatch コマンドと PatchPro を併用することで、署名付きパッチの管理を行えました。smpatch コマンドを使って署名付きパッチを管理する手順については、『Signed Patches Administration Guide for PatchPro 2.2』(英語版) の「Managing Signed Patches by Using Solaris Patch Management Tools (Tasks)」を参照してください。

署名付きパッケージの概要については、第 24 章「Solaris パッチの管理 (概要)」を参照してください。

patchadd コマンドを使って署名付きパッチを追加する手順については、patchadd コマンドによる署名付きパッチの追加 (作業マップ)を参照してください。

pkgadd コマンドを使って署名付きパッケージを追加する手順については、署名付きパッケージの追加と削除 (作業マップ)を参照してください。

prodreg コマンドの拡張機能

Solaris 9 4/03prodreg コマンドのオプションを使って、コマンド行から Solaris Product Registry にアクセスし、管理できます。

prodreg コマンドを使ってソフトウェアパッケージを管理する方法については、Solaris Product Registry のコマンド行インタフェースによるソフトウェアの管理 (作業マップ)を参照してください。

Solaris 9 リリースの新しいソフトウェア管理機能

この節では、Solaris 9 リリースの新しいソフトウェア管理機能について説明します。

署名付きパッチ

Solaris 2.6、7、8、9 リリースのすべてのパッチには、デジタル署名が付いています。有効なデジタル署名は、署名が適用された以降にパッチの変更が行われていないことを保証します。

署名付きパッチには、パッチがシステムに適用される前に確認できるデジタル署名が含まれているため、パッチのダウンロードやパッチの適用を安全に行うことができます。

署名付きパッチは、JavaTM アーカイブ形式のファイル (abc.jar) 内に格納され、SunSolve OnlineSM から入手できます。

smpatch コマンドを使って署名付きパッチを追加する方法については、『Signed Patches Administration Guide for PatchPro 2.2』(英語版) の「Managing Signed Patches by Using Solaris Patch Management Tools (Tasks)」を参照してください。

Solaris Product Registry 3.0

Solaris Product Registry 3.0 は、ソフトウェアパッケージのインストールとアンインストールを行うための GUI ツールです。

この製品を使ってソフトウェアパッケージを管理する方法については、Solaris Product Registry の GUI によるソフトウェアの管理 (作業マップ)を参照してください。

パッチアナライザ

SolarisTM Web Start プログラムを使用して Solaris 9 Update リリースにアップグレードするときに、パッチアナライザを使用すると、システムの分析が行われて、Solaris Update リリースへのアップグレードによってどのパッチ (存在する場合) が削除またはダウングレードされるかが確認されます。Solaris 9 リリースにアップグレードするときは、パッチアナライザを使用する必要はありません。

Solaris 9 Update リリースへのアップグレード時にこのツールを使用する方法については、『Solaris 9 4/04 インストールガイド』の「Solaris Update リリースへのアップグレード (作業)」を参照してください。

Solaris 管理コンソールのパッチマネージャ

Solaris 管理コンソールには、パッチを管理するための新しいパッチツールが用意されています。このパッチツールを使用するだけで、Solaris 9 リリースを実行しているシステムにパッチを追加できます。

Solaris 管理コンソールの起動方法については、スーパーユーザーまたは役割としてコンソールを起動する方法を参照してください。

ソフトウェア管理作業についての参照先

ソフトウェアを管理する手順については、次の表を参照してください。

ソフトウェア管理作業 

参照先 

Solaris ソフトウェアのインストール 

Solaris 9 4/04 インストールガイド

インストール後の Solaris ソフトウェアパッケージの追加または削除 

第 23 章「ソフトウェアの管理 (手順)」

インストール後の Solaris パッチの追加または削除 

第 25 章「Solaris パッチの管理 (手順)」

ソフトウェアパッケージ問題の障害追跡  

Solaris のシステム管理 (上級編)』の「ソフトウェアパッケージで発生する問題の解決 (手順)」

ソフトウェアパッケージの概要

ソフトウェア管理には、ソフトウェア製品のインストールと削除が含まれます。Sun および Sun 以外のベンダーは、「パッケージ」という形式でソフトウェア製品を提供しています。

「パッケージング」という用語は一般に、ソフトウェア製品が使用されるシステムに、その製品を配布してインストールする方法を指します。パッケージは、定義済みフォーマットによるファイルとディレクトリの集まりです。このフォーマットは、アプリケーションバイナリインタフェース (ABI) に準拠します。ABI は、System V インタフェース定義を補足するものです。Solaris オペレーティング環境には、このフォーマットを解釈し、パッケージをインストールまたは削除したり、パッケージインストールを検査したりする方法を提供する 1 組のユーティリティがあります。

パッチは、既存のソフトウェアの正常な実行の妨げとなっているファイルとディレクトリを置換または更新するためのファイルとディレクトリの集まりです。パッチの詳細については、第 24 章「Solaris パッチの管理 (概要)」を参照してください。

署名付きパッケージおよびパッチ

パッケージにはデジタル署名を含めることができます。有効なデジタル署名付きのパッケージは、署名が適用された以降はパッケージの変更が行われていないことを保証します。署名付きパッケージを使用すると、パッケージをシステムに追加する前にデジタル署名を検証できるため、パッケージを安全にダウンロードまたは追加できます。

同じことが、署名付きパッチにも言えます。有効なデジタル署名付きのパッチは、署名が適用された以降はパッチの変更が行われていないことを保証します。署名付きパッチを使用すると、パッチをシステムに追加する前にデジタル署名を検証できるため、パッチを安全にダウンロードまたは追加できます。

署名付きパッチをシステムに追加する方法については、patchadd コマンドによる署名付きパッチの追加 (作業マップ)を参照してください。

署名付きパッケージを作成する方法については、『Application Packaging Developer's Guide (英語版)』を参照してください。

署名付きパッケージは、デジタル署名が含まれる点以外は、署名なしパッケージとまったく同一です。署名付きパッケージのインストール、照会、または削除は、既存の Solaris パッケージングツールを使って行えます。また、署名付きパッケージと署名なしパッケージは、バイナリレベルでも互換性があります。

デジタル署名されたパッケージまたはパッチをシステムに追加するには、信頼される証明書を使ってパッケージキーストアを設定しておく必要があります。これらの証明書は、パッケージやパッチ上のデジタル署名の有効性を確認する際に使用されます。

次の表は、署名付きパッケージおよびパッチに関する一般的な用語の一覧です。

用語 

定義 

 

キーストア 

証明書と鍵を格納するためのリポジトリ。それらの情報が必要になると、このリポジトリが検索される。 

  • Java キーストア – Solaris リリースでデフォルトでインストールされる証明書のリポジトリ。

    Java キーストアは通常、/usr/j2se/jre/lib/security ディレクトリに格納される。

  • パッケージキーストア – 署名付きパッケージおよびパッチをシステムに追加する際にインポートする証明書用のリポジトリ。

    パッケージキーストアは、デフォルトで /var/sadm/security ディレクトリに格納される。

 

信頼される証明書 

別のエンティティに属する公開鍵を備えた証明書。「信頼される証明書」という呼び名は、証明書に含まれている公開鍵が、その証明書のサブジェクトまたは所有者によって示された本人のものであることを、キーストアの所有者が信頼することに由来している。この信頼を表明するために、証明書の発行者はその証明書に署名する。

信頼される証明書は、署名を検証する際やセキュリティ保護されたサーバー (SSL サーバー) への接続を確立する際に使用される。 

 

ユーザー鍵 

暗号鍵に関する機密情報を保持する。この情報は、不正なアクセスを防ぐために、セキュリティが施された形式で格納される。ユーザー鍵は、ユーザーの非公開鍵と対応する公開鍵証明書から構成される。 

 

署名付きパッケージまたはパッチをシステムに追加する手順は、基本的に次の 3 つから構成される。

  1. pkgadm コマンドを使ってシステムのパッケージキーストアに証明書を追加する

  2. (省略可能) pkgadm コマンドを使って証明書を一覧表示する

  3. pkgadd コマンドを使ってパッケージを追加するか、patchadd コマンドを使ってパッチを追加する

署名付きパッケージをシステムに追加する手順については、署名付きパッケージの追加と削除 (作業マップ)を参照してください。署名付きパッチをシステムに追加する手順については、patchadd コマンドによる署名付きパッチの追加 (作業マップ)を参照してください。

Sun の証明書による署名付きパッケージおよびパッチの検証

「ストリーム形式」の SVR4 署名付きのパッケージまたはパッチには、PEM でコード化された PKCS7 署名が埋め込まれています。この署名には少なくとも、パッケージまたはパッチの暗号化されたダイジェストと署名者の X.509 公開鍵証明書とが含まれています。また、パッケージまたはパッチには「証明書チェーン」を含めることもできます。証明書チェーンを使うと、署名者の証明書からローカルに格納されている信頼される証明書へ、信頼関係のチェーンを形成することができます。

PEM でコード化された PKCS7 署名を使って、次のことを検証します。

次の表は、署名付きパッケージおよびパッチに関する暗号化関連の用語の一覧です。

用語 

定義 

 

ASN.1 

ASN.1 (Abstract Syntax Notation 1) は、一連の抽象オブジェクトを表現するための方式の 1 つである。たとえば、ASN.1 では、公開鍵証明書、公開鍵証明書を構成するすべてのオブジェクト、オブジェクトの収集順序などを定義している。ただし、ASN.1 では、オブジェクトを保存用または転送用にシリアライズする方法は定義していない。 

 

base64 

base64 は、任意のバイナリデータを ASCII テキストとしてコード化する方式の 1 つである。 

 

DER 

DER (Distinguished Encoding Rules) は、ASN.1 オブジェクトのバイナリ表現の 1 つである。DER では、コンピューティング環境で ASN.1 オブジェクトを保存用または転送用にシリアライズする方法を定義している。 

 

PEM 

PEM (Privacy Enhanced Message) は、base64 エンコーディングといくつかの任意のヘッダーを使って、ファイルを (DER またはその他のバイナリ形式で) コード化する方式である。もともとは、MIME タイプの電子メールメッセージをコード化するために使用された。また、PEM は、証明書と非公開鍵をファイルシステム上または電子メールメッセージ内のファイルにコード化する際にも広く使用される。 

 

PKCS7 

PKCS7 (Public Key Cryptography Standard #7) は、デジタル署名やデジタルエンベロープなどの暗号化データに対する汎用的な構文を定めた規格である。 

 

X.509 

ITU-T (International Telecommunication Union-Telcom) 勧告 X.509 は、広く採用されている X.509 公開鍵証明書の構文を定めた仕様である。 

この勧告では、認証サービスを提供するためのフレームワークが定義されている。X.509 で定義された 2 つの認証レベルを次に示す。 

  • 単純な認証 – パスワードを使ってユーザーの身元を検証する方式

  • 強い認証 – 暗号化技術を使って作成された資格情報に基づく方式。単純な認証でも不正なアクセスに対する多少の備えにはなるが、安全なサービスの提供基盤として使えるのは、強度の高い認証のみである。

 

Sun Microsystems から発行された認証済みデジタル署名を使って、ダウンロードされたパッケージやパッチが改ざんされていないことを検証できます。こうした証明書は、システムのキーストアにインポートされます。

Sun のすべての証明書は、先頃 GTE CyberTrust を買収した Baltimore Technologies によって発行されています。

Sun の証明書をインポートするときに特別なパスワードを使用することで、キーストアへのアクセスを保護できます。

pkgadm listcert コマンドを使えば、ローカルのパッケージキーストア内に格納されている証明書の情報を表示できます。たとえば、次のようになります。


# pkgadm listcert -P pass:store-pass
    Keystore Alias: GTE CyberTrust Root
       Common Name: GTE CyberTrust Root
  Certificate Type: Trusted Certificate
Issuer Common Name: GTE CyberTrust Root
    Validity Dates: <Feb 23 23:01:00 1996 GMT> - <Feb 23 23:59:00 2006 GMT>
   MD5 Fingerprint: C4:D7:F0:B2:A3:C5:7D:61:67:F0:04:CD:43:D3:BA:58
  SHA1 Fingerprint: 90:DE:DE:9E:4C:4E:9F:6F:D8:86:17:57:9D:D3:91:BC:65:A6...

次の表は、pkgadm listcert コマンドの出力を一覧にまとめたものです。

フィールド 

説明 

Keystore Alias (キーストア別名) 

印刷、署名、削除のいずれかの目的で証明書を取得する場合、この名前を証明書の参照名として使用する必要がある。 

Common Name (共通名) 

証明書の共通の名前。信頼される証明書の場合、この名前はキーストア別名と同じになる。 

Certificate Type (証明書の種類) 

次の 2 つの種類がある。 

  • Trusted Certificate (信頼される証明書) - ほかの証明書を検証する際の信頼基盤として使用可能な証明書。信頼される証明書には非公開鍵は関連付けられない。

  • Signing Certificate (署名証明書) - パッケージまたはパッチへの署名用として使用可能な証明書。署名証明書には非公開鍵が関連付けられる。

Issuer Common Name (発行者の共通名) 

この証明書の署名、発行をしたエンティティの名前。信頼される証明書発行局 (CA、Certificate Authority) が発行した証明書の場合、発行者の共通名は、共通名と同じになる。 

Validity Dates (有効な日付) 

証明書の有効な日付。 

MD5 Fingerprint (MD5 フィンガープリント) 

証明書の MD5 ダイジェスト。このダイジェストを使えば、その証明書が証明元からの転送中に改変されなかったかどうかを検証できる。 

SHA1 Fingerprint (SHA1 フィンガープリント) 

MD5 フィンガープリントに似ているが、異なるアルゴリズムを使って計算される。 

証明書を認証するには、各証明書の MD5 ハッシュおよび SHA1 ハッシュ (「フィンガープリント」とも呼ばれる) を、発行者によって公開されている既知の正しいフィンガープリントと比較します。

SunSolve Online の信頼される証明書

SunSolve Online は、以下の証明書を使って署名付きパッチ上のデジタル署名を検証します。なお、その際、PatchPro を含む以前の Solaris パッチ管理ツール (smpatch コマンド) を使います。

「証明書発行局」は、パッチ上のデジタル署名の復号時に使用される公開鍵と、こうした公開鍵の所有者の関係を認証します。

Sun ルート CA 証明書、Sun Class B CA 証明書、およびパッチ署名証明書は、PatchPro を含む Solaris パッチ管理ツールに含まれています。この 3 つの証明書により、Sun のルート CA 証明書から Class B CA 証明書、Class B CA 証明書からパッチ管理証明書にさかのぼってパッチの信頼性を検証する認証チェーンが構成されます。最終的に、Sun のルート CA は、GTE CyberTrust CA によって認証されます。

Sun の信頼される証明書のインポート

署名付きパッケージおよびパッチを追加するための Sun の信頼される証明書を取得するには、次の方法を使います。

パッケージキーストアのセットアップ

以前の Solaris リリースでは、パッチ管理ツールをダウンロードし、keytool コマンドを使って証明書をインポートすることで、PatchPro が使用する Java キーストアを作成することができました。

証明書の格納された Java キーストアがシステム上にすでに存在している場合、Sun Microsystems のルート CA 証明書を Java キーストアから keytool コマンドを使ってエクスポートできます。続いて、その証明書を、pkgadm コマンドを使ってパッケージキーストア内にインポートします。

ルート CA 証明書のパッケージキーストアへのインポートが完了すると、pkgadd コマンドや patchadd コマンドを使って署名付きパッケージおよびパッチをシステムに追加できるようになります。


注 –

なお、Sun Microsystems のルート証明書が必要となるのは、Sun が署名したパッチやパッケージを追加する場合のみです。


証明書をパッケージキーストアにインポートする手順については、信頼される証明書をパッケージキーストアにインポートする方法 (pkgadm addcert)を参照してください。

pkgadd コマンドを使って署名付きパッケージを追加するための完全な手順については、署名付きパッケージの追加と削除 (作業マップ)を参照してください。

ソフトウェアパッケージを管理するためのツール

Solaris リリースをシステムにインストールした後でソフトウェアパッケージをシステムに追加したり、システムから削除するためのツールは、次のとおりです。

表 22–1 ソフトウェアパッケージツール

ソフトウェアパッケージ情報の追加、削除、表示に使用するツール 

追加機能  

Solaris Web Start プログラム 

インストーラを起動して、Solaris 9 メディアパックに含まれている製品を追加する。個々のソフトウェアパッケージを追加することはできない 

Solaris Product Registry (GUI) 

インストーラを起動して、ソフトウェア製品情報を追加、削除、または表示する。Solaris Web Start プログラムや Solaris pkgadd コマンドを使って初めからインストールされているソフトウェア製品に関する情報を削除または表示する場合は、Solaris Product Registry を使用する

Solaris Product Registry prodreg ビューア (コマンド行インタフェース)

prodreg コマンドでは、Solaris Web Start プログラムや Solaris pkgadd コマンドを使ってインストールされているソフトウェア製品に関する情報を削除または表示できる

パッケージコマンド (pkgaddpkgrmpkginfo)

これらのコマンドをスクリプトに組み込む、オプションのファイルを設定してユーザーの対話操作を省略したり特別なチェック作業を追加したりする、ソフトウェアパッケージをスプールディレクトリにコピーする 

ソフトウェアパッケージの追加または削除 (pkgadd)

表 22–1 に記載されているソフトウェア管理ツールはすべて、インストール済みソフトウェアに関する情報の追加、削除、または照会に使用できます。Admintool、Solaris Product Registry の prodreg ビューア、および Web Start プログラムはいずれも、Solaris Product Registry に格納されているインストールデータにアクセスします。pkgadd コマンドや pkgrm コマンドといったパッケージツールでも、インストールデータにアクセスし、管理できます。

パッケージを追加する際、pkgadd コマンドは、ファイルを解凍して、インストール用メディアからローカルシステムのディスクにコピーします。パッケージを削除する際、pkgrm コマンドは、そのパッケージに関連するファイルが他のパッケージと共有されている場合を除いて、それらをすべて削除します。

パッケージファイルはパッケージ形式で配布され、配布されたままの状態では使用できません。pkgadd コマンドは、ソフトウェアパッケージの制御ファイルを解釈してから、製品ファイルを解凍して、システムのローカルディスクにインストールします。

pkgaddpkgrm の各コマンドは、標準の場所にそのログ出力を記録しませんが、インストールまたは削除される製品を常時監視しています。pkgaddpkgrm の各コマンドは、インストールまたは削除されたパッケージに関する情報をソフトウェア製品用データベースに格納します。

このデータベースを更新することによって、pkgaddpkgrm の各コマンドは、システムにインストールされているすべてのソフトウェア製品の記録を保持します。

ソフトウェアパッケージの追加にあたっての重要な注意点 (pkgadd)

使用中のシステムでパッケージのインストールまたは削除を行う場合は、次の点に注意する必要があります。

パッケージの削除に関するガイドライン (pkgrm)

パッケージを削除するときは、rm コマンドを代わりに使いたい場合でも、これらのツールのいずれかを使用する必要があります。たとえば、rm コマンドを使用すると、バイナリ実行可能ファイルを削除することができますが、これは pkgrm コマンドを使用してバイナリ実行可能ファイルを含むソフトウェアパッケージを削除する場合とは異なります。rm コマンドを使用してパッケージのファイルを削除すると、ソフトウェア製品用データベースが破壊されます。1 つのファイルだけを削除したい場合は、removef コマンドを使用します。このコマンドは、該当ファイルがパッケージから削除されるように、ソフトウェア製品データベースを正しく更新します。詳細については、removef(1M) のマニュアルページを参照してください。

複数のバージョンのパッケージ (たとえば、複数バージョンの文書処理アプリケーション) をインストールしておきたい場合は、pkgadd コマンドを使用して、すでにインストール済みのパッケージとは異なるディレクトリに新しいバージョンをインストールしてください。パッケージがインストールされているディレクトリは、ベースディレクトリと呼ばれます。ベースディレクトリは、管理ファイルと呼ばれる特殊ファイルに basedir キーワードを設定することによって操作できます。管理ファイルの使用方法とベースディレクトリの設定方法については、パッケージ追加時のユーザーの対話操作を省略する (pkgadd) と、admin(4) のマニュアルページを参照してください。


注 –

Solaris ソフトウェアをインストールするときにアップグレードオプションを使用すると、Solaris インストール用ソフトウェアは、ソフトウェア製品用データベースを調べて、すでにシステムにインストールされている製品があるかどうかを確認します。


パッケージ追加時のユーザーの対話操作を省略する (pkgadd)

管理ファイルの使用

pkgadd -a コマンドを使用すると、特殊な管理ファイルを調べて、インストールの進め方についての情報を入手できます。通常、pkgadd コマンドはいくつかのチェックを行い、指定されたパッケージを実際に追加する前に、プロンプトを表示してユーザーに確認します。ただし、管理ファイルを作成すれば、このようなチェックを省略して、ユーザーの確認なしでパッケージをインストールするように pkgadd コマンドに指示できます。

デフォルトでは、pkgadd コマンドは現在の作業用ディレクトリに管理ファイルがないか調べます。現在の作業用ディレクトリの中に管理ファイルを見つけることができなかった場合、pkgadd コマンドは /var/sadm/install/admin ディレクトリに指定の管理ファイルがないか調べます。また、pkgadd コマンドには管理ファイルへの絶対パスも使用できます。


注意 – 注意 –

管理ファイルは注意して使用してください。管理ファイルを使用して、pkgadd が通常実行するチェックとプロンプトを省略する場合は、事前にパッケージのファイルがインストールされている場所や、パッケージのインストール用スクリプトがどのように実行されるのかを知っておく必要があります。


次の例は、pkgadd コマンドがパッケージのインストール前にユーザーに確認のプロンプトを表示しないようにするための管理ファイルを示しています。


mail=
instance=overwrite
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
networktimeout=60
networkretries=3
authentication=quit
keystore=/var/sadm/security
proxy=
basedir=default

パッケージを追加するときにユーザーの対話操作を省略する以外にも、いろいろな目的で管理ファイルを使用できます。たとえば、管理ファイルを使用すれば、エラーが発生した場合に (ユーザーの対話操作なしに) パッケージのインストールを終了したり、pkgrm コマンドでパッケージを削除する場合に対話操作を省略できます。

また、特別なインストールディレクトリをパッケージに割り当てることもできます。この方法は、1 つのシステム上で複数のバージョンのパッケージを管理する場合に役に立ちます。これを行うには、パッケージがインストールされる場所を示す代替ベースディレクトリを管理ファイル内に設定します (basedir キーワードを使用)。詳細については、admin(4) のマニュアルページを参照してください。

応答ファイルの使用 (pkgadd)

応答ファイルには、「対話型パッケージ」で尋ねられる特定の質問に対するユーザーの応答が格納されます。対話型パッケージには、パッケージをインストールする前にいくつかの質問 (たとえば、パッケージのオプションをインストールするかどうかなど) をユーザーに尋ねる request スクリプトが格納されています。

インストールするパッケージが対話型パッケージであることがインストール前にわかっていて、さらにそのパッケージをこの先インストールするときにユーザーの対話操作を省略できるように応答を格納しておきたい場合は、pkgask コマンドを使用してユーザーの応答を保存できます。このコマンドの詳細については、pkgask(1M) のマニュアルページを参照してください。

request スクリプトが尋ねる質問への応答を格納した後は、pkgadd -r コマンドを使用して、ユーザーの対話操作なしにパッケージをインストールすることができます。