この章では、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
スーパーユーザーとしてログインします。
すでにインストールされているパッケージの中で、追加しようとしているものと同じ名前のパッケージをすべて削除します。
これによってシステムは、追加および削除されたソフトウェアの正しい記録を保持できます。同じアプリケーションの複数のバージョンをシステムで管理したい場合もあります。この方法の概要については 「パッケージの削除に関するガイドライン」を、手順については 「パッケージを削除する方法」を参照してください。
ソフトウェアパッケージをシステムに追加します。
# 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 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 ディレクトリを探して、コマンド行に指定されたすべてのパッケージを見つけます。パッケージをスプールディレクトリにコピーすることと、パッケージをシステム上にインストールすることとは異なることに注意してください。
サーバーまたはスタンドアロンシステムのスーパーユーザーとしてログインします。
すでにスプールされているパッケージの中で、追加しようとしているものと同じ名前のパッケージをすべて削除します。
スプールされたパッケージを削除する方法については、「スプールされたパッケージを削除する方法」を参照してください。
ソフトウェアパッケージをスプールディレクトリに追加します。
# 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 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 . . . |
スーパーユーザーとしてシステムにログインします。
インストールされたパッケージの状態を、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 コマンドを使用すると、インストールされたパッケージのシステム記録に不具合が生じます。
インストールされたパッケージを削除します。
# pkgrm pkgid... |
pkgid |
(省略可能) 1 つまたは複数のパッケージの名前を空白で区切って指定する。これを省略すると、使用可能なパッケージすべてが表示される。 |
インストールされたパッケージを、pkgrm -s コマンドによってスプールディレクトリから削除します。
# pkgrm -s spooldir pkgid... |
-s spooldir |
パッケージがスプールされたスプールディレクトリの名前を指定する。 |
pkgid |
(省略可能) 1 つまたは複数のパッケージの名前を空白で区切っ指定する。pkgid を指定しないと、pkgrm は、ユーザーに対して、スプールディレクトリにある各パッケージを削除するように要求する。これを省略すると、使用可能なパッケージすべてが表示される。 |
Solaris オペレーティング環境 には 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 を入力します。ソフトウェアを削除することを選択した場合、削除プロセスからの出力が表示されます。