試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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

*1:これはカーネルが新しくなった後のVMware Playerの起動時にモジュールをビルドするときのもの