_ [debian] 続・ruby-locale 2.1.0-1 変

ruby-locale 2.1.0-2 と ruby-gettext 3.0.3-1 が入って解決。

_ [debian] rxvt-unicode 9.19-1 変?

wcwidth-cjk のおかげで EastAsianAmbiguous キャラクタの幅が UTF-8 で常に 1 の問題はなくなったように思っていたけど、rxvt-unicode 9.19-1 は wcwidth-cjk と組み合わせてもうまく動かない。rxvt-unicode 9.18-3 は大丈夫なんだけど。何が変わったんだろう。 ソースコードを比較してもよくわからなかったので debdiff してみると、

Files in second .deb but not in first
-------------------------------------
-rw-r--r--  root/root   /usr/share/applications/rxvt-unicode.desktop
-rw-r--r--  root/root   /usr/share/lintian/overrides/rxvt-unicode-256color
-rwxr-sr-x  root/utmp   /usr/bin/urxvt
-rwxr-sr-x  root/utmp   /usr/bin/urxvtd

Files in first .deb but not in second
-------------------------------------
-rwxr-xr-x  root/root   /usr/bin/urxvt
-rwxr-xr-x  root/root   /usr/bin/urxvtd

のように utmp に setgid されるようになってることに気がついた。そういえば debian/changelog にも、

  • Allow urxvt and urxvtd to update utmp (Closes: #500230)
    • Override lintian warning setgid-binary for /usr/bin/urxvt and /usr/bin/urxvtd
ref. /usr/share/doc/rxvt-unicode-256color/changelog.Debian.gz

と書いてあった。 そしてこの setgid が原因で、

LD_PRELOAD

A list of additional, user-specified, ELF shared libraries to be loaded before all others. The items of the list can be separated by spaces or colons. This can be used to selectively override functions in other shared libraries. The libraries are searched for using the rules given under DESCRIPTION. For set-user-ID/set-group-ID ELF binaries, preload pathnames containing slashes are ignored, and libraries in the standard search directories are loaded only if the set-user-ID permission bit is enabled on the library file.

ref. /usr/share/man/man8/ld.so.8.gz

というわけで、setuid/setgid しているバイナリは / を含む LD_PRELOAD を無視するので、

LD_PRELOAD=/usr/local/lib/wcwidth-cjk.so /usr/bin/urxvt

が効いていなかったということだった。 さてどうしたものだろう、と思ったけど対応策が今のところよくわからないので chmod 755 /usr/bin/urxvt* して急場をしのぐことに。