IPS Repository の mirror を作成する ips-mirror.py script
出典: いつも心に太陽を。 Wiki
※ どうも持ってきたファイルが壊れ、完全な repository として利用できないことが発覚。使うのはやめたほうが良いです ※
目次 |
なにそれ?
- The Blog of Andrzej Szeszo: IPS repository mirror script
http://aszeszo.blogspot.com/2009/07/ips-repository-mirror-script_27.html
ips-mirror.py
-
この、
[ips-mirror.py] を入手する。
また、この ips-mirror.py を利用する場合は、下記のチェックツールもあわせて入手してください。
そして、オリジナル ips-mirror.py で download した file をチェックし、おかしなファイルは削除してくれます。
削除されたら、また ips-mirror.py で差分の download をするのかな?
OpenSolaris b132 で動作確認。
IPS Repository のコピーを作成
-
ips-mirror.py のオプションは、-l で最新 build を。-a i386 で i386 用の binary のみ download。あとは、IPS Repository の URL を指定(ここでは dev Repository を指定)。また -r オプションで特定の build を指定することも可能。
この例では、/export/repo/dev というディレクトリを作成し、そこに IPS Repository からこの記事を書いている時点の最新版である b132 の data を download する。
# zfs create -p rpool/export/repo/dev # cd /export/repo/dev # wget http://aszeszo.googlepages.com/ips-mirror.py # chmod +x ips-mirror.py # ips-mirror.py -l -a i386 http://pkg.opensolaris.org/dev/
download 時間は、network 環境にもよるだろうが、回線品質が高くない ADSL 環境で 5 時間半かかった。
Downloading the files: 1% 25% 50% 75% 100% ................................................................................ real 5:20:18.384628895 user 10:45.957837256 sys 2:30.549931592
おもしろい事に、ips-mirror.py が download してくるものは、IPS Repository を構成する file directory と pkg directory の 2 つのみ。
file directory には package に含まれる bianry が格納され、pkg directory には package の manifest が格納されているが、これらの情報だけで IPS Repository を複製できてしまう。
コピーした IPS Repository の内容を使い local IPS Repository を起動する
-
local IPS Repository を起動するには、下記のように実行する。
-d には Repository を構成する data がおかれた場所、すなわち ips-mirror.py を実行した directory を指定する。
-p は、使用する port 番号を。ここでは 15000 を利用する。
--rebuild は、Repository として情報を提供するために必要な catalog 情報を再構築する。
# cd /export/repo/dev # /usr/lib/pkg.depotd -d `pwd` -p 15000 --rebuild
しかし、OpenSolaris dev b132 で試してみたところ、下記の message が出力された。
# /usr/lib/pkg.depotd -d `pwd` -p 15000 --rebuild pkg.depotd: repository configuration error: publisher.prefix is required. Please use the --set-property option to provide a value, or update the cfg_cache file for the repository to correct this.
この message が出力された場合は、下記のように --set-property publisher.prefix=opensolaris.org オプションを追加しコマンドを実行する必要がある。
# /usr/lib/pkg.depotd -d `pwd` -p 15000 --rebuild --set-property publisher.prefix=opensolaris.org
また、下記のような message が出力される場合は、ping $HOSTNAME を実行して応答があるか確認する。
応答が無い場合は、/etc/hosts の 127.0.0.1 に hostname を追加し、ping の応答が返ってくるようにする。
DHCP client として動作している環境で多く見られる事象かなと。
# /usr/lib/pkg.depotd -d `pwd` -p 15000 --rebuild pkg.depotd: unable to bind to the specified port: 15000. Reason: Cannot assign requested address
これで local IPS Repository の稼働は完了。
Web browser から、http://localhost:15000 にアクセスしてみるとよいかと。
publisher の設定
-
publisher に local IPS Repository を設定する。
その際、publisher name には必ず opensolaris.org を設定する。
# pkg set-publisher -O http://localhost:15000/ opensolaris.org # pkg publisher 発行元 タイプ 状態 URI opensolaris.org (優先) 起点 online http://localhost:15000/
コマンドラインが面倒な場合は、packagemanager から設定するのが簡単でよいかと。
これで、network に接続していなくても package のインストールが可能になる。
Extra Repository の mirror も作成
-
https://pkg.sun.com/ へアクセスして、Extra Repository へアクセスするための key.pem と certificate.pem を入手。
