sqlite3を使用してPortageのディスク読み書きを高速化?
今更ではあるのだが、Portageのパッケージデータの読み書きを速くするのにsqlite3が使用できるようなので、導入してみた。
大変ありがたいことに、手順などは既に参考URLに細かく書かれているため、ここでは紹介しない。
以下は覚え書き。
- Portageのデータベース読み書きが劇的に速くなったという気はあまりしないが、微妙に短縮された気はする
- /var/cache/edb/dep/以下に小さなファイルが沢山あったのが/var/cache/edb/dep/usr/portage.sqliteのようなファイルにまとめられたことにより、ディスク領域が節約される効果があった*1
- eixでsqliteをPortageのキャッシュバックエンドとして指定する際の「PORTDIR_CACHE_METHOD='sqlite'」指定は、/etc/eixrcに対して行い、[ホームディレクトリ]/.eixrcには行う必要がない
- eixでsqliteを有効にすると、update-eixの処理(Portageのパッケージデータベースからeix用データベースを作成)が以前と比べて非常に高速になったのが分かった
この他に、Python 2.4系でPortageにsqliteを導入した場合、Python 2.5にアップグレードする際(将来、2.6が出るときも同様?)、/etc/portage/modulesの内容を一度「#」でコメントアウトしてからキャッシュを作り直して
$ sudo rm /var/cache/edb/dep/ -fr $ sudo emerge --metadata
Pythonのモジュールを含むパッケージを全て再ビルドして
$ sudo /usr/sbin/python-updater
その後、/etc/portage/modulesのコメントアウトを解除して、キャッシュ削除/作成を再び行うことになるため、導入の前にPythonを2.5系にしたほうがよいかもしれない。
(2008/10/1)eixを使用している場合、Portageのバージョン2.2系で出力がおかしくなる場合があるが、この不具合はeixのバージョン0.14.0で修正された。
参考URL:
- http://web.archive.org/web/20090213030802/http://blog.sakanapenguin.net/20070722/portage-with-sqlite/ - 参考記事
- http://web.archive.org/web/20071226185033/http://gentoo-wiki.com/TIP_speed_up_portage_with_sqlite - Gentoo Wikiのページ。あるパッケージに依存(RDEPEND/DEPEND)しているパッケージを表示するRubyスクリプトもある(要sqlite3-ruby)