IPS Repository の mirror を作成する IPS ぶっこぬきツール - ipsget.py
出典: いつも心に太陽を。 Wiki
目次 |
なにそれ?
- ipsget.py - IPS Repository ぶっこぬきツール
http://devzone.sites.pid0.org/OpenSolaris/ipsget
twitter でぼやいていたら、OpenSolaris USB Creator の作者である @chonan さんから、「悪魔的改造を施してしまったら超ぶっこぬきツールができた。だが、反省はしていない。」(超意訳) なる reply が。
( ゚∀゚)o彡°( ゚∀゚)o彡°( ゚∀゚)o彡°とあおってみたところ、uudencode して Timeline に貼り付ける。と言いいながらも、ご厚意により公開して頂けました。
uudencode は標準装備なんだぜ。そんなの絶対やだけど。
つぶやきから生まれた(?) 超ぶっこぬきツールで、あなたの OpenSolaris ライフよ薔薇色になれ。
どこらへんが悪魔的なのか?
-
どこらへんが悪魔的かというと・・・
- gzip + sha1sum による download file の徹底的な検査
- 問題があれば再 download
こんな感じで Retry が走ります。すばらしい。そして、見逃すなっ。Generating remote file list... Generating local file list... Downloading the files: f56ecd3ce9cfd4a9fb7fb32f70aa6e3c4f6cecfa ( 12058/ 353928) [ 3.41%] Retry Download 1dcb029c96fea42fa3f1164298e24710ed63bb7b ... f93eed3d2cf78f3302c7f37d3334a2921b11b430 ( 104646/ 353928) [ 29.57%]
- さらに、file の donwload 部分を Multithread 化。thread 数を任意の値に指定可能な -t オプションを実装
-t 10 で走らせると 10 個の LWP が生成PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID 3969 root 458M 455M sleep 59 0 0:00:29 0.3% isapython2.6/11 3969 root 458M 455M sleep 59 0 0:00:29 0.3% isapython2.6/7 3969 root 458M 455M sleep 59 0 0:00:29 0.2% isapython2.6/8 3969 root 458M 455M sleep 59 0 0:00:29 0.2% isapython2.6/9 3969 root 458M 455M sleep 59 0 0:00:29 0.2% isapython2.6/6 3969 root 458M 455M sleep 60 0 0:00:28 0.2% isapython2.6/5 3969 root 458M 455M sleep 60 0 0:00:30 0.2% isapython2.6/2 3969 root 458M 455M sleep 59 0 0:00:28 0.2% isapython2.6/4 3969 root 458M 455M sleep 59 0 0:00:28 0.2% isapython2.6/10 3969 root 458M 455M sleep 59 0 0:00:29 0.2% isapython2.6/3
天使だよね?天使。でも、天使がいいのか悪魔がいいのかわからないけど、これはいい。 オリジナルの ips-mirror.py 作者に感謝しつつ、IPS Repository からぶっこぬけっ!
使い方
-
基本的な使い方は、オリジナル ips-mirror.py と同じでなので、
違うところは、-t N により thread 数を指定でき、many core な環境では、file download (初回の manifest は single thread) が劇的に速くなります。
Soalris 10 で動かすには?
-
ipsget.py は、Solaris 10 付属の Python 2.4.4 でも動作します。
- hashlib - Python secure hash and message digest module MD5, SHA1, SHA224, SHA256, SHA384 and SHA512 (backported from recent Python's for use on 2.3 and 2.4)
http://code.krypto.org/python/hashlib/# wget http://code.krypto.org/python/hashlib/hashlib-20081119.tar.gz # gzip -cd hashlib-20081119.tar.gz | tar xvf - # cd hashlib-20081119 # python setup.py install
Python 2.5 で追加された hashlib module が必要になるので、Python 2.4.4 な Solaris 10 だとそのままでは使えません。
Python 2.5 or later をインストールするか、下記の backport module を install することで利用可能です。
