このパートでは、Solaris ソフトウェアのパッケージとパッチの管理について説明します。次の章が含まれます。
Solaris 環境におけるソフトウェア製品の追加と削除についての概要を説明します。 |
|
クライアントのタイプ別に、ソフトウェアパッケージをインストールしたり削除したりする手順について説明します。 |
|
Solaris 環境でのパッチの追加と削除についての概要と手順を説明します。 |
ソフトウェアの管理には、スタンドアロンシステム、サーバー、およびそのクライアントへのソフトウェアのインストール、また、ソフトウェアの削除が含まれます。この章では、ソフトウェアのインストールと管理についての概要を示します。ここでは Solaris ソフトウェアのインストールについては説明しません。
この章の内容は次のとおりです。
patchadd コマンドと patchrm コマンドは、Solaris 2.x システムにパッチを追加および削除するために使用します。Solaris 1.x システムのパッチの管理には使用できません。
1 つまたは複数のパッチを、システム、クライアントサービス、またはネットインストールイメージに追加できます。クライアントサービスは、Solaris 2.3 のような以前のリリースでもかまわず、サーバーからクライアントに提供されます。
パッチが root と usr の両方のパッケージを含んでいる場合、patchadd コマンドは 2 回実行しなければなりません。まず、-R オプションで、パッチの root パッケージを適用し、次に、-S オプションで、パッチの usr パッケージを適用します。
詳細については、第 18 章「パッチ管理の概要」を参照してください。
ソフトウェアを管理する手順については、次を参照してください。
ソフトウェア管理の問題の解決については、第 74 章「ソフトウェア管理の問題の解決」を参照してください。
ここで説明するソフトウェア管理には、ソフトウェア製品のインストールと削除が含まれます。Sun およびそのサードパーティベンダーは、ソフトウェアパッケージと呼ばれる形式で製品を提供しています。(パッケージという用語は一般に、ソフトウェア製品が使用されるシステムに、その製品を配布し、インストールする方式を指します。) パッケージの最も単純な形式としては、定義済みフォーマットのファイルとディレクトリの集合を考えることができます。このフォーマットは、アプリケーションバイナリインタフェース (ABI) に準拠します。この ABI は、System V インタフェース定義を補足するものです。Solaris オペレーティング環境には、このフォーマットを解釈して、パッケージをインストールまたは削除したり、インストールを検査する方法を提供するユーティリティがあります。
システムにソフトウェアを追加したり、システムから削除するために、次の 2 つのツールがあります。
pkgadd コマンドと pkgrm コマンド
AdmintoolTM (システム管理ツール)
これらのどちらを使用してもかまいませんが、それぞれに長所を持っています。
pkgadd コマンドと pkgrm コマンドには柔軟性があります。たとえば、これらのコマンドをスクリプトに組み込んだり、オプションのファイルを設定してユーザーの対話操作や特別なチェック作業をなくしたり、また、ソフトウェアパッケージをスプールディレクトリにコピーすることができます。すでに pkgadd コマンドと pkgrm コマンドによるパッケージの追加と削除に詳しいユーザーの場合は、これらのコマンドを引き続き使用した方が簡単です。
Admintool を使うとソフトウェアの追加、削除が容易になります。これは、このツールが pkgadd コマンドと pkgrm コマンドのグラフィカルインタフェースであり、オンラインヘルプが組み込まれているためです。Admintool のグラフィカルブラウザは、すでにシステムにインストールされているソフトウェアや、インストール用媒体に入っているソフトウェアを表示するのに特に適しています。ソフトウェアパッケージの命名規則やコマンド行オプションの使用方法にまだ慣れていないユーザー、また、一度に 1 つのシステムでしかソフトウェアの管理を行わないユーザーの場合は、Admintool を使用して、ソフトウェアの追加、削除を行うようお勧めします。
表 16-1 は、ソフトウェアの管理に、Admintool を使用した場合と、pkgadd コマンドと pkgrm コマンドを使用した場合を比較したものです。
表 16-1 Admintool のソフトウェア管理機能
ソフトウェア管理作業 |
Admintool を使用して実行可能かどうか |
---|---|
スタンドアロンシステム、サーバーシステム、またはディスクレスクライアントでのパッケージの追加と削除 |
可能 |
インストールされたソフトウェアすべての簡単な表示 |
可能 |
インストール用媒体上のパッケージの簡単な表示と選択 |
可能 |
スプールディレクトリへのパッケージの追加 |
不可 |
管理ファイルを使用したユーザー対話操作の省略 |
不可 |
Solaris 2.5 より前のリリースでは、ソフトウェアマネージャ (swmtool コマンドでアクセス) は、ソフトウェアの追加、削除を行うグラフィカルツールでした。Solaris 2.5 と 2.6 リリースでは Admintool (admintool コマンドでアクセス) がこの機能を提供します。swmtool コマンドを Solaris 2.5 または 2.6 システムで使用すると、Admintool が起動します。
pkgadd コマンドと pkgrm コマンド、または Admintool はソフトウェアを追加したり削除したりするのに使用します。Admintool は pkgadd コマンドと pkgrm コマンドのグラフィカルインタフェースです。
パッケージを追加する際、pkgadd ソフトウェアは、ファイルを解凍して、インストール用媒体からローカルシステムのディスクにコピーします。パッケージを削除する際、pkgrm コマンドは、そのパッケージに関連するファイルが他のパッケージと共有されている場合を除いて、それらをすべて削除します。
パッケージファイルはパッケージフォーマットで配布され、配布されたままの状態では使用できません。pkgadd コマンドは、ソフトウェアパッケージの制御ファイルを解釈してから、製品ファイルを解凍して、システムのローカルディスクにインストールします。
pkgadd コマンドと pkgrm コマンドは、標準の場所にそのログ出力を記録しませんが、インストールまたは削除された製品について追跡を行います。pkgadd と pkgrm は、インストールまたは削除されたパッケージに関する情報をソフトウェア製品データベースに格納します。
このデータベースを更新することにより、pkgadd および pkgrm の各コマンドは、システムにインストールされたすべてのソフトウェア製品の記録を追跡します。
システムでパッケージのインストールまたは削除を行うにあたっては、次のことを知っておく必要があります。
パッケージの命名規則 - Sun パッケージは、SUNWvolr、SUNWadmap、SUNWab2m などのように、必ず接頭辞 SUNW で始まります。サードパーティのパッケージは、通常、その会社を表す接頭辞で始まります。
インストール済みのソフトウェア - pkginfo コマンドを使用すると、システムにインストール済みのソフトウェアを表示できます。あるいは、Admintool を使用して、インストール済みのソフトウェアを表示することもできます。
サーバーとクライアントによるソフトウェアの共有の状態 - クライアントのソフトウェアは、一部がサーバーに、一部がクライアントに置かれる場合があります。このような場合、クライアントにソフトウェアを追加するには、サーバーとクライアントの両方にパッケージを追加する必要があります。(「クライアントソフトウェア管理に関するガイドライン」で、クライアントソフトウェアの管理方法について詳しく説明します。)
スタンドアロンシステムでのソフトウェアの管理は、パッケージのインストール用ツールと規則を理解すれば、かなり簡単なものです。ソフトウェアパッケージをシステムのローカルディスクにインストールするだけで、そのソフトウェアを使用できるようになります。しかし、クライアントシステム上でソフトウェアを管理する方法は、これよりも難しくなります。ソフトウェアがサーバーとクライアントに分かれて置かれる場合には特に困難です。(たとえば、1 つのソフトウェアに、クライアントのルートファイルシステムにインストールされるファイルを持つパッケージと、クライアントが通常サーバーからマウントする /usr ファイルシステムにインストールされるファイルを持つパッケージがある場合などです。)
Solaris は、ディスクレスクライアントと Solstice AutoClient システムをサポートしています。ディスクレスクライアントと AutoClient システムでは、すべてのソフトウェアがサーバー上に置かれます。たとえば、ソフトウェアパッケージをディスクレスクライアントに追加する場合、ローカルディスクに記憶デバイスがないため、実際にはそのクライアントにパッケージをインストールしません。代わりに、サーバー、またはクライアントのルートファイルシステム (サーバー上にある)、あるいはこの両方にパッケージを追加します。ディスクレスまたは AutoClient システムのルートファイルシステムは、通常、サーバー上の /export/root/hostname です。
AutoClient システムには、ディスク領域がありますが、これはキャッシュのためにのみ使用されます。ソフトウェアはサーバー上に置かれます。(詳細は『Solstice AutoClient 2_1 Administration Guide』を参照してください。)
ディスクレスクライアントと AutoClient システムは、そのルートファイルシステムとサーバーの /usr (または他の共有ファイルシステム) に分かれてインストールされる場合があるため、ソフトウェアパッケージをこれらのクライアントに追加するときには、ソフトウェアパッケージがどのファイルシステムにインストールされるかを知る必要があります。
ディスクレスクライアントと AutoClient システムにパッケージを追加する場合は、これらのパッケージのファイルがどこにインストールされるかを知る必要があります。つまり、クライアントのルートファイルシステムか、サーバーの /usr ファイルシステム (またはクライアントと共有される他のいずれかのファイルシステム) のどちらかです。
Sun ソフトウェアパッケージの多くは、そのインストール場所を示すように命名されています。たとえば、SUNWvolr パッケージはルートファイルシステムにインストールされ、SUNWvolu パッケージは /usr ファイルシステムにインストールされます。「r」という接尾辞はルートを、「u」という接尾辞は /usr を表します。しかし、Sun パッケージのファイルのインストール場所を判断する最も確実な方法は、SUNW_PKGTYPE
パラメータを調べることです。これは、パッケージの pkginfo ファイルに設定されています。pkginfo ファイルを調べるためのインタフェースについては、「パッケージファイルのインストール場所を決定する方法」で説明します。
Sun パッケージの一部には、対応する SUNW_PKGTYPE
パラメタがありません。これらのパッケージは、通常、/opt にインストールされるように設定されています。Sun パッケージに SUNW_PKGTYPE
パラメタ値がないときは、それをインストールするときに、サードパーティパッケージとして扱ってください。(詳細については、「サードパーティパッケージをサーバーおよびクライアントへインストールする」を参照してください。)
ディスクレスクライアントまたはデータレスクライアントに Sun パッケージをインストールするときは、表 16-2 の一般的なガイドラインに従ってください。
表 16-2 クライアントへの Sun パッケージのインストール
パッケージファイルのインストール場所 |
パッケージのインストール場所 |
---|---|
クライアントまたはクライアントのルートファイルシステム |
|
サードパーティパッケージは、SUNW_PKGTYPE
パラメタを使用しません。このため、パッケージファイルのインストール場所を判断する簡単な方法はありません。最も確実な方法は、パッケージの pkgmap ファイルを調べることです。この情報に基づいて、表 16-2 のガイドラインに従いインストールを行うことができます。ただし、パッケージの pkgmap ファイルを調べる手間を省きたい場合は、次の手順に従ってください。これは、サードパーティパッケージをディスクレスクライアントおよび AutoClient システムにインストールするための最も安全な方法です。
サーバーにソフトウェアをインストールします。サーバーがクライアントと共有するすべてが更新されます。(これは、サーバーとクライアントが、同じバージョンの Solaris ソフトウェアを実行し、同じハードウェアプラットフォームで実行されていることを前提としています。たとえば、両方とも x86 システムであるか、両方とも SPARC システムであるなどです。)
ソフトウェアをクライアントにインストールします。使用しているのが pkgadd コマンドか Admintool のいずれであっても、これはクライアントに適したファイルだけをインストールします。pkgadd コマンドまたは Admintool は、サーバーからマウントされたファイルシステムで、すでに存在するソフトウェアはインストールしません。これは、そのソフトウェアが、クライアントによりすでに使用可能になっているためです。
次の場合には、クライアントとサーバーにおけるソフトウェア管理がさらに複雑になります。
サーバーが、クライアントと異なるリリースの Solaris を実行している場合。たとえば、サーバーが Solaris 2.5 を実行していて、Solaris 2.3 のディスクレスクライアントにサービスを提供している場合などです。
サーバーとクライアントのハードウェアプログラムプラットフォームが異なる場合。たとえば、サーバーが SPARC システムで、x86 システムであるディスクレスクライアントにサービスを提供している場合などです。
これらは異機種環境と呼ばれます。異機種環境のソフトウェアを管理する場合は、まずサーバーのクライアントに適した正しい Solaris とアーキテクチャサービスを追加する必要があります。これには、ホストマネージャを使用して、モニターに「サービスを追加」します (詳細については、第 4 章「サーバーとクライアントサポートの管理の手順」を参照してください)。
異機種環境でパッケージを追加する方法の詳細については、「異機種クライアント / サーバー環境でのパッケージの追加」を参照してください。
pkgadd コマンドと pkgrm コマンドは、ソフトウェア製品用データベース内の情報を更新するため、パッケージを削除するときは、rm コマンドではなく、pkgrm コマンドを使用する必要があります。たとえば、rm コマンドを使用すると、バイナリ実行可能ファイルを削除することができますが、これは pkgrm を使用してバイナリ実行可能ファイルを含むソフトウェアパッケージを削除する場合とは異なります。rm コマンドを使用してパッケージのファイルを削除すると、ソフトウェア製品用データベースが破壊されます。 (1 つのファイルだけを削除したい場合には、removef コマンドを使用してください。これは、ソフトウェア製品用データベースを正しく更新します。詳細については、removef(1M) のマニュアルページを参照してください。)
複数のバージョンのパッケージをインストールしておきたい場合は (たとえば、複数バージョンの文書処理アプリケーションなど)、新しいバージョンを、すでにインストールされたパッケージとは異なるディレクトリにインストールしてください。パッケージがインストールされているディレクトリは、ベースディレクトリと呼ばれ、このベースディレクトリは、管理ファイルと呼ばれる特殊ファイルに basedir キーワードを設定することによって操作できます。管理ファイルの使用とベースディレクトリの設定の詳細については、「パッケージ追加時のユーザーの対話操作を省略する」と admin(4) のマニュアルページを参照してください。
Solaris ソフトウェアをインストールするときにアップグレードオプションを使用すると、Solaris インストール用ソフトウェアは、ソフトウェア製品用データベースを検索して、製品がすでにシステムにインストールされているかどうかを判断します。
pkgadd コマンドを -a オプションを指定して実行するとき、pkgadd コマンドは、どのようにインストールを進めるかについての情報を持つ特殊な管理ファイルを参照します。通常、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 basedir=default
パッケージを追加するときのユーザーの対話操作を省略する以外にも、いろいろな目的で管理ファイルを使用できます。たとえば、管理ファイルを使用すれば、エラーが発生した場合に、(ユーザーの対話操作なしに) パッケージのインストールを終了できます。また、pkgrm コマンドでパッケージを削除するときの対話を省略できます。
また、特別なインストールディレクトリをパッケージに割り当てることができます。(これは、1 つのシステム上で複数のバージョンのパッケージを管理する場合に役に立ちます。) これを行うには、パッケージがインストールされる場所を指定する、代替ベースディレクトリを管理ファイルに設定します (-basedir キーワードを使用する)。詳細については、admin(4) のマニュアルページを参照してください。
応答ファイルには、対話型パッケージで尋ねられる特定の質問に対するユーザーの応答が含まれます。対話型パッケージには、パッケージをインストールする前にユーザーに質問する (たとえば、パッケージのオプションをインストールするかどうかなど) request スクリプトが含まれます。
インストールしたいパッケージが対話型パッケージであることを、インストール前に知っている場合、さらに、応答を格納しておいて、当該パッケージの将来のインストール時にユーザーの対話操作を省略したい場合は、pkgask コマンドを使用してユーザーの応答を保存できます。このコマンドの詳細については、pkgask(1M) のマニュアルページを参照してください。
一度 request スクリプトが尋ねる質問への応答を格納すると、pkgadd コマンドに -r オプションを指定すれば、ユーザーの対話操作なしにパッケージをインストールできます。
この章では、Solaris コマンドと Admintool グラフィカルインタフェースを使用して、ソフトウェアパッケージをインストール、削除、管理する方法を説明します。
この章で説明する手順は次のとおりです。
表 17-1 に、ソフトウェアパッケージの追加、削除、検査、インストールに使用するコマンドを示しています。
表 17-1 パッケージの追加および削除を行うコマンド
コマンド |
説明 |
---|---|
pkgadd(1M) |
ソフトウェアパッケージをインストールする |
pkgrm(1M) |
ソフトウェアパッケージを削除する |
pkgchk(1M) |
ソフトウェアパッケージのインストールを検査する |
pkginfo(1) |
ソフトウェアパッケージ情報を表示する |
pkgparam(1) |
ソフトウェアパッケージのパラメータ値を表示する |
Solaris 2.5 より前に開発された一部のパッケージを追加、または削除する場合、いくつかの問題があることがわかっています。ユーザーとの対話中にパッケージの追加または削除に失敗するか、ユーザー対話を要求されても応答が無視された場合は、次の環境変数を設定してください。
NONABI_SCRIPTS=TRUE
スーパーユーザーとしてログインします。
すでにインストールされているパッケージの中で、追加しようとしているものと同じ名前のパッケージをすべて削除します。
これによってシステムは、追加および削除されたソフトウェアの正しい記録を保持できます。同じアプリケーションの複数のバージョンをシステムで管理したい場合もあります。この方法の概要については、「パッケージの削除に関するガイドライン」を、手順については、「パッケージを削除する方法」を参照してください。
ソフトウェアパッケージをシステムに追加します。
# 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?
このプロンプトには、yes、no、または quit のいずれかで応答します。複数のパッケージが指定されている場合は、no と入力して、インストール中のパッケージのインストールを中止してください。pkgadd は、他のパッケージのインストールを続けます。インストールを中止するには、quit と入力してください。
パッケージが正常にインストールされたことを確認するには、pkgchk コマンドを使用します。
# pkgchk -v pkgid
pkgchk が、エラーがないと判断した場合は、インストールされたファイルのリストが返されます。そうでない場合は、エラーについて報告されます。
次の例は、SUNWaudio パッケージをマウントされた Solaris CD からインストールするコマンドを示しています。この例では、pkgchk コマンドを使用して、パッケージファイルが正しくインストールされたかどうかを検査する方法も示しています。
# pkgadd -d /cdrom/cdrom0/s0/Solaris_2.6/Product SUNWaudio . . . Installation of <SUNWaudio> complete. # 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 ディレクトリを探して、コマンド行に指定されたすべてのパッケージを見つけます。パッケージをスプールディレクトリにコピーすることと、パッケージをシステム上にインストールすることとは異なることに注意してください。
サーバーまたはスタンドアロンシステムのスーパーユーザーとしてログインします。
すでにスプールされているパッケージの中で、追加しようとしているものと同じ名前のパッケージをすべて削除します。
スプールされたパッケージを削除する方法については、「スプールされたパッケージを削除する方法」を参照してください。
ソフトウェアパッケージをスプールディレクトリに追加します。
# pkgadd -d device-name -s spooldir pkgid...
-d device-name |
ソフトウェアパッケージの絶対パスを指定する。device-name は、デバイス、ディレクトリ、またはスプールディレクトリのいずれかへのパスにすることができる。 |
-s spooldir |
パッケージがスプールされるスプールディレクトリの名前を指定する。spooldir を指定する必要がある。 |
pkgid |
(省略可能) インストールされる 1 つまたは複数のパッケージの名前を空白で区切って指定する。この引数を省略すると、pkgadd は、使用可能なすべてのパッケージをコピーする。 |
パッケージがスプールディレクトリに正常にコピーされたことを確認するには、pkginfo コマンドを使用します。
$ pkginfo -d spooldir | grep pkgid
pkgid が正常にコピーされると、pkginfo コマンドは、それに関する 1 行の情報を返します。正常にコピーされないと、システムプロンプトが返されます。
次の例は、SUNWaudio および SUNWab2m の各パッケージを、マウントされた SPARC 版 Solaris 2.x CD からデフォルトのスプールディレクトリ (/var/spool/pkg) にコピーするコマンドを示しています。
# pkgadd -d /cdrom/cdrom0/s0/Solaris_2.6/Product -s /var/spool/pkg SUNWaudio SUNWab2m Transferring <SUNWaudio> package instance Transferring <SUNWab2m> 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.
この説明では、「同機種クライアント/サーバー」とは、同じバージョンの Solaris を実行していて、ハードウェアプラットフォーム (すべて SPARC か、またはすべて x86 プラットフォーム) が同じであるクライアントとサーバーを意味します。
この節では、ファイルをクライアントのルートファイルシステムに置くパッケージのインストール方法を説明します。クライアントにパッケージをインストールするときに、そのパッケージがファイルをクライアントのルートファイルシステムに置かない場合、そのパッケージは直接サーバー上にインストールして共有することができます。(これは、パッケージがサーバーの /usr などのファイルシステムにインストールされる場合を想定しています。)
pkgadd コマンドに -R オプションを付けて使用して、クライアントインストールのためのクライアントルートファイルシステムの位置を指定してください。(-R オプションを使用すると、パッケージインストール用の代替ベースディレクトリを指定できるという一般的な誤解がありますが、これは間違いです。-R オプションは、クライアントのルートファイルシステムを定義するものです。代替ベースディレクトリを指定するには、-a オプションを付けて pkgadd を使用し、basedir キーワードが新しいインストールディレクトリに設定されている管理ファイルを提供してください。)
ディスクレスクライアントまたは AutoClient システムのサーバーにインストールされたパッケージは、そのクライアントと他のクライアントに読み取り専用で共有されます。
クライアント/サーバー環境でパッケージをインストールして管理する方法はいくつかありますが、この項では、サーバーからのインストール方法について説明します。これはソフトウェアを集中管理する方法です。ただし、クライアントにログインして、直接それらにソフトウェアをインストールできることに注意してください。
通常、Sun パッケージを同機種環境のクライアントにインストールする場合は、表 17-2 のガイドラインに従ってください。
表 17-2 同機種環境のクライアントへの Sun パッケージのインストール
パッケージファイルのインストール場所 |
手順 |
---|---|
ルート (/) ファイルシステム |
「ディスクレスクライアントまたは AutoClient システムのルート (/) ファイルシステムにパッケージを追加する方法」の手順を使用してパッケージを追加する。 |
/usr |
「スタンドアロンシステムにパッケージを追加する方法」の手順を使用してパッケージを追加する。 |
「パッケージファイルのインストール場所を決定する方法」の手順を使用すると、Sun パッケージファイルのインストール場所を調べることができます。
サードパーティパッケージをクライアントに追加する場合は、次のガイドラインに従ってください。
「スタンドアロンシステムにパッケージを追加する方法」の手順に従って、サーバーにパッケージをインストールします。
「ディスクレスクライアントまたは AutoClient システムのルート (/) ファイルシステムにパッケージを追加する方法」のいずれか適切な手順に従って、クライアントにパッケージをインストールします。
この説明では、「異機種クライアント/サーバー環境」とは、クライアントとサーバーが異なるバージョンの Solaris を実行しているか、またはハードウェアプラットフォームが異なる (たとえば、Solaris 2.6 クライアントの Solaris 2.3 サーバーや、SPARC クライアントを備えた x86 サーバーなど) 場合を示します。異機種クライアント/サーバー環境へパッケージを追加することは、特有の困難が伴います。サーバーには、それがサポートする異機種クライアントのための複数の /usr ファイルシステムがあります。たとえば、x86 システム用の x86 /usr ファイルシステム、Solaris 2.4 クライアント用の Solaris 2.4 /usr ファイルシステムなどです。通常、異機種クライアント/サーバー環境にパッケージをインストールする場合は、表 17-3 のガイドラインに従ってください。
表 17-3 異機種環境へのパッケージのインストール
パッケージファイルのインストール場所 |
手順 |
---|---|
ルート (/) ファイルシステム |
「ディスクレスクライアントまたは AutoClient システムのルート (/) ファイルシステムにパッケージを追加する方法」の手順を使用してパッケージを追加する。 |
/usr |
「パッケージをサーバーに追加する方法」の手順を使用してパッケージを追加する。 |
この手順は、Sun ソフトウェアパッケージにのみ有効です。サードパーティソフトウェア製品の場合、パッケージファイルのインストール場所を判断する最も確実な方法は、pkgmap ファイルでパッケージのディレクトリを調べる方法です。
任意のシステムにログインします。
パッケージがあるディレクトリにアクセスできなければなりません。
Sun パッケージファイルのインストール場所を指定します。
$ pkgparam -d device-name pkgid SUNW_PKGTYPE
-d device-name |
ソフトウェアパッケージの絶対パスを指定する。device-name は、デバイス、ディレクトリ、またはスプールディレクトリのいずれかへのパスにすることができる。-d オプションを使用しないと、pkgparam は、ローカルシステムにインストールされた指定の pkgid のデフォルトのインストール用ディレクトリを返す。 |
pkgid |
ソフトウェアパッケージの名前 |
Solaris ソフトウェアパッケージのインストール場所について報告する特殊パラメタを指定する。パッケージに |
$ pkgparam -d /cdrom/cdrom0/s0/Solaris_2.6 /Product SUNWvolr SUNW_PKGTYPE root $ pkgparam -d /cdrom/cdrom0/s0/Solaris_2.6/Product SUNWvolu SUNW_PKGTYPE usr
ディスクレスクライアントまたは AutoClient システムにパッケージを追加する場合、クライアントはローカルにはシステムディスクしか持たないため、実際にはそのクライアントにパッケージをインストールすることにはなりません。代わりに、サーバー上にあるクライアントのルートファイルシステムにパッケージを追加します。ディスクレスクライアントまたは AutoClient システムのルートファイルシステムは、通常、サーバーの /export/root/hostname にあります。
パッケージファイルが /usr ファイルシステムにインストールされる場合は、パッケージをサーバーにインストールする必要があります。同機種クライアント/サーバー環境で作業している場合は、表 17-2 を使用して、パッケージのインストール方法を判断してください。異機種クライアント/サーバー環境で作業している場合は、表 17-3 を使用して、パッケージのインストール方法を決定してください。
サーバーにスーパーユーザーとしてログインします。
すでにインストールされているパッケージの中で、追加しようとしているものと同じ名前のパッケージをすべて削除します。
これによって、システムは、追加および削除されたソフトウェアの正しい記録を保持できます。同じアプリケーションの複数のバージョンをシステムで管理したい場合もあります。この方法の概要については、「パッケージの削除に関するガイドライン」を、手順については、「ディスクレスクライアントまたは AutoClient システムのパッケージを削除する方法」を参照してください。
ソフトウェアパッケージをクライアントシステムのルート (/) ファイルシステムに追加します。
server# pkgadd -R rootpath -d device-name pkgid...
-R rootpath |
クライアントのルートファイルシステムのパス名を指定する。 |
-d device-name |
ソフトウェアパッケージの絶対パスを指定する。device-name は、デバイス、ディレクトリ、またはスプールディレクトリのいずれかへのパスにすることができる。パッケージのあるパスを指定しないと、pkgadd コマンドはデフォルトのスプールディレクトリ (/var/spool/pkg) をチェックする。パッケージがそこにない場合、パッケージのインストールは失敗する。 |
pkgid |
(省略可能) インストールされる 1 つまたは複数のパッケージの名前を空白で区切って指定する。この引数を省略すると、pkgadd は、使用可能なすべてのパッケージを表示する。 |
パッケージのインストール中に、次のメッセージが表示されることがあります。WARNING: filename <not present on Read Only file system>
これは、パッケージのファイルの一部がインストールされていないことを示します。クライアントが、ソフトウェアを正しく動作させるために必要なすべてのファイルへのアクセスをもっていない可能性があります。
パッケージが正常にインストールされたことを確認するには、サーバーにログインしてスーパーユーザーになり、pkginfo コマンドを使用します。
server# pkginfo -R rootpath | egrep pkgid
pkginfo コマンドは、インストールされた pkgid に関する 1 行の情報を返します。pkgid がインストールされていない場合、pkginfo は何も表示しません。
pkgchk コマンドを使用して、パッケージが正常にインストールされていることを確認します。
server# pkgchk -R rootpath -v pkgid
pkgchk はエラーがないと判断した場合は、インストールされたファイルのリストを返します。そうでない場合は、エラーについて報告されます。
次の例は、サーバーからディスクレスクライアントのルートファイルシステムに SUNWadmr (システムおよびネットワーク管理をサポートするソフトウェア) パッケージをインストールするためのコマンドを示しています。この場合、ディスクレスクライアントのルートファイルシステムは、/export/root/client-1 です。この例では、SUNWadmr パッケージが、マウントされた SPARC 版 Solaris 2.x CD (/cdrom/cdrom0/s0/Solaris_2.6/Product) から使用できるものと想定しています。pkginfo と pkgchk を使用して、パッケージのファイルが正しくインストールされていることを確認する方法も示しています。
server# pkgadd -R /export/root/client-1 -d /cdrom/cdrom0/s0/Solaris_2.6/Product SUNWadmr . . . Installation of <SUNWadmr> complete. server# pkginfo -R /export/root/client-1 | egrep SUNWadmr system SUNWadmr System & Network Administration Root server# pkgchk -v -R /export/root/client-1 SUNWadmr /etc /etc/init.d /etc/init.d/autoinstall /etc/init.d/sysid.net /etc/init.d/sysid.sys /etc/rc2.d /etc/rc2.d/S30sysid.net /etc/rc2.d/S71sysid.sys /etc/rc2.d/S72autoinstall /sbin /sbin/bpgetfile
次の例は、サーバーからディスクレスクライアントのルートファイルシステムへ SUNWcg6 パッケージをインストールする方法を示しています。この場合、ディスクレスクライアントのルートファイルシステムは /export/root/client-2 です。この例では、SUNWcg6 パッケージが、ネットワーク上のパッケージサーバー (/net/package-server/latest-packages) から使用できることを前提としています。
server# pkgadd -R /export/root/client-2 -d /net/package-server/latest-packages SUNWcg6 . . . Installation of <SUNWcg6> complete.
サーバーに、そのディスクレスクライアントと AutoClient システムに必要な OS サービスがあることを確認します。
ホストマネージャを使用して、サーバーで使用可能な OS サービスを確認します。OS サービスを追加したい場合は、ホストマネージャの「サービス追加」機能を使用して追加を行うことができます。詳細については、第 4 章「サーバーとクライアントサポートの管理の手順」を参照してください。
サーバーと、ディスクレスまたは AutoClient システムが同じバージョンの Solaris であるか、ハードウェアプラットフォームが同じかどうかによって、次の手順を決定します。
ディスクレスまたは AutoClient システムと、サーバーの状態 |
手順 |
---|---|
同じ Solaris のリリースと同じハードウェアアーキテクチャ |
この手順は使用しないこと。代わりに、「スタンドアロンシステムにパッケージを追加する方法」の手順を使用する。
|
Solaris のリリースが異なるか、またはハードウェアプラットフォームが異なる (たとえば、Solaris 2.6 ディスクレスクライアントの Solaris 2.3 サーバー、または SPARC ディスクレスクライアントの x86 サーバー) |
手順 4 に進む。 |
# cp /var/sadm/install/admin/default /var/sadm/install/admin/admin-file
新しい管理ファイルを編集して、basedir キーワードを設定します。
テキストエディタを使用して、新しい管理ファイルを編集し、basedir キーワードを、クライアントをサポートする OS サービスへの正しいパスに設定します。
basedir=/export/exec/Solaris_2.x_platform.all/usr
Solaris_2.x |
Solaris バージョン番号を示す。たとえば、Solaris_2.6 など。 |
platform |
クライアントのハードウェアアーキテクチャーを示す。たとえば、Solaris_2.6_i386.all や Solaris_2.6_sparc.all などにおける i386 や sparc など。 |
ソフトウェアパッケージをサーバーに追加します。
管理ファイルは、パッケージを、クライアントに適した /usr ファイルシステムにインストールするように指定します。
# pkgadd -a admin-file -d device-name pkgid...
-a admin-file |
(省略可能) pkgadd がインストール時に参照する管理ファイルを指定する。デフォルトにより、pkgadd は、/var/sadm/install/admin ディレクトリを調べて、指定の管理管理ファイルを探す。絶対パスを管理ファイルに指定することもできる。 |
-d device-name |
ソフトウェアパッケージの絶対パスを指定する。device-name は、デバイス、ディレクトリ、またはスプールディレクトリのいずれかへのパスにすることができる。パッケージのあるパスを指定しないと、pkgadd はデフォルトのスプールディレクトリ (/var/spool/pkg) をチェックする。パッケージがそこにない場合、パッケージのインストールは失敗する。 |
pkgid |
(省略可能) インストールされる 1 つまたは複数のパッケージの名前を空白で区切って示す。この引数を省略すると、pkgadd は、使用可能なすべてのパッケージを表示する。 |
パッケージのインストール中に pkgadd コマンドに問題が起こると、その問題に関連するメッセージに続いて、次のプロンプトが表示されます。
Do you want to continue with this installation?
このプロンプトには、yes、no、または quit のいずれかで応答します。複数のパッケージが指定されている場合は、no と入力して、インストール中のパッケージのインストールを中止してください。pkgadd は、他のパッケージのインストールを続けます。インストールを中止するには、quit と入力してください。
パッケージが正常にインストールされたことを確認するには、pkginfo コマンドを使用します。
# pkginfo pkgid*
pkginfo コマンドは、インストールされているパッケージのすべてについて表示します。通常、pkgadd は、すでにインストールされたパッケージと重複するバージョンを、pkgid.1、pkgid.2 としてインストールします。
pkgchk コマンドを使用して、パッケージが正常にインストールされていることを確認します。
# pkgchk -v pkgid
pkgchk は、指定されたパッケージにエラーがないと判断した場合は、インストールされたファイルのリストを返します。そうでない場合は、エラーについて報告します。
次の例では、/usr ファイルシステムにファイルをインストールする架空のパッケージである SUNWtoolu をインストールするコマンドを示しています。このパッケージは、デフォルトにより /cdrom/cdrom0 にマウントされた、マウント済み製品 CD にあるものと想定してください。pkgadd コマンドは、new-basedir という名前の管理ファイルを使用して、パッケージの新しいインストール用ディレクトリを指定します。この例は、pkgchk を使用して、パッケージファイルが正しくインストールされたかどうかを確認する方法も示しています。
# pkgadd -a new-basedir /cdrom/cdrom0 SUNWtoolu . . . Installation of <SUNWtoolu> complete. # pkgchk -v SUNWtoolu /usr /usr/bin /usr/bin/toolconvert /usr/bin/toolplay /usr/bin/toolrecord
pkgchk コマンドを使用すると、パッケージのインストールの完全性、パス名、ファイルの内容、およびファイル属性をチェックできます。オプションの詳細については、pkgchk(1M) のマニュアルページを参照してください。
pkginfo コマンドを使用して、システムにインストールされたパッケージに関する情報を表示してください。
pkginfo コマンドを使用して、インストールされたパッケージに関する情報を表示します。
$ pkginfo
次の例は、システムがスタンドアロン、サーバー、ディスクレスクライアント、または AutoClient システムのどれであるかに関係なく、ローカルシステムにインストールされたすべてのパッケージを表示する pkginfo コマンドを示しています。出力には、基本カテゴリ、パッケージ名、およびパッケージの説明が示されています。
$ pkginfo system SUNWab2m Solaris Documentation Server Lookup system SUNWaccr System Accounting, (Root) system SUNWaccu System Accounting, (Usr) system SUNWadmap System administration applications system SUNWadmc System administration core libraries
ディスクレスまたは AutoClient システムクライアント/サーバーの設定では、サーバーからソフトウェアを管理することができます。サーバーはこのための場所であるため、pkginfo コマンドにオプションを付けて使用する必要があります。次の例は、io という名前のディスクレスクライアントにインストールされたすべてのパッケージを表示するための pkginfo -R コマンドを示しています。このコマンドは、ディスクレスクライアントのサーバーから実行します。
server$ pkginfo -R /export/root/io system SUNWaccr System Accounting, (Root) system SUNWaccu System Accounting, (Usr) system SUNWadmap System & Network Administration Applications system SUNWadmfw System & Network Administration Framework . . .
スーパーユーザーとしてシステムにログインします。
インストールされたパッケージの状態を、pkgchk コマンドによってチェックします。
# pkgchk -a | -c -v pkgid ... # pkgchk -d spooldir 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.5.1,REV=96.12.13.17.59 BASEDIR: / VENDOR: Sun Microsystems, Inc. DESC: core software for a specific hardware platform group PSTAMP: on297961213180424 INSTDATE: Jan 02 1997 11:42 HOTLINE: Please contact your local service provider STATUS: completely installed FILES: 54 installed pathnames 5 shared pathnames 15 directories 32 executables 6243 blocks used (approx)
インストールされたパッケージの削除には、必ず pkgrm コマンドを使用してください。rm コマンドを使用すると、システムによりインストールされたパッケージの記録を削除するため使用しないでください。
インストールされたパッケージを削除します。
# pkgrm pkgid...
pkgid |
(省略可能) 1 つまたは複数のパッケージの名前を空白で区切って指定する。これを省略すると、使用可能なパッケージすべてが表示される。 |
インストールされたパッケージを、pkgrm -s コマンドによってスプールディレクトリから削除します。
# pkgrm -s spooldir pkgid...
-s spooldir |
パッケージがスプールされたスプールディレクトリの名前を指定する。 |
pkgid |
(省略可能) 1 つまたは複数のパッケージの名前を空白で区切っ指定する。pkgid を指定しないと、pkgrm は、ユーザーに対して、スプールディレクトリにある各パッケージを削除するように要求する。これを省略すると、使用可能なパッケージすべてが表示される。 |
pkgrm -R コマンドによって、データレスクライアントの OS サーバーからソフトウェアパッケージを削除します。
server# pkgrm -R rootpathpkgid...
-R rootpath |
クライアントのルートファイルシステムのマウントポイントを指定する。 |
pkgid |
(省略可能) 1 つまたは複数のパッケージの名前を空白で区切って指定する。この引数を省略すると、使用可能なパッケージすべてが表示される。 |
共有とマークされたクライアントのパッケージデータベース内のファイルは、サーバーから削除されませんが、クライアントのデータベースからは削除されます。すべてのクライアントがパッケージを削除した場合は、pkgrm をサーバーで個別に呼び出すことにより、サーバーから共有ファイルを削除することができます。
パッケージが正常に削除されたことを確認するには、pkginfo コマンドを使用してください。
server# pkginfo -R rootpath | egrep pkgid
pkgid がインストールされている場合、pkginfo コマンドは、それに関する情報を 1 行で返します。インストールされていない場合は、システムプロンプトに戻ります。
次の例では、クライアントのルートファイルシステムが共有されるものと想定されています。また、これらのコマンドが、クライアントのサーバーで実行されることが前提となっています。
server# pkgrm -R /export/root/client-1 SUNWaudio The following package is currently installed. SUNWaudio Do you want to remove this package? y/n/q? y . . .
Solaris 2.x には Admintool が組み込まれています。これは、ソフトウェアパッケージの追加と削除を含む、いくつかの管理作業を実行するためのグラフィカルユーザーインタフェースです。Admintool を使用すると、特に次のことを実行できます。
ソフトウェアパッケージをローカルシステムに追加する
ソフトウェアパッケージをローカルシステムから削除する
ローカルシステムにすでにインストールされたソフトウェアを表示する
インストールされるソフトウェアパッケージをカスタマイズする
ソフトウェアパッケージの代替インストール用ディレクトリを指定する
インストールされたシステムにログインして、スーパーユーザーになります。
$ su
UNIX の sysadmin グループ (グループ 14) のメンバーでなければ、システムのスーパーユーザーになって、Admintool によりソフトウェアパッケージの追加または削除を行う必要があります。
CD を CD-ROM ドライブにロードします。
ボリューム管理が自動的に CD をマウントします。
Admintool を起動します。
# admintool &
「ユーザー (Users)」ウィンドウが表示されます。
「ブラウズ (Browse)」メニューから「ソフトウェア (Software)」を選択します。
「ソフトウェア (Software)」ウィンドウが表示されます。
「編集 (Edit)」メニューから「追加 (Add)」を選択します。
「ソース媒体の設定 (Set Source Media)」ウィンドウが表示されます。必要であれば、インストール媒体へのパスを指定して、「OK」をクリックします。デフォルトのパスは、マウント済みの SPARC Solaris CD です。
「ソフトウェアを追加 (Add Software)」ウィンドウが表示されます。
ローカルシステムにインストールしたいソフトウェアを選択します。
ウィンドウの「ソフトウェア (Software)」部分で、インストールしたいソフトウェアに対応するチェックボックスをクリックします。
「追加 (Add)」をクリックします。
各パッケージがインストールされるごとに、コマンドツールウィンドウが表示され、インストールの出力が表示されます。
「ソフトウェア (Software)」ウィンドウがリフレッシュされて、追加されたばかりのパッケージが表示されます。
インストールされたシステムにログインして、スーパーユーザーになります。
$ su
UNIX の sysadmin グループ (グループ 14) のメンバーでないかぎり、Admintool でソフトウェアパッケージを追加または削除するためには、スーパーユーザーにならなければなりません。
Admintool を起動します。
# admintool &
「ブラウズ (Browse)」メニューから「ソフトウェア (Software)」を選択します。
「ソフトウェア (Software)」ウィンドウが表示されます。
ローカルシステムから削除したいソフトウェアを選択します。
「編集 (Edit)」メニューから「削除 (Delete)」を選択します。
本当にソフトウェアを削除するのかどうかを確認するための警告ポップアップウィンドウが表示されます。
「削除 (Delete)」をクリックして、ソフトウェアを削除したいことを確認します。
削除するパッケージごとにコマンドツールウィンドウが表示され、もう一度ソフトウェアを削除するのかどうか確認されます。y、n、または q を入力します。ソフトウェアを削除することを選択した場合、削除プロセスからの出力が表示されます。
この章では、実行中の Solaris システムでの Solaris パッチのインストールまたは削除について説明します。また、不要なパッチまたは障害の発生したパッチを削除 (バックアウトと呼びます) する方法についても説明します。
この章の内容は次のとおりです。
パッチの最も単純な形式としては、ソフトウェアを実行するのに障害となる既存のファイルとディレクトリを置換、または更新するファイルとディレクトリの集合と考えることができます。既存のソフトウェアと同様に、パッチはアプリケーションバイナリインタフェースに準拠する指定のパッケージ形式をベースに作成されたものです。(パッケージの詳細については、第 16 章「ソフトウェア管理の概要」を参照してください。)
パッチのインストールとバックアウトの詳細は、すべてのパッチに付いている Install.info ファイルに示されています。各パッチには、パッチについての特定の情報が入っている README ファイルも含まれています。
パッチをインストールするにあたっては、以前にインストールされたパッチの詳細を知る必要がある場合もあります。表 18-1 は、すでにシステムにインストールされているパッチについての有効な情報を表示するコマンドを示しています。
表 18-1 パッチ管理に役立つコマンド
コマンド |
|
機能 |
---|---|---|
showrev -p |
|
システムに適用されたすべてのパッチを表示する。 |
pkgparam pkgid PATCHLIST |
|
pkgid によって識別されるパッケージに適用されたすべてのパッチを表示する。 |
pkgparam pkgidPATCH_INFO_patch-number |
|
パッチが適用されたホストのインストール日と名前を表示する。pkgid は、パッケージの名前を表示する。たとえば、SUNWadmap など。 |
patchadd -R client_root_path -p |
|
サーバーのコンソールから、クライアントに適用されたすべてのパッチを表示する。 |
patchadd -p |
|
システムに適用されたすべてのパッチを表示する。 |
Sun のユーザーはすべて、セキュリティパッチなどの推奨されるパッチに、World Wide Web または anonymous ftp を介してアクセスできます。サービス契約を購入した Sun ユーザーは、パッチの拡張セットと、パッチ情報に関する完全なデータベースにアクセスできます。この情報は、World-Wide Web、anonymous ftp を介して入手可能であり、通常は CD によって定期的に配布されます (表 18-2 を参照)。
表 18-2 ユーザーパッチアクセス情報
ユーザーの種類 |
アクセスできる情報 |
---|---|
Sun Service 契約ユーザー |
パッチに関する SunSolve データベースとパッチ情報にアクセスすることができる。これらの情報は、「World-Wide Web を介したパッチアクセス」と 「ftp を介したパッチアクセス」に説明されているように、World-Wide Web または anonymous ftp を介して入手できる。 これらのパッチは、夜間に更新される。ユーザーは、パッチ CD を 6〜8 週間ごとに受け取る。 |
Sun Service 契約ユーザー以外 |
セキュリティパッチの一般セットなどの推奨されるパッチにアクセスできる。これらの情報は、「World-Wide Web を介したパッチアクセス」と 「ftp を介したパッチアクセス」に説明されているように、World-Wide Web または anonymous ftp を介して入手できる。 |
Sun パッチには、World-Wide Web または anonymous ftp を介してアクセスできます。Sun Service 契約を購入した場合は、定期的に配布されるパッチ CD からパッチを入手できます。
World-Wide Web 上のパッチにアクセスするには、コンピュータが次の条件を満たしていなければなりません。
インターネットに接続されている
Mosaic や Netscape などの Web ブラウズソフトウェアを実行できる
anonymous ftp を介してパッチにアクセスするには、コンピュータが次の条件を備えていなければなりません。
インターネットに接続されている
ftp プログラムを実行できる
World-Wide Web を介してパッチにアクセスするには、次のユニフォームリソースロケータ (URL) を使用してください。
http://www.sun.com/
Sun ホームページが表示されたら、「Sales and Service」ボタンをクリックして、SunSolve パッチデータベースに移動してください。
公開されているパッチのパッチデータベースには、「Public patch access」というラベルが付いています。契約ユーザーが使用できるパッチとパッチ上の包括的なセットに関するパッチデータベースには、「Contract customer patch access」というラベルが付いています。この契約ユーザーデータベースにアクセスするためのパスワードを入力するよう求められます。
URL を使用して、公開されているパッチにアクセスすることもできます。
http://sunsite.unc.edu/(日本では http://sunsite.sut.ac.jp/)
ftp を介してパッチにアクセスするには、ftp を使用して sunsolve1.sun.com (Sun サービス提供) または sunsite.unc.edu (the University of North Carolina 所有) (日本では sunsite.sut.ac.jp/ 東京理科大学所有) のいずれかに接続します。ftp にログインを要求されたら、ログイン名として anonymous と入力します。パスワードの入力を求められたら、完全な電子メールアドレスを使用してください。接続されれば、/pubs/patches ディレクトリから、公開されているパッチを検索することができます。
パッチを転送するには、ftp 転送モードをバイナリに変更する必要があります。これには、ftp プロンプトで bin と入力してください。
パッチは、固有の英数字文字列によって識別されます。これは、パッチベースコード、ハイフン、およびパッチ回転番号を表す番号の順で構成されています。たとえば、パッチ 101977-02 は、lockd デーモンを訂正するための Solaris 2.4 パッチを示しています。
パッチを追加すると、patchadd コマンドは、パッチディレクトリからローカルシステムのディスクへファイルをコピーします。patchadd は、さらに次のことも行います。
管理ホストとターゲットホストの Solaris バージョン番号を確認する。
インストール中のパッチによって置換されるパッチ、このパッチに必要な他のパッチ、およびこのパッチと互換性を持たないパッチに関する情報を使用して、パッチの pkginfo ファイルを更新する。
パッチのインストール時、patchadd は、Solaris 2.4 以前のオペレーティング環境では、パッチ情報の記録を /var/sadm/patch/patch-number/log に保存します。Solaris 2.5 と 2.6 リリースの場合でもこの場所にログファイルを格納しますが、ただし、インストールエラーが発生した場合だけです。
この patchadd コマンドは、次の条件ではパッチをインストールしません。
パッケージがホストに完全にインストールされていない。
パッチのアーキテクチャが、システムのアーキテクチャと異なる。
パッチのバージョンが、インストールされているパッケージのバージョンと一致しない。
同じベースコードと上位のバージョン番号を持つパッチがすでにインストールされている。
パッチが、すでにインストールされている他のパッチと互換性を持たない。(インストール済みの各パッチは、この情報を pkginfo ファイルに格納している。)
インストールしようとしているパッチには他のパッチが必要だが、そのパッチがインストールされていない。
パッチをバックアウトすると、patchrm コマンドは、そのパッチによって修正されたすべてのファイルを復元します。ただし、次の場合は除きます。
パッチが、patchadd -d を使用してインストールされた (これは、patchadd に対して、更新中または置換中のファイルのコピーを保管しないように指示する)。
パッチが、最新のパッチによって置換された。
パッチが他のパッチによって要求された。
patchrm コマンドは、pkgadd を呼び出して、最初のパッチインストールで保管されたパッケージを復元します。
パッチのインストール時、patchrm は、/tmp/backoutlog.process_id. にパッチインストールログを格納します。パッチが正常にバックアウトされた場合、このログファイルは削除されます。