フリーソフト

Ubuntuでライブラリが見つからず困った話。

新年になって去年書いた記事を見てると、書きかけて公開してない記事を見つけました。
せっかく書いたのに放置ももったいないですから、記憶を辿りながら書き加えて公開しておきます。(在庫処分とも言う。)

以前、Ubuntuをつかってサーバを構築した話をしたんですがLinux版DiCEでDDNSを実現しようとしてハマッた話です。(なんと、もう半年以上前のことですね。)

最初に言っておくと、今回は完全に解決したわけではありません。
レベル的には次のようにランク分けできると思うんですが、③までいきたかったのに②までしか実現できませんでした。

  1. Linux版DiCE CUI版が動作する
  2. Linux版DiCE GUI版が動作する
  3. Linux版DiCE GUI版が文字化けせずに動作する

とりあえず、順を追って説明します。

まずは本家ページからDiCEのプログラム本体をDL。

ページのインストール方法に従って、/usr/local/bin/ 等に展開します。
で、これだけではライブラリが足りないらしく、動きません。
そこで lddコマンド をつかってまずはCUI版の足りないライブラリを確認します。

$ ldd /usr/local/bin/DiCE/diced

申し訳ないんですが、ここで何が不要だったかの記憶がなく。。。
とりあえず、足りないものはapt-getでインストールして補完したはずです。

ライブラリが補完できれば、CUI版は動きます。
文字化けが起こった場合はnkfをapt-getしてやって、次のように実行してやればOKです。

$ ./diced | nkf -uw

問題はここからです。

本家ページGUI版の追加プログラムをDLし、CUI版同様 展開します。
で、同じようにlddコマンドで確認して足りないライブラリを入れても・・・動かない!

原因は「libstdc++6」で、apt-getしてきたものを無理矢理合う名前でシンボリックリンクした記憶があります。(次のコマンドのメモが残っていたのが何よりの証拠。)

$ sudo ln -s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++-libc6.1-1.so.2

で、シンボリックリンクをはった後にもう一度lddコマンドで確認したものがこちら。(↓)

$ ldd /usr/local/bin/DiCE/dice
linux-gate.so.1 =>  (0x00816000)
libqtintf.so => /usr/lib/libqtintf.so (0x00110000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00294000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x007eb000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x003b1000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00852000)
libqt.so.2 => /usr/lib/libqt.so.2 (0x009ac000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x005ad000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x007b2000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x00554000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x003b5000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x003ce000)
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x005c7000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x003ef000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x004c4000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x0078e000)
libuuid.so.1 => /lib/libuuid.so.1 (0x00759000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00415000)

これはいける。・・・と思ったらあえなく撃沈。

いろいろ調べたところこんなページに行き当たりました。

どうも64bit版はあるけど、32bit版のライブラリがないということらしいです。
ところが普通にやったら64bitOSなせいで32bit版のライブラリがインストールできません。

更に探すと、こんなページも見つかりました。

どうも「:i386」つけると、32bit用のパッケージを指定してインストールできるそうです。
そんなこともできるんですね。。。
ただ、単純にライブラリ名の後につけるだけではなく、先にアーキテクチャを定義してからインストールする必要があります。

sudo dpkg --add-architecture i386    // アーキテクチャの定義
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

肝心の所の記憶が薄れてて申し訳ないのですが、たしかこれでGUI版も動くようになったはずです。

ここまではなんとかなりましたが、GUI版の文字化けはどうしても解消できませんでした。
くやしい。

それでもいろいろとコマンドの勉強はできたので、よしとします。

ちなみに、書き残しておいたメモにもう一つコマンドのメモがありましたが、どこでつかったか覚えてません・・・最近よく物忘れするんですよねぇ。。。
せっかくですし、最後に一応のこしておきます。それでは。

$ sudo apt-get update
$ sudo apt-get install apt-file
$ sudo apt-file update        // データベースの更新
$ apt-file search hogehoge    // 例えば「hogehoge」を検索

◇本日のお品◇

ダイスつながりで、サイコロを。
サイコロはアナログゲームのショップに行くとホントにいろんな種類がありますよね。
けっこう見てるだけでも楽しいし、目的もないのに欲しくなったりします。
とはいえ、さすがに5万円以上の代物は見たこと無いです。
世の中にはいろいろなサイコロがあるんですねぇ。。。

コメント

タイトルとURLをコピーしました