metacatui についての覚書¶
Metacat 2.3.0 で metacatui を動作させようと試行錯誤したが、 総ての機能を動作させるのは無理だった。 その時の状況を、備忘のために書いておく。
動作状況一覧¶
操作内容 動作 ログイン 良 アカウントの新規作成 良 アカウント一覧取得 良 パスワード変更 良 パスワード初期化 良 データ登録 良 データ検索 不良
作業手順¶
webapps/metacat/style/common/templates/metacatui/loginForm.tmpl の organization ドロップダウンメニューに myorg を追加する。
--- loginForm.tmpl.orig 2014-02-14 15:05:34.000000000 +0900 +++ loginForm.tmpl 2014-02-14 15:05:55.000000000 +0900 @@ -20,6 +20,7 @@ <div class="span4 text-left">Organization</div> <div class="span8 text-left"><select name="organization"> <option value="" selected>— choose one —</option> + <option value="myorg">myorg</option> <option value="NCEAS">NCEAS</option> <option value="LTER">LTER</option> <option value="KU">KU</option>
Metacat のデフォルトスキンを metacatui に変更する。 http://hostname/metacat/admin からスキン設定を修正するか、 webapps/metacat/WEB-INF/metacat.properties を直接修正する。 直接編集の場合は下記を参照。
application.default-style=metacatui
webapps/metacat/cgi-bin/ldapweb.cgi 用の設定を施す。 Metacat 2.3.0 セットアップ手順 (付属機能) を参照のこと。
ただし、email 関係のプロパティは webapps/metacat/style/skins/metacatui/metacatui.properties の方が 参照されるので、こちらのファイルを修正する。 email.overrideURL プロパティは空にする。
email.overrideURL=
webapps/metacat/cgi-bin/registry_dataset.cgi の文法ミスを修正する。
Perl の仕様変更により時代遅れになった表記法が残っていて、ログに 警告メッセージが出力される。 Perl 5.16.3 ではまだ警告だけで動作は正常のようだが、 Perl のバージョンが変わると動かなくなるかも知れないから 直しておく方がいいだろう。
--- register-dataset.cgi.orig 2014-02-14 14:11:48.000000000 +0900 +++ register-dataset.cgi 2014-02-14 14:11:58.000000000 +0900 @@ -166,8 +166,8 @@ # override email properties with skin-based ones my @emailData = keys(%$email); foreach my $d (@emailData) { - if ( %$skinEmail->{$d} ) { - $email->{$d} = %$skinEmail->{$d}; + if ( $skinEmail->{$d} ) { + $email->{$d} = $skinEmail->{$d}; } }
metacatui.war を Tomcat の webapps ディレクトリにデプロイする。
webapps/metacatui/js/views/RegistryView.js に DN の dc 部分が ハードコードされているので、修正する。
--- RegistryView.js.orig 2014-02-14 14:13:25.000000000 +0900 +++ RegistryView.js 2014-02-14 14:13:41.000000000 +0900 @@ -197,7 +197,7 @@ formObj.username.value = "uid=" + formObj.elements["uid"].value + ",o=" + formObj.elements["organization"].value - + ",dc=ecoinformatics,dc=org"; + + ",dc=mydomain,dc=tld"; // get the form data before replacing everything with the progressbar! var formData = $("#loginForm").serialize();
Apache に /metacatui/ を Tomcat にリバースプロキシさせるように 設定する。
ProxyPass /metacatui ajp://localhost:8009/metacatui ProxyPassReverse /metacatui ajp://localhost:8009/metacatui
再起動。
# service tomcat6 restart # service apache24 reload
確認¶
http://hostname/metacat/ にアクセスすると自動的に http://hostname/metacatui/ にリダイレクトし、metacatui の トップページが表示されることを確認する。
データ検索機能の動作不良について¶
metacatui 上からキーワード検索しても、何も表示されない。
原因は、 Tomcat の logs/stdout.log を見ると判る。
original requestURI: /metacat/d1/mn/v1/query/solr/fl=id,title,(中略)
註 d1 = DataONE
mn = Menber Node の略
metacat 20140213-17:19:05: [ERROR]: D1ResourceHandler: Serializing exception with code 500: /var/metacat/solr-home/solr.xml (No such file or directory) [edu.ucsb.nceas.metacat.restservice.D1ResourceHandler]
註 /var/metacat/solr-home/solr.xml は metacat-index モジュールが作成する
リクエストURL から明らかなように、metacatui は、Metacat 本来の 検索 API ではなく、後から追加された DataONE 用の検索 API を 叩こうとする。その API は metacat-index モジュールの SoLR 機能を 利用しようとするので、 metacat-index.war を Tomcat にデプロイして 再度 Tomcat のログを見ると、
metacat-index 20140214-14:40:40: [ERROR]: Problem loading configuration: jar:file:/usr/local/apache-tomcat-6.0/webapps/metacat-index/WEB-INF/lib/d1_cn_index_processor-1.2.0.jar!/org/dataone/configuration/config.xml [org.dataone.configuration.Settings]
org.apache.commons.configuration.ConfigurationException: org.apache.commons.configuration.ConfigurationRuntimeException: org.apache.commons.configuration.ConfigurationException: Cannot locate configuration source file:///etc/dataone/node.properties
というエラーが出て、 metacat-index の起動に失敗する。 このエラーメッセージから、 metacat-index が DataONE ネットワーク前提の 機能であり、DataONE から独立に動作させることは無理のような感じを受ける。
最近の Metacat にとって、DataONE 機能はオプションではなくて 前提の環境になっているようだ。 metacatui は使いやすそうなインタフェイスをしているので、 DataONE とは独立に動作させられると嬉しいのだが。
データ登録機能の仕様¶
metacatui の “Upload your data” ページからデータを登録する場合、 docid は以下のように決定される。
prefix は metacat/style/skins/metacatui/metacatui.properties の registry.config.scope プロパティが使用される。
すなわち、どのアカウントからであろうと、metacatui から登録される データの docid の prefix はすべて同一になる。
ちなみにデフォルトは
registry.config.scope=knb
パッケージ番号は、Metacat サーバに getLastId を発行して使用中の最大値を 取得し、それに +1 した値を使用する。つまり 1 から順に連番になる。