IPS Repository の mirror を作成する ips-mirror.py script

出典: いつも心に太陽を。 Wiki

※ どうも持ってきたファイルが壊れ、完全な repository として利用できないことが発覚。使うのはやめたほうが良いです ※

目次

なにそれ?

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 を入手。

その他 tips

個人用ツール