ArchLinuxでMySQLビルド

どうも、仕事でArchLinuxを使っているぽんこつです。公式パッケージがMySQLからMariaDBに変わってしまったのでAUR管理下の自前ビルドMySQLに移行して開発していましたが、MySQLが8.0に上がったタイミングで色々困ったことがあったのでまとめておきます。

No such file libpalm.so

これ再現する人は少ないと思うんですが、libpalmが偶然アップデートしてAURが使えなくなりました。これの原因と対処が以下に書いてあるとおりです。助かりました。

libalpm が 10 になったせいで AUR が検索すらできない件 - 想像力の欠如は深刻な欠点の一つである。

tmpfs溢れ

MySQL8.0になって大分プログラムが大きくなったのか、yaourtがデフォルトで使う/tmpディレクトリが溢れるようになりました。/tmpはデフォルトでtmpfsとしてメインメモリを使う設定になっており、デフォルトでメインメモリの半分に設定されています。自分の環境では8GBがtmpfsに割り当てられていましたが、8GBだと不足するという問題が発生します。

メモリを増設したりtmpfsの容量を増やしてもよかったのですが、ディスクがNVMeなので普通にディスクに書くように修正しました。yaourtの設定ファイル/etc/yaourtrcの

#TMPDIR="/tmp"

 を別のディレクトリにすればいいでしょう。私は/buildというディレクトリを権限777で新規に作り、そこに設定しました。

ccache有効化

どの程度効果があるかは分からないですが、コンパイル速度を早めるためにccacheを有効化しました。ccacheパッケージをインストールした後に、/etc/makepkg.confの

 BUILDENV=(!distcc color !ccache check !sign)

 のccacheにかかっている!を外せば有効になります。

※実際ビルドしてccache -s でcache hit rateを見ましたが、3.89%とか出ているので、MySQLのビルドそのものだとあまり意味は無いかもしれません

その他のmakepkgの高速化

以下に纏めてあります。

Ryzenで爆速yaourt

yaourtのパッケージの圧縮を高速化