先日行ったfcitx-qt5ビルドの関係でlibxkbcommonをビルドしてインストールしたのだが、これ以降、壁紙自動変更ソフトであるWallchの具合が悪くなった件。
詳しい内容としては、D-Busガーとかで起動しなくなったり、他のアプリなどで磁気カードリーダーから入力があるとWallchがsegfaultする。
前者については原因がよくわからなかったが、Wallchのソースをダウンロード、ビルドしバイナリをコピーすることでとりあえず解決。
後者はlibxkbcommonをx11サポート無しでビルドした関係でlibxkbcommon-x11がビルドされなかったため、すでにレポジトリからインストールされているlibxkbcommon-x11と独自ビルドでインストールしたlibxkbcommon相互のバージョン違いの関係でsegfaultしたと考えられる*1。なので必要なライブラリを導入しlibxkbcommonをx11サポートありでビルドしなおして解決。
とりあえずメモしておく。続きを読むから。
Wallch独自ビルド
以下の手順はすでに標準レポジトリからWallchを導入済みの場合の手順。
とりあえず必要な開発パッケージをbuild-depでぶっこんでおいて、ソースダウンロード。インストールスクリプトがあるがエラー出まくりのダメダメスクリプトなのでqmake→makeでとりあえずビルド。
その後バイナリを置き換える。
$ sudo apt-get build-dep wallch $ wget --trust-server-names https://sourceforge.net/projects/wall-changer/files/wallch_4.15.tar.gz/download $ tar xzvf wallch_4.15.tar.gz $ cd wallch-4.15 $ qmake wallch.pro $ make $ sudo mv /usr/bin/wallch /usr/bin/wallch.orig $ sudo cp wallch /usr/bin/
ちなみにwgetの--trust-server-namesはダウンロードされたファイル名をちゃんとwallch_4.15.tar.gzにするためのおまじない。
libxkbcommon(完全版) + libxcb + xcb-proto
まず必要なライブラリをビルド、インストールする。libxcbのビルドにはxcb-protoが必要なので先にxcb-protoからインストールすること。
xcb-protoはコンパイルが不要(普通にmakeしても何も起きない)なPythonモジュールなのでいきなりmake installしている。
もしかするとlibxcbの方は追加で開発パッケージが要るかもしれない。
$ wget https://xcb.freedesktop.org/dist/xcb-proto-1.12.tar.gz $ wget https://xcb.freedesktop.org/dist/libxcb-1.12.tar.gz $ tar xzvf xcb-proto-1.12.tar.gz $ tar xzvf libxcb-1.12.tar.gz $ cd xcb-proto-1.12 $ ./configure $ sudo make install $ cd ../libxcb-1.12 $ ./configure --enable-xinput $ make $ sudo make install
その後再度libxkbcommonをビルド、インストールする(すでにアーカイブはダウンロード済みで、一回ビルドしていることを想定)
$ cd ../libxkbcommon-0.7.1 $ ./configure $ make clean;make $ sudo make install $ sudo ldconfig
蛇足
独自ビルドしたEncryptPadの磁気カードリーダーからの入力が変になる現象だが、Qt5.5でビルドしなおしたら直った。Qt5.6以降で発生している現象なのかもしれない。
念の為複数バイナリを/usr/binに置いておいてupdate-alternativesでオリジナル(PPA)版・Qt5.5版・Qt5.8版とで切り替えできるように設定したのは秘密。