Go to main content

Oracle® Solaris 11.4 のシステムの更新およびソフトウェアの追加

印刷ビューの終了

更新: 2018 年 8 月
 
 

デフォルトのアプリケーション実装の指定

アプリケーションまたはツールの複数のバージョンが同じイメージから利用できる場合があります。ユーザーはフルパスを指定することによって、アプリケーションの各バージョンを利用できます。使いやすくするために、優先バージョンと呼ばれる 1 つのバージョンが、/usr/bin などの共通ディレクトリから利用できます。すべてのバージョンが同じメディエーションに入っている場合、優先バージョンであるバージョンを簡単に設定し直すことができます。この管理上の選択は、パッケージの更新後も保持されます。

メディエーションとは、セット内のすべてのリンクでリンクパスが同じで、各リンクのターゲットが異なるリンクのセットです。たとえば、リンクパスが /usr/bin/myapp で、リンクのターゲットが /usr/myapp/myapp1/bin/myapp および /usr/myapp/myapp2/bin/myapp を含む場合があります。メディエーションの各リンクは、メディエーションの参加者と呼ばれます。/usr/bin/myapp が現在 myapp1 を呼び出す場合、/usr/bin/myappmyapp2 を呼び出すように選択を簡単に変更することができます。現在リンクのターゲットであるソフトウェアのバージョンは、優先バージョンです。

あるバージョンをときどき使用し、それ以外は別のバージョンを使用する必要がある場合、メディエーションされたリンクを変更することではなくフルパスを指定することを検討してください。

メディエーション内の参加者の識別

イメージ内のすべてのメディエーション対象リンクの優先バージョンを表示するには、pkg mediator コマンドを使用します。

次の出力で、MEDIATOR は、同じ優先リンクパスを共有するリンクのセットの名前です。VER. SRC. および IMPL. SRC. は、優先バージョンが、システムによって選択されたか、割り当て済みの優先度に応じて選択されたか (vendor または site)、管理者によって設定されたか (local) を表示します。VERSION は、選択されたメディエーション参加者のバージョンで、リンクが表すソフトウェアのバージョンに類似しているはずです。VERSION はパッケージ開発者によって設定されます。IMPLEMENTATION は、バージョンストリングに加えて、あるいはバージョンストリングの代わりにパッケージ開発者によって設定できるストリングです。一覧表示される内容は、今までにインストールした内容によって異なります。

$ pkg mediator
MEDIATOR     VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
apache       system    2.4     system
apr-1-config system    1.5     system
apu-1-config system    1.5     system
csh          vendor            vendor     suncsh
gcc          system    5       system
java         system    1.8     system
openssl      vendor            vendor     default
perl         vendor    5.22    vendor
python       local     2.7     vendor
ruby         vendor    2.1     vendor
sendmail     vendor            vendor     sendmail
which        vendor            vendor     gnu

-a オプションは、すべてのメディエーション参加者を表します。異なる優先バージョンを選択する場合、このオプションを使用して、選択内容を表示します。次の例は、java メディエーションのすべての参加者を示しています。system キーワードは、このメディエーションの優先バージョンがパッケージの優先設定で指定されておらず、管理者によって設定されなかったことを示します。パッケージシステムは、高い VERSION 値を持つバージョンを優先バージョンとして選択しました。

$ pkg mediator -a java
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
java        system    1.8     system
java        system    1.7     system

次の出力は、java メディエーションを提供するすべてのパッケージを示しています。

$ pkg search -lo pkg.name,mediator-version link:mediator:java
PKG.NAME           MEDIATOR-VERSION
runtime/java/jre-7 1.7
runtime/java/jre-8 1.8

次の出力では、2 つの異なるバージョンの Java Runtime Environment がこのイメージにインストールされ、バージョン 1.8.0_112 が現在選択されている優先バージョンであることを確認できます。

