x86_64版Mandriva Linuxにおいてgksuが使えない問題とその対処
gksuは管理者のパスワードを入力することで管理者権限でコマンドを実行するが、x86_64版Mandriva Linuxでは
このようなダイアログ*1が出て実行に失敗する。メッセージは
The gksu-run-helper command was not found or is not executable.
とのことだが、これはlib64gksu2.0_0というパッケージの中で/usr/lib64/libgksu/gksu-run-helperという場所に存在している。
おかしいと思い
$ strace -o strace.log gksu [適当なコマンド]
どこから探して失敗しているのかをstraceで追ったところ
access("/usr/lib/libgksu/gksu-run-helper", X_OK) = -1 ENOENT (No such file or directory)
というのを見付けた。
何故インストール先と別の場所を見にいくのかを色々調べた末、ソース内に、ディレクトリ名が決め打ちされているのを発見。
$ grep "gksu-run-helper" libgksu-2.0.7 -r (中略) libgksu-2.0.7/libgksu/libgksu.c: gchar auxcommand[] = PREFIX "/lib/" PACKAGE "/gksu-run-helper"; (以下略)
この「lib」の部分がx86_64上のときに「lib64」になればよいので、Mandriva Linux 2009.0のパッケージのソースRPMに対する変更は以下のようになる。
--- libgksu-2.0.7-1mdv2009.0.orig/SPECS/libgksu.spec +++ libgksu-2.0.7-1mdv2009.0/SPECS/libgksu.spec @@ -80,6 +80,7 @@ %prep %setup -q +%{__sed} -i 's:\(gchar auxcommand\[\] = PREFIX "/\)lib\(/" PACKAGE "/gksu-run-helper";\):\1%{_lib}\2:' libgksu/libgksu.c %configure2_5x
「%{_lib}」は、x86_64では「lib64」に、それ以外では「lib」に展開される(置換の操作をしても内容は変わらない)。
上記修正を行ったRPMパッケージ(x86_64のみ)とソースRPMは別館の配布ページに公開した。
(2014/10/12)配布ページは削除済み。
使用したバージョン:
- libgksu 2.0.7-1mdv2009.0