Go to main content
Oracle® Solaris 11.3 パッケージリポジトリのコピーと作成

印刷ビューの終了

更新: 2016 年 11 月
 
 

Oracle Solaris 10 または Linux システムを使用したリポジトリの内容の提供

Oracle Solaris 11 システムを使用したリポジトリへのアクセスに加えて、Oracle Solaris 10 システムまたは Linux システムから IPS パッケージリポジトリにアクセスできます。

Oracle Solaris 11 システム上にリポジトリを作成する必要があります。リポジトリは Oracle Solaris 11 システム上に残して Oracle Solaris 10 または Linux システムからアクセスしたり、Oracle Solaris 10 または Linux システムにリポジトリディレクトリをコピーしたりできます。

ファイルシステムリポジトリは、ほとんどのオペレーティングシステム上にホストでき、NFS、SMB、または Oracle Solaris でサポートされるその他のリモートファイルシステムメカニズムで共有できます。

次の手順は、Oracle Solaris 10 または Linux システムから IPS リポジトリへの HTTP アクセスを提供する方法を示しています。

Oracle Solaris 10 または Linux システムから IPS リポジトリへの HTTP アクセスを提供する方法

Oracle Solaris 11 システムではないシステムからリポジトリへの HTTP アクセスを提供する場合、pkg search および BUI サポートは使用できません。ユーザーは、パッケージをインストールして更新し、pkg listpkg info、および pkg contents コマンドを使用してパッケージに関する情報を取得できます。

始める前に

この手順では、Oracle Solaris 11.2 以降でのみ使用できる pkg.depot-config コマンドを使用します。pkg.depot-config コマンドを取得するには、package/pkg/depot パッケージをインストールする必要があります。

  1. 部分的な Web サーバーの構成ファイルを作成します。

    既存の Web サービスを使用してシステムの基本的な pkg インストール操作を提供するには、pkg.depot-config コマンドを使用して、Oracle Solaris 10 または Linux システムで Web サーバーを有効にする構成を作成します。

    pkg.depot-config -F -d prefix=repository_dir -r runtime_dir

    pkg.depot-config コマンドを使用する方法の詳細については、pkg.depot-config(1M) のマニュアルページを参照してください。

  2. 部分的な Web サーバーの構成ファイルをインストールします。

    pkg.depot-config コマンドによって出力される部分的な構成を Apache 構成ディレクトリにコピーします。Oracle Solaris 10 リポジトリホストでは、構成フラグメントは /etc/apache2/2.2/conf.d に移動できます。Linux リポジトリホストの場合は、この部分的な構成ファイルを使用する方法を判別するには、OS のドキュメントを参照してください。

  3. パブリッシャーの起点を設定します。

    次の例に示すように、Oracle Solaris 11 システムごとに、リポジトリホストシステムの http アドレスにパブリッシャーの起点を設定します。リポジトリへのアクセスをテストするには、pkg list または pkg info を使用します。

使用例 3  HTTP インタフェースを使用した、Linux システムからのパッケージの内容の提供

この例では、リポジトリは Oracle Solaris 11.2 システム上の /space/myrepo 内にあります。このリポジトリには、mypub パブリッシャーのパッケージが 1 つ含まれています。

$ pwd
/space/myrepo
$ pkgrepo -s . info
PUBLISHER PACKAGES STATUS           UPDATED
mypub     1        online           2015-06-08T05:23:00.489687Z

次のコマンドは、部分的な構成を保持するためのディレクトリを作成してから、構成を作成します。

$ mkdir /tmp/runtime
$ /usr/lib/pkg.depot-config -F -d mypub=`pwd` -r /tmp/runtime
Created /tmp/runtime/depot.conf

-F オプションは、Linux システムからの IPS パッケージリポジトリへのアクセスを有効にするために、Linux システムにインストールできる部分的な Apache 構成ファイルを生成します。この構成情報は単に部分的な構成であり、既存の Apache 構成ファイルから含めるように設計されています。完全な httpd.conf 構成では、この部分的な構成に含まれない多くの追加の Apache 設定が必要です。

-d オプションは、引数の `pwd` の部分にリポジトリへのパスを指定します。このリポジトリディレクトリは、集積サーバー構成に含められます。引数の mypub 部分は、このリポジトリにアクセスできる depot-config Web サーバー名前空間の接頭辞として使用されます。

-r オプションは、構成ファイルの出力ディレクトリを指定します。

pkg.depot-config コマンドによって、次の構成ファイルが作成されました。

/tmp/runtime/
/tmp/runtime/htdocs
/tmp/runtime/htdocs/mypub
/tmp/runtime/htdocs/mypub/status
/tmp/runtime/htdocs/mypub/status/0
/tmp/runtime/htdocs/mypub/status/0/index.html
/tmp/runtime/htdocs/mypub/mypub
/tmp/runtime/htdocs/mypub/mypub/publisher
/tmp/runtime/htdocs/mypub/mypub/publisher/1
/tmp/runtime/htdocs/mypub/mypub/publisher/1/index.html
/tmp/runtime/htdocs/mypub/publisher
/tmp/runtime/htdocs/mypub/publisher/1
/tmp/runtime/htdocs/mypub/publisher/1/index.html
/tmp/runtime/htdocs/versions
/tmp/runtime/htdocs/versions/0
/tmp/runtime/htdocs/versions/0/index.html
/tmp/runtime/depot.conf

pkg.depot-config コマンドによって、次の /tmp/runtime/depot.conf ファイルが作成されました。

