PythonのHTMLドキュメントをローカルで圧縮・全文検索
(2015/1/14)この記事の内容は古く、Beagleも公式サイトが無くなって利用できない。
Pythonのことを調べる際にはドキュメントを見ることが多くなるのだが、このドキュメントは配布されているため、これをダウンロード・展開し、
- ディスク容量の節約のため、圧縮をかける
- ただし、通常ファイルのような感覚で(透過的に)アクセスできるようにする
- 内容の全文検索ができるようにする
の全てが行えることを目指して作業を行った。圧縮にはSquashfsを、検索にはBeagleを使用した。準備としては「squashfs-tools」パッケージとカーネルのSquashfsサポート/モジュール*1が必要。
なお、
http://web.archive.org/web/20080423174732/http://www.python.jp/doc/
にはHTML形式の他、PDF版があり、
http://web.archive.org/web/20080525113537/http://www.python.jp/pub/doc_jp/
にはCHM版も用意されているのだが、今回はHTML形式を使用することにする。
また、ここで使用しているのはPythonのドキュメントだが、当然のことながら、他の内容のHTMLドキュメントでも同様のことは行える。
展開からSquashfsの作成まで
今回使用したのはバージョン2.4のHTML版(tar+bz2)。項目 | 値 |
---|---|
ファイルサイズ | 1,433,760バイト |
MD5 | 226b6864e0dfae22cba232545441fcee |
SHA-1 | 643cb6577a0353ef44f0a11a9a3c7a6d97818b65 |
$ tar jxf html-2.4.tar.bz2 $ cd Python-Docs-2.4/ $ mksquashfs ./ /tmp/pythondocs24.sqfs3 -all-root Parallel mksquashfs: Using 1 processor Creating little endian 3.0 filesystem on /tmp/pythondocs24.sqfs3, block size 65536. Little endian filesystem, data block size 65536, compressed data, compressed metadata, compressed fragments Filesystem size 2320.71 Kbytes (2.27 Mbytes) 16.57% of uncompressed filesystem size (14008.41 Kbytes) Inode table size 13118 bytes (12.81 Kbytes) 27.37% of uncompressed inode table size (47932 bytes) Directory table size 15073 bytes (14.72 Kbytes) 44.84% of uncompressed directory table size (33615 bytes) Number of duplicate files found 28 Number of inodes 1495 Number of files 1483 Number of fragments 225 Number of symbolic links 0 Number of device nodes 0 Number of fifo nodes 0 Number of socket nodes 0 Number of directories 12 Number of uids 1 root (0) Number of gids 0 $ sudo mkdir /usr/local/share/doc/python-docs-2.4/html -p $ sudo cp pythondocs24.sqfs3 /usr/local/share/doc/python-docs-2.4/ $ rm /tmp/pythondocs24.sqfs3 -f
自動的にマウントするようにする
ファイル名: /etc/fstab/usr/local/share/doc/python-docs-2.4/pythondocs24.sqfs3 /usr/local/share/doc/python-docs-2.4/html/ squashfs ro,loop 0 0
再起動せずに反映(マウント)するには、下のいずれかを実行する。
$ sudo mount /usr/local/share/doc/python-docs-2.4/html/ もしくは $ sudo mount -a
全文検索への登録
メニューの「検索 - 設定」から設定ダイアログを開き、「インデックスの作成」タブの追加フォルダのところに、Squashfsのマウントポイント*2を指定する。この後で、高負荷なインデックス作成をしばらく行ってから
$ BEAGLE_EXERCISE_THE_DOG=1 beagled --replace
しばらくしたら通常モードに戻し、
$ beagled --replace
あとは普通に検索ウィンドウから検索を行う。
これで、このドキュメントの中からの全文検索ができる。
(2008/6/21)圧縮されてはいないが、PyGTKのリファレンスのHTMLファイル群は/usr/share/gtk-doc/html/pygtk/以下に配置されている(Debian/Ubuntu/Gentooで確認・Debian/Ubuntuでは「python-gtk2-doc」というパッケージに含まれている)。この場所を追加で含めることにより、PyGTKのリファレンスもローカルで全文検索することができるようになる。
(2008/6/24)同様に、PyGObjectのリファレンスは/usr/share/gtk-doc/html/pygobject/となる。Debian/Ubuntuでは「python-gobject-dev」パッケージに含まれる。
使用したバージョン:
- Beagle 0.3.6
- Libbeagle 0.3.5
- squashfs-tools 3.1_p2