読者です 読者をやめる 読者になる 読者になる

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

CentOS 5.3 に MindTouch (dekiwiki) をインストール


Songbird の Developer Center で見たときから、素敵なんじゃね?と思って使いたいなーと思ってたけどなかなか面倒くさそうでやってなかったけどやってみたら本当に面倒だったからメモのこす。
基本的にインストールガイドに書いてあるんだけど、なんかハマリどころが多かったなあ。


というわけで結果的に動いた。
感想しか興味がない人はレッツスクロール。w

前提条件

OSなど。

sotarok% uname -a
Linux *.nequal.jp 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 i686 i386 GNU/Linux
sotarok% cat /etc/redhat-release 
CentOS release 5.3 (Final)

依存パッケージ

書いてある通りにやる
% sudo yum -y install wv links pdftohtml tidy
これはすんなり入る。
% wget http://www.princexml.com/download/prince-6.0r8-linux.tar.gz
% tar xfzv prince-6.0r8-linux.tar.gz 
% cd prince-6.0r8-linux
% sudo ./install.sh

html2ps が入らない。

html2ps

しかもエラーが意味不明で、

---> Package ImageMagick-perl.i386 0:6.2.8.0-4.el5_1.1 set to be updatedTraceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 229, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 145, in main
    (result, resultmsgs) = base.buildTransaction()
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 647, in buildTransaction
    (rescode, restring) = self.resolveDeps()
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 696, in resolveDeps
    CheckDeps, checkinstalls, checkremoves, missing = self._resolveRequires(errors)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 779, in _resolveRequires
    thisneeds = self._checkInstall(txmbr)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 851, in _checkInstall
    provs = self.tsInfo.getProvides(*req)
  File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 432, in getProvides
    result.update(self.getNewProvides(name, flag, version))
  File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 414, in getNewProvides
    for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
  File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 300, in getProvides
    return self._computeAggregateDictResult("getProvides", name, flags, version)  File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 470, in _computeAggregateDictResult    sackResult = apply(method, args)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 861, in getProvides
    return self._search("provides", name, flags, version)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 837, in _search    for pkg in self.searchFiles(name, strict=True):  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 568, in searchFiles    self._sql_pkgKey2po(rep, cur, pkgs)  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 470, in _sql_pkgKey2po    pkg = self._packageByKey(repo, ob['pkgKey'])
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 413, in _packageByKey
    po = self.pc(repo, cur.fetchone())
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 68, in __init__
    self._read_db_obj(db_obj)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 94, in _read_db_obj
    setattr(self, item, _share_data(db_obj[item]))
TypeError: unsubscriptable object

などという意味不明エラーでyumが落ちる。

で、よくわからないけど、まあ、perl系はrpmforgeとかいじりまくってると色々おかしくなる。
で、まあなんか以下でうまくいったという結果的に意味不明だったが、まあOK。

% sudo yum clean all
% sudo yum install -y html2ps

html2ps は epel から、ImageMagick-perl は base から入った。

mono-complete

インストールガイドにある通り、yumリポジトリを追加して、(/etc/yum.repos.d/mindtouch.conf などに記述)

[home_mindtouch_mono]
name=mindtouch mono repo (RHEL_5)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/mindtouch/RHEL_5
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/mindtouch/RHEL_5/repodata/repomd.xml.key
enabled=1

% sudo yum install mono-complete
...(snip)
mono-core-1.9.1-2.1.i386 from home_mindtouch_mono has depsolving problems
  --> Missing Dependency: libgdiplus0 is needed by package mono-core-1.9.1-2.1.i386 (home_mindtouch_mono)
Error: Missing Dependency: libgdiplus0 is needed by package mono-core-1.9.1-2.1.i386 (home_mindtouch_mono)

色々調べた結果、rpmから libgdiplus0 を拾ってきておk。

% wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/directhex/RHEL_5/i386/libgdiplus0-2.2-2.1.i386.rpm
% sudo rpm -ivh libgdiplus0-2.2-2.1.i386.rpm
警告: libgdiplus0-2.2-2.1.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID f145f20a
準備中...                ########################################### [100%]
   1:libgdiplus0            ########################################### [100%]