RewriteEngine on
RewriteLog "/var/log/pkg/depot/rewrite.log"
RewriteLogLevel 0

# Allow these because they are encoded in the package/manifest names
# when looking up v4 repositories.
AllowEncodedSlashes On
# The default of 500 MaxKeepAliveRequests is too low to be useful.
MaxKeepAliveRequests 10000

# Per-repository versions, publishers, and status responses.
RewriteRule ^/mypub/versions/0 /versions/0/index.html [PT,NE]
RewriteRule ^/mypub/publisher/0 /mypub/publisher/1/index.html [PT,NE]
RewriteRule ^/mypub/status/0 /mypub/status/0/index.html [PT,NE]

# Rules to handle responses for default publishers.

RewriteRule ^/mypub/manifest/0/.*$ %{THE_REQUEST} [NE,C]
RewriteRule ^GET\ /mypub/manifest/0/([^@]+)@([^\ ]+)(\ HTTP/1.1)$ /mypub/mypub/publisher/mypub/pkg/$1/$2 [NE,PT,C]
RewriteRule ^/mypub/mypub/(.*)$ %{DOCUMENT_ROOT}/mypub/mypub/$1 [NE,L]
RewriteRule ^/mypub/file/(.*$) /mypub/mypub/file/$1 [NE]
RewriteRule ^/mypub/catalog/1/(.*$) /mypub/mypub/publisher/mypub/catalog/$1 [NE,PT]

# Write per-publisher rules for publisher, version, file, and manifest responses.

# Serve the static versions and publisher responses.
RewriteRule ^/mypub/mypub/versions/0 %{DOCUMENT_ROOT}/versions/0/index.html [L,NE]
RewriteRule ^/mypub/mypub/publisher/0 %{DOCUMENT_ROOT}/mypub/mypub/publisher/1/index.html [L,NE]

RewriteRule ^/mypub/mypub/catalog/1/(.*)$ /mypub/mypub/publisher/mypub/catalog/$1 [NE,PT]
RewriteRule ^/mypub/mypub/file/1/(..)(.*)$ /mypub/mypub/publisher/mypub/file/$1/$1$2 [NE,PT]
RewriteRule ^/mypub/mypub/manifest/0/.*$ %{THE_REQUEST} [NE,C]
RewriteRule ^GET\ /mypub/mypub/manifest/0/([^@]+)@([^\ ]+)(\ HTTP/1.1)$ /mypub/mypub/publisher/mypub/pkg/$1/$2 [NE,PT,C]
RewriteRule ^/mypub/mypub/(.*)$ %{DOCUMENT_ROOT}/mypub/mypub/$1 [NE,L]

# Create an alias to serve /space/myrepo content.
# Map the web server URI namespace to a location on the file system.
Alias /mypub/mypub /space/myrepo
# Enable the web server to see that file system location.
<Directory "/space/repo">
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# Versions response.
RewriteRule ^/.*[/]?versions/0/?$ %{DOCUMENT_ROOT}/versions/0/index.html [L]
# Allow for 'OPTIONS * HTTP/1.0' requests.
RewriteCond %{REQUEST_METHOD} OPTIONS [NC]
RewriteRule \* - [L]

# Location matches based on the final Rewrite paths for file,
# manifest, catalog, and publisher responses.
<LocationMatch ".*/file/../[a-zA-Z0-9]+$">
        Header set Cache-Control "must-revalidate, no-transform, max-age=31536000"
        Header set Content-Type application/data
</LocationMatch>
<LocationMatch ".*/publisher/.*/pkg/.*">
        Header set Cache-Control "must-revalidate, no-transform, max-age=31536000"
        Header set Content-Type text/plain;charset=utf-8
</LocationMatch>
<LocationMatch ".*/catalog/catalog.*.C">
        Header set Cache-Control "must-revalidate, no-transform, max-age=86400"
        Header set Content-Type text/plain;charset=utf-8
</LocationMatch>
<LocationMatch ".*/catalog.attrs">
        Header set Cache-Control no-cache
</LocationMatch>
<LocationMatch ".*/publisher/\d/.*">
        Header set Cache-Control "must-revalidate, no-transform, max-age=31536000"
        Header set Content-Type application/vnd.pkg5.info
</LocationMatch>

/tmp/runtime を Linux システムにコピーします。depot.conf 構成フラグメントファイルは Linux システムの Apache 構成に追加する必要があり、htdocs ファイルは Linux システムの DocumentRoot からアクセスできる必要があります。

このリポジトリにアクセスする必要がある Oracle Solaris システム上で、mypub パブリッシャーの起点を Linux システムの http アドレスに設定します。

$ pkg set-publisher -g http://linux-system-name:8080/mypub mypub

リポジトリを URI 名前空間のさらに下でルート化するには、pkg.depot-config コマンドに -P オプションを使用できました。たとえば、次の pkg.depot-config コマンドを使用すると、http://linux-system-name:8080/ips-repos/mypub の起点 mypub を使用できます。

$ /usr/lib/pkg.depot-config -F -P ips-repos -d mypub=`pwd` -r /tmp/runtime

次のステップ

Oracle Solaris 10 および Linux リポジトリホストに加えて、Oracle Solaris 11 11/11、Oracle Solaris11.1、Oracle Solaris 11.2、または Oracle Solaris 11.3 リポジトリホストの Apache 構成としてこの部分的な構成を使用できます。たとえば、既存の Web サーバーがある場合に、svc:/application/pkg/depot サービスの一部として別の Web サーバーインスタンスを実行しないときは、これを行うことができます。