$ pkg list -s '*jre*'
NAME (PUBLISHER)        SUMMARY
runtime/java/jre-7      Java Platform Standard Edition Runtime Environment (1.7.0_131-b12)
runtime/java/jre-8      Java Platform Standard Edition Runtime Environment (1.8.0_121-b13)
$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

次の出力は、メディエーションされたリンク (PATH) およびリンク先 (TARGET) を示しています。

$ pkg contents -o mediator-version,path,target -t link -a mediator=java jre-8 jre-7
MEDIATOR-VERSION PATH                 TARGET
1.7              usr/java             jdk/jdk1.7.0_131
1.8              usr/java             jdk/jdk1.8.0_121
1.7              usr/jdk/jdk1.7.0_131 instances/jdk1.7.0
1.8              usr/jdk/jdk1.8.0_121 instances/jdk1.8.0
1.7              usr/jdk/latest       jdk1.7.0_131
1.8              usr/jdk/latest       jdk1.8.0_121
$ ls -l /usr/java
lrwxrwxrwx   1 root     root          16 Mar 23 16:11 /usr/java -> jdk/jdk1.8.0_121/

jre-8 パッケージと jre-7 パッケージの両方に、パスが /usr/bin/java であるシンボリックリンクが定義されています。jre-7 パッケージでは、リンクのターゲットは jdk1.6.0 です。jre-8 パッケージでは、リンクのターゲットは jdk1.7.0 です。上記の pkg mediator コマンドおよび java -version コマンドによって、現在の優先バージョンはバージョン 1.8 で、/usr/bin/java リンクのターゲットであることが表示されています。

現在利用できないメディエーション参加者の識別

次の出力は、openssl メディエーション内で現在利用できるすべての参加者を示しています。

$ pkg mediator -a openssl
MEDIATOR     VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
openssl      vendor            vendor     default

次の出力は、openssl-fips-140 パッケージまたは apache-ssl-fips-140 パッケージをインストールしたあとで、opensslfips-140 実装が利用可能になることを示しています (apache-ssl-fips-140 パッケージが openssl-fips-140 パッケージをインストールします)。

$ pkg search -o pkg.name,mediator-implementation link:mediator:openssl
PKG.NAME                                        MEDIATOR-IMPLEMENTATION
web/server/apache-24/module/apache-ssl          default
web/server/apache-24/module/apache-ssl-fips-140 fips-140
library/security/openssl                        default
library/security/openssl/openssl-fips-140       fips-140

使用できない優先パスの設定: 結果と回復

次の出力は、perl コマンドについてはこのイメージで 1 つの実装のみが利用できることを示しています。

$ pkg mediator -a perl
MEDIATOR     VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
perl         vendor    5.22    vendor
perl         system    5.12    system

利用できる実装は 1 つだけですが、パスは依然としてメディエーションされたリンクです。

$ which perl
/usr/bin/perl
$ ls -l /usr/bin/perl
lrwxrwxrwx   1 root     root          22 Mar 23 16:06 /usr/bin/perl -> ../perl5/5.12/bin/perl

新しいバージョンが存在することがわかっているため、次のコマンドを入力して新しいバージョンを指定するリンクを更新します。次のコマンドは、指定されたバージョンがこのイメージで現在利用できないバージョンであるため正しくありません。

$ pkg set-mediator -vV 5.22 perl
            Packages to change:         2
           Mediators to change:         1
     Estimated space available: 867.06 GB
Estimated space to be consumed: 241.78 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed mediators:
  mediator perl:
           version: 5.12 (vendor default) -> 5.22 (local default)
...

pkg mediator コマンドは、更新された設定を表示します。

$ pkg mediator perl
MEDIATOR     VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
perl         local     5.22    system

ところが、pkg mediator -a コマンドでは、現在の設定が利用できないことが示されています。

$ pkg mediator -a perl
MEDIATOR     VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
perl         vendor    5.12    vendor

バージョン指定が正しくないため、メディエーションされたリンクが削除されています。

$ which perl
no perl in /usr/sbin /usr/bin
$ ls -l /usr/bin/perl
/usr/bin/perl: No such file or directory

