SVX日記
2019-08-30(Fri) HyperEstraierコンテナを作る
先日、自作のメーラ「maverick」のコンテナイメージを構築し、VPS上で動作させ、そこそこ快適にウェブメール環境を利用できているのだが、全文検索機能が実装できていないのがイマイチなのであった。
個人的に、全文検索機能と言えば「HyperEstraier」なのだが、最近のFedoraには、リポジトリにパッケージこそ存在しているものの、インストールしてもロクに動作しないのである。誰も使っていないから気づいていないのかしらん。そんなことある?
他に代替できるような全文検索機能もないので、是が非でも動かしたいのだが、ウェブ上に類似の問題の報告は見当たらず、オフィシャルには開発も終了してしまっているようである。しゃーないので、自分でビルド環境を整え、ガチで原因調査を始めたところ、必須ライブラリであるQDBM内の、メモリ確保系のコードで落ちてしまっているところまではわかった。そもそもmake checkで落ちてしまう。しかし、コードがおかしいという感じもせず、なんというか、単にmallocとの相性が悪いようにも見える。なので修正の方策も浮かばない。 しかたなく、QDBMのちょっと古い版である1.8.75を持ってきて動かしてみたところ、問題のコードが異なっており、その状態なら問題なく動いた。というわけで、安直にそっちの版で動かし、解決としてしまうことにした。
で、早速「maverick」のコンテナイメージに「HyperEstraier」を組み込もうかと思ったのだが、そこは「HyperEstraier」だけのコンテナイメージを作った上で、それをベースに「maverick」のコンテナイメージを作るべきだろうと思い返し、そのように実装してみたらうまくいってしまった。というわけで「DockerHub」に「docker.io/furutanian/hyperestraier」と「docker.io/furutanian/maverick」としてアップロードしておく。
という辺りで、AWSの「Amazon Lightsail」上でゴタゴタと作業していると、コンテナのビルド中にdnfが謎のエラーを起こすようになってしまった。なんのことはない、メモリ不足だ。なにせ512Mなので。