rpm のインストールのときに、libexif.so や libungif.so の依存エラーがでるかもしれんけど、それは適宜 yum で入れる。もしかしたらlzmaも必要になるかもしれないけど、これは色々はまってるときに試しに入れたからそれが解決のためになったのかどうかはよくわからない。まあいいか。

% sudo yum install -y libexif
% sudo yum install -y libungif
% sudo yum --enablerepo=dag install lzma (もしかしたら必要ならね)

で、そしたら

% sudo yum install mono-complete

はいった。

本体

インストールガイドには deki-enterprise って書いてあるけど、これは罠だから気をつけるんだ!無料版は、 dekiwiki だよ。
また /etc/yum.repos.d/mindtouch.repo に追記。

[home_mindtouch]
name=mindtouch's Home Project (CentOS_5)
type=rpm-md
baseurl=http://repo.mindtouch.com/CentOS_5/
gpgcheck=1
gpgkey=http://repo.mindtouch.com/CentOS_5/repodata/repomd.xml.key
enabled=1
% sudo yum install dekiwiki
% sudo su dekiwiki
sh-3.2$ mozroots --import --sync
sh-3.2$ exit

したら、 /var/www/dekiwiki にファイルが生成されてたりなどする。
で、

あとは、

% sudo mv /etc/httpd/conf.d/deki-apache.conf.disabled /etc/httpd/conf.d/deki-apache.conf

で、こいつの内容を適宜変更。

自分の場合は、ServerName と DocumentRoot とそれにともなってディレクティブだけ変えた。
で、DocumentRoot は /var/www/dekiwiki にシンボリックリンクはってあげればOK。そして Apache リロード。(% sudo service httpd reload)


あとはアクセスすると、インストールしろっていわれる。
DBもユーザも勝手に作ってくれるからMySQLとかなにもしなくてOK。


(スクショはまちがって deki-enterprise 入れたときのものだから若干違う点があるかも?)

インストール後、「おまえまだインストールおわってねえよ」って言われるので、表示されるスクリプトをコピペする。
フォルダ内容が表示されてるのは自動lsなだけなので気にしないでください。

root# cd /var/www/dekiwiki/config
LocalSettings.php  index.php  installtype.package.php     mindtouch.deki.startup.xml.in  mindtouch.host.conf     mindtouch.host.sh.in  skin.form.php
enterprise.php     init.php   mindtouch.deki.startup.xml  mindtouch.host.bat.in          mindtouch.host.conf.in  skin.footer.php       skin.header.php
root# mkdir /etc/dekiwiki
mkdir: ディレクトリ `/etc/dekiwiki' を作成できません: ファイルが存在します
root# cp -p mindtouch.host.conf /etc/dekiwiki
root# cp -p mindtouch.deki.startup.xml /etc/dekiwiki
root# cp -p LocalSettings.php /var/www/dekiwiki/
root# /etc/init.d/dekiwiki start
Starting MindTouch Deki API: mindtouch.host.exe.
root# rm mindtouch.host.confki.startup.xml
root# rm LocalSettings.php 

で、表示されればめでたしめでたし。


感想

で、少しつかってみたところ、ひっじょーーーーに使いやすい。これは便利。

  • 軽快な動作
  • 直感的な操作感
  • 日本語にも対応してる
  • よくできたWYSIWIG (うぃじうぃぐは基本キライなんだけど、これならいいな。Operaではちなみにうまく動かないw)
  • わかりやすい管理画面・ユーザ管理・簡単な認証管理
  • 綺麗なデフォルトスキンと豊富なスキン
  • その他豊富なプラグイン
  • すばらしいAjaxの使いどころ。
    • 画像アップロードとか、フラッシュアップローダだからまとめてアップロード
    • いろんなウェブサイトと連携(使ってみてないからなんともいえないけど)
    • 画像とか勝手にLightbox
    • Google Analytics もある

ああ、正直、すごいな、と思います。
この完成度はすごい。多少インストール手こずっても、入れる価値アリです。

その他

速度はそれなりに速くなったけど、あいかわらず yum の依存解決能力の馬鹿さ加減には泣けてくる。DebianがいいよDebianが。