この問題は、コマンドへのフルパス (/usr/perl5/5.12/bin/perl) を指定することによって回避できます。ターゲットパスは影響を受けません。メディエーションされたリンクのみが削除されます。

この問題は、次のいずれかのアクションによって修正されます。

  • 優先バージョンを利用可能な元のバージョンに戻す。

    $ pkg set-mediator -V 5.12 perl
  • pkg unset-mediator コマンドを使用して、システムが利用可能な実装から新しい実装を選択できるようにします。

    $ pkg unset-mediator perl
  • 必要な更新済みバージョンを提供するパッケージをインストールする。

    次のコマンドの出力は、perl のメディエーションされたリンクを提供したパッケージを表示します。

    $ pkg search -o pkg.name,mediator-version link:mediator:perl

    runtime/perl-522 パッケージおよび terminal/cssh-522 パッケージによって、バージョン 5.22 の perl のメディエーションされたリンクが提供されます。terminal/cssh-522 パッケージによって runtime/perl-522 パッケージがインストールされます。問題を修正するために必要なことは、terminal/cssh-522 をインストールすることだけです。

    $ pkg install terminal/cssh-522

問題を修正または回避できない場合、pkg set-mediator コマンドを使用したときに作成されたバックアップ BE にリブートしてください。

優先アプリケーションの変更

指定したメディエーションのデフォルトまたは優先のバージョンを設定し直すには、pkg set-mediator コマンドを使用します。

pkg mediator -a からの出力を使用して、-V 引数に対するバージョンか、-I 引数に対する実装を選択します。pkg mediator -a によって表示されないメディエーション参加者を指定しないでください。


Caution

注意  -  タイプミスをしたか、現在利用できないメディエータのバージョンまたは実装を指定した場合、指定されたメディエータを使用するリンクは使用できない優先パスの設定: 結果と回復に示すように削除されます。


バックアップ BE が作成されるかどうかを表示するには、set-mediator サブコマンドに -n オプションを使用します。バックアップ BE が作成されない場合、set-mediator サブコマンドに --require-backup-be オプションを指定することができます。メディエータの変更が現在の BE で行われます。メディエータの変更後に現在の BE に問題がないことが確認できたら、beadm destroy を使用してバックアップ BE を破棄できます。

次の出力では、java メディエーションの現在選択されている優先バージョンがバージョン 1.8 であること、およびバージョン 1.7 もこのイメージで利用可能であることが示されています。

$ pkg mediator java
MEDIATOR VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
java     system    1.8     system
$ pkg mediator -a java
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
java        system    1.8     system
java        system    1.7     system

次のコマンドは、バージョン 1.7 を優先バージョンとして設定することを示し、つまり /usr/bin/java を呼び出すと JRE バージョン 1.7 が呼び出されることを意味します。ユーザーが JRE version 1.8 のフルパスを指定すれば、このバージョンも引き続きシステムで使用可能です。2 つの pkg mediator コマンドの出力を比較してください。メディエーションの優先バージョンを変更すると、VER. SRC.local に変更され、選択が管理者によって指定されたことを示しています。この選択は、リブートおよびパッケージ更新後も持続します。

$ pkg set-mediator -v -V 1.7 java
            Packages to change:         3
           Mediators to change:         1
     Estimated space available: 867.06 GB
Estimated space to be consumed: 238.26 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No
...
$ pkg mediator java
MEDIATOR VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
java     local     1.7     system

この管理上の選択は、選択された実装がインストールされていなくても、パッケージの更新後も保持されます。選択された実装がインストールされていない場合、メディエーションされたリンクのターゲットは存在しません。優先される実装をリセットするには、次のいずれかの方法を使用します。

  • pkg set-mediator コマンドをふたたび使用して、pkg mediator -a によって表示された更新済みリストから別の実装を選択します。

  • pkg unset-mediator コマンドを使用して、システムが新しい実装を選択できるようにします。