開発環境の構築

YaSTは重いし,使いづらいかも

yastでgtk2-develをインストール

# yast --install gtk2-devel

とやってもうまく動いていないようだった.
コマンドラインの構文が間違っているのであろうか.


単に

# yast

としてYaSTを起動.その中からSoftware Managementを起動.
Filterが最初は"Patterns"になっていると思う.
これは実はコンボボックスになっていて,
キーボードの矢印下キーで展開される.
"Search"を選択することで,任意の文字列を検索することが出来る.
例えばここで"gtk2-devel"を入力し,SearchでEnter.
するとgtk2-develを含むパッケージがフィルタリングされる.
# ここで表示されるのはレポジトリのデータベースファイル(xmlのアレ)から
# 検索しているんだろうか.
# というそれ以外に思いつかないわけですが.
わたしの環境だと"gtk2-devel"と"lablgtk2-devel"の2つが表示されました.
パッケージの名前の横にフラグが付いています.
これはYaSTの左下にあるHelpでEnterを入力すると出てくる"Package Status and
Symbols"に説明があります.

i : package is installed

gtk2-develの横にはこのiフラグが付いていました.
つまり,gtk2-develはインストールされていたわけです.


上でyast --install gtk2-develが通らなかったのは,
既にインストールされていたからかもしれませんね.
エラー通知でその旨を伝えてくれればいいのに.
別の機会に試してみます.

gtk2とgtk1.2は同居可能?

ここからはYaSTの話題とは外れます.
gtk1.2以上が必要な,あるソフトウェアに対しては
gtk2-develをインストールしたのですが,
これではconfigureのチェックをパスできませんでした.
知らなかったのですがgtk1.2とgtk2は同居できるのですね.
gtk-develをインストールすることでconfigureをパスできました.
# 実際のところはimlib-develをインストールしたときに
gtk-develが依存関係にあり,gtk1.2のパッケージ名を知った.

Failed to load module "libgnomebreakpad.so"

多分,GtkWindowを使ったものだと思うのですが,
そういったプログラムを起動すると

Gtk-WARNING **: Failed to load module "libgnomebreakpad.so": libgnomebreakpad.so: cannot open shared object file: No such file or directory

こんなエラーが.


YaSTに,ライブラリ名からパッケージ名を検索するものが無いようなので,
yumをインストールしてyum whatprovides libgnomebreakpad.so.
しかし,見つからない.


ググってみるとbug-buddyパッケージに含まれるようなので,
インストールしてみたが,好転せず.


そもそもlibgnomebreakpad.soなるファイルがあるのかと調べると,

# find / -name libgnomebreakpad.so
/usr/lib/gtk-2.0/modules/libgnomebreakpad.so

ファイルはあります.
ということは共有ライブラリをリンクするときのパスに含まれていないのだろうということで,
/etc/ld.so.conf.d/gtk-2.0.confファイルを作成し,次の行を入力*1

/usr/lib/gtk-2.0/modules

そして,ld.so.cacheに反映させるために

# ldconfig

これでコンパイルしなおすと...エラーが出なくなりました!


また,管理者になれず,/etc/ld.so.conf関連がいじれない場合には,

$ export LD_LIBRARY_PATH="/usr/lib/gtk2.0/modules

とすることでリンカ(ld.so)のライブラリ検索パスに追加されるようです.


ちなみに,ld.soが共有ライブラリを検索する順番*2は,

  1. 環境変数LD_LIBRARY_PATH
  2. /etc/ld.so.cacheファイルに規定されるディレクト
  3. /usr/lib, /lib

です.