Portageのメタデータにsqliteを使ってみる
Portageのマニュアルを眺めていたら気づいた。
日本語のマニュアルはバージョンが古いぜ……
そりゃまぁメンテのペースが違うから当たり前なんだけど。
# portage のマニュアルの英語版は 2.1.7 で日本語版は 2.0.51 だった。
書きたいのはそれじゃなくて、久々に英語のマニュアルを見ていたらこんな記述が。
- modules
- This file can be used to override the metadata cache implementation.
In practice, portdbapi.auxdbmodule is the only variable that the user will want to override.from portage manual 2.1.7
キャッシュのデータ形式をコントロールできるよ っていうふうに読める。ちなみに、日本語の方には modules に関する記述はないです。よくわからないのでぐぐってみた。
- http://blog.sakanapenguin.net/20070722/portage-with-sqlite/
- http://en.gentoo-wiki.com/wiki/Portage_SQLite_Cache
上は結構前に書かれた記事です。てことはずいぶん前から知られていたことらしいですねー。面白そうなのでやってみます。
(注) 最近のバージョンだとやる必要ないかも?
sqliteのバージョンを確認する
うちでは確か入っていると思うのですが、一応確認してみます。
$ emerge -p sqlite These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] dev-db/sqlite-3.6.22-r2
入ってますか? 入ってます。
pysqliteのバージョンを確認する
これも必要らしいので確認しておきます。
$ emerge -p pysqlite These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-python/pysqlite-2.5.6 USE="-examples"
入ってないですね。入れておきます。
$ sudo emerge -v pysqlite
/etc/portage/modules の編集
参考にさせてもらっている記事に従って記述しておきます。
$ sudo nano -w /etc/portage/modules portdbapi.auxdbmodule = cache.sqlite.database ←1行追加
ちなみに参考記事にもありますが、この modules というファイルは普通に使っている限りは存在しないようです。私の場合にも存在していませんでしたので、今回が新規作成です。
キャッシュの再構築
キャッシュを削除 & 再構築します。最近の portage では FEATURES 変数も直してあげないとダメです。
In addition, if you're using a Portage version later than sys-apps/portage-2.1.6.4 you'll need to add metadata-transfer to FEATURES:
というわけで、 /etc/make.conf の FEATURES に書き加えます。
$ sudo nano -w /etc/make.conf ... FEATURES="${FEATURES} metadata-transfer" ...
その後、キャッシュを再構築します。
$ sudo emerge --metadata
結構かかります。
終わったら、とりあえずどんなのが出来ているか見てみます。
$ ls -l /var/cache/edb/dep/usr/ 合計 30948 drwxrwsr-x 3 root portage 4096 2010-03-25 10:53 local drwxrwsr-x 2 root portage 4096 2010-03-25 10:53 portage −rw-rw-r-- 1 root portage 31642624 2010-03-25 11:04 portage.sqlite
でかっ! でも前はそのしたの portage 以下にたくさんファイルがあったっけ。
使ってみる
参考元のサイトにならって、 emerge world の時間を測ってみました。
適用前
real 1m52.921s user 0m42.110s sys 0m3.040s
適用後
real 0m43.307s user 0m41.670s sys 0m0.800s
十分じゃね?(笑) うちの非力な鯖マシンにはこれだけでもありがたいです。必要なディスクスペースが小さくなる (らしい) ってのもいいですね。この調子で全部のマシンに導入してみようかなぁ。