冒険の書

27歳と6ヶ月のときに未経験でITエンジニアに転職した元派遣会社営業職(文系)が綴るブログです。同じように20代後半から未経験でIT技術者に転職することを検討されている人に「27歳からの未経験がどれだけ成長できるか」という点などで参考になれば幸いです。

【IT系】CentOS6.5にhaskellのIDE「leksah」がインストールできなかった話

「できなかった」話です。

正月休みの大切な3人日を、haskellIDE「leksah」のために費やしました。

そして、これができたところで仕事には「役立ちません」

 haskellをインストールしようとしたきっかけについては、以下をご覧ください。

 

【IT系】kvm上のCentOS6にhaskellをインストール - 旅路

 今回は、せっかく3人日もがんばったんだから、その顛末だけでも残そうという趣旨で書きます。

This times purpose.

CentOS6.5への、leksahのインストール失敗の顛末

Agenda

  1. Leksahの導入方法
  2. depends on glib-0.13.0.7 which failed to install.
  3. Cannot find gtk2hsC2hs Please install `gtk2hs-buildtools` ...
  4. Configuring glib-0.13.0.7... setup: The pkg-config package 'glib-2.0' is required but it could not be found.
  5. 終わらない依存関係解消への挑戦

Resolution to dependence

Leksahの導入方法

Leksahの導入方法には、知る限り3種類ある。

  1. tar.gzをダウンロードし、ビルドする。
  2. Cabalを使用して、インストールする。
  3. apt-getでインストールする(Debian系)。

3については、今回の環境がCentOSのため論外。

まず、1を行ったが、makeの方法がわからず断念。Readmeにも、方法等は書いていなかった。

次に2を行った。このことを最初は知らなかったのだが、ふと思いつきで実行してみたら可能なことに気づいた。今回は、この項の話となる。

Update way by Cabal

パッケージ管理コマンド cabal については、以下に詳しく書いてあります。

そして、僕もここを参考にさせていただきました。

Cabalとは、Haskellのパッケージ管理ソフトらしく、cabalコマンドは、パッケージ「cabal-install」を操作するUIみたいものらしいです。


Haskellのパッケージ管理について調べてみた - りんごがでている

Cabalでパッケージをインストールするには、以下のコマンドを使用します。

cabal install <アップデート対象>

ちなみに、上記installではアップデートもできるのですが、Cabalやcabal-installをアップデートしてもcabal -Vで表示されるバージョンは1.16.xxxのままでした。しかも、コンパイル中のメッセージも1.16.xxx。なんで反映されないの…

どうしたものか、と考えあぐねていましたが、最後の手段でリブートしてみることに…

$ cabal -V
cabal-install version 1.20.0.5
using version 1.20.0.3 of the Cabal library 

無事、反映されました。リブートが必要とは面倒だな…。

ただし、これでもコンパイル中のメッセージは1.16.xxxだったり、それ以外だったりで、もうわけわかりません(泣)

depends on glib-0.13.0.7 which failed to install.

glib-0.13.0.7に依存しており、Leksahをインストールできませんでした。

Cannot find gtk2hsC2hs.Please install `gtk2hs-buildtools` first and check that the install directory is in your PATH (e.g. HOME/.cabal/bin).

これは、そこまででもないんだが、厄介なことには変わりはない。

厄介なのは、下線部。どうも、gtk2を使用するコンパイルを行う際にパスがわからなくなってしまうらしい。そのため、環境変数PATHに"HOME/.cabal/bin"を加えなければならない。本来なら、gtk2hs-buildtools をインストールするだけで済むはずなんだが……

'glib-2.0' is required but it could not be found.

今度は、こんなエラーが……。

これは、yum install glib2-develをすれば、OKでした。

また、参考にさせていただいたのは下記のサイトです。


CentOS6.2にIPMessengerをインストール:浜村拓夫の世界

終わらない依存関係解消への挑戦

まだまだ、終わりません。 お次は、このエラーメッセージ。

/usr/include/glib-2.0/glib-object.h:1: (column 0) [FATAL]
>>> Lexical error!
The character '#' does not fit here. 

解決策はこちら。

 Ubuntu 12.04 LTS での gtk2hs のインストール失敗について

どうも、Cabalのロケールが悪さをしているらしく、cabal installの前に"LANG=C"とすれば良いらしく、実際に行って成功しました。

この他には、以下のパッケージで引っかかりました。対策として、今までにいれたパッケージを根こそぎアンインストールして、厄介なパッケージから入れるなどを行いました。

  • cairo (バージョンが違うと言われる)
  • cmdargs(baseパッケージのバージョンが違うと言われる)
  • base(色々なパッケージが再帰的に依存していると言われる)
  • 以下、base関係でループ

以上が、CentOS上へLeksahをインストールをしようとしていた顛末です。

で、結局、Leksahはインストールできたの?って話ですが、できました!

Debian系なら、あっさりです。apt-getでhaskellとleksahを指定すればそのままインストールで来ます。(なんで、もっと早く方向転換してなかったんだろうorz)

おかげさまで、なんとか予定のイベントには参加できそうです♪

 

最後に、本エントリー既出でない知識をまとめて、終わりにしたいと思います。

  • cabal installの後ろに"--global"とつけると、/usr/bin配下にパッケージがインストールされる?らしく、とりあえず、これはつけておいた方が良さそう?しかし、このオプションを付与するとroot権限が必要になり、既出の"HOME/.cabal/bin"に関わってくるとしたら面倒だなぁ、と。root権限で実行したら、HOMEの部分が/rootになるんじゃないかなぁ。

Haskellのパッケージシステム (Cabal) | Netsphere Laboratories

  • cabal-installの本体は、ghc-compiler。

以上

 

おつかれさまでした。