試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

sqlite3を使用してPortageのディスク読み書きを高速化?

今更ではあるのだが、Portageのパッケージデータの読み書きを速くするのにsqlite3が使用できるようなので、導入してみた。
大変ありがたいことに、手順などは既に参考URLに細かく書かれているため、ここでは紹介しない。
以下は覚え書き。

  • Portageのデータベース読み書きが劇的に速くなったという気はあまりしないが、微妙に短縮された気はする
  • /var/cache/edb/dep/以下に小さなファイルが沢山あったのが/var/cache/edb/dep/usr/portage.sqliteのようなファイルにまとめられたことにより、ディスク領域が節約される効果があった*1
  • eixsqlitePortageのキャッシュバックエンドとして指定する際の「PORTDIR_CACHE_METHOD='sqlite'」指定は、/etc/eixrcに対して行い、[ホームディレクトリ]/.eixrcには行う必要がない
  • eixsqliteを有効にすると、update-eixの処理(Portageのパッケージデータベースからeix用データベースを作成)が以前と比べて非常に高速になったのが分かった

この他に、Python 2.4系でPortagesqliteを導入した場合、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:

*1:du -h /var/cache/edb/dep/usr/」の結果は、使用前が98M・使用後が24Mとなったが、ファイルシステムやそのチューニング次第で、この効果には多少の差が出る可能性がある