2010年09月02日

OpenOffice.org のクイック起動とファイルのロック

Excel のファイルは OpenOffice.org でも開くことができるが、 ブラウザからダウンロードしたファイルを保存した後 OpenOffice.org で開いて、 一度それを閉じた後、 もう一度同じファイル名でファイルを保存しようとすると、 ロックがかかっていて書き込みに失敗することがある。

もし OpenOffice.org のクイック起動が実行中なら、 それを終了させると書き込めるようになることがある。 クイック起動が、前回開いたファイルを覚えているらしい。

2010年09月01日

以上と未満で囲う意味

昨日紹介した、TermRangeQuery や、NumericRangeQuery には、範囲の両端を含むかどうかを指定するための引数が用意されている。

public TermRangeQuery(String field,
                      String lowerTerm,
                      String upperTerm,
                      boolean includeLower,
                      boolean includeUpper)

includeLower と includeUpper というのがそれだ。 true にすれば端を含めて処理するし、 false にすれば端は含まないことになる。

昨日紹介したコードの中で、 ここの指定が、trueとfalse になっていたのに気づいたかもしれない。 最小値以上、最大値未満、という範囲にしたのである。 そのようにすることで、範囲をくまなくカバーするのが簡単になる。

例えば0以上10未満、10以上20未満、20以上30未満、という3つの範囲を重ねると、 ちょうど0以上30未満になる。 実数で考えても、 重なりも飛びもない。 両方とも含むようにすると、少しややこしいことになる。

日付の範囲を指定するときも、 00:00:00 以後、翌日の 00.00.00 まで、ただし終わりの時間は含まない、 というように指定することで、うまく1日をカバーできる。 両端を含むようにすると、 終りを 23:59:59 のようにしなければ最後が重なってしまうし、 59秒という指定にすると、最後の1秒のちょうど間になったらどうするか、 という余計な心配が必要になってしまう。

2010年08月31日

Lucene の TermRangeQuery でハマる

Lucene は Apache がオープンソースで公表している検索エンジンで、有名なので説明はまたの機会にするとして、Lucene を使って範囲指定の絞込みをするときに、TermRangeQuery というクラスを使うのだが、これでちょっとハマってしまったという話。

IDが振られているデータがインデックス化されているとして、 次のようにしてクエリのインスタンスを作った。

TermRangeQuery termRangeQuery = new TermRangeQuery(
	DocumentFactory.FIELD_ID, String.valueOf(fromId),
	String.valueOf(toId), true, false);

ID を範囲で絞ろうというのである。 値は fromId 以上、toId 未満。 最後の true、false は、以上と未満の指定で、最後の値は含まないようにしておく。

これで問題なさそうだが、実際にやってみたらうまく ID を拾えない。 トレースしてみて原因が分かった。 TermRangeQuery が探すのは文字列である。 文字列の順序は数値とは違うのではないか。 20000 と 3 はどちらが大きいか、という話である。

ということで、こういう場合は NumericRangeQuery を使わなければならない。

NumericRangeQuery rangeQuery = NumericRangeQuery.newIntRange(
	DocumentFactory.FIELD_ID,
	Integer.valueOf(fromId), Integer.valueOf(toId),
	true, false);

これで期待通りの範囲の ID を拾い出すことができた。

2010年08月30日

shell でワイルドカードを使う

Linux に標準的に使われている bash、 あるいは csh 等のシェルは、ワイルドカードが使えるようになっている。 仕組みは簡単で、 カレントディレクトリに、

file1
file2
file3

このようにファイルがあったときに、

cat file*

と入力すれば、シェルが「*」を展開してくれて、

cat file1 file2 file3

と入力したのと同じになる。 実際にどれだけマッチするかを知りたい場合は、

echo file*

とでもすればいい。

ファイル名を系統的に付けておけば、 ワイルドカードは便利に使える。 例えば 2010-08-01.log のようなファイル名でログを作っておけば、 8月のログは、 2010-08-*.log で全部参照できる。

カレントディレクトリに、長いファイル名のファイルがあるときに、 他にマッチしないようにワイルドカードを使うと、入力の手間が省ける。 例えば、

2010-08-01-jiro-core.tar.gz

のようなファイル名があって、そこにある gz ファイルが1つだけなら、 このファイル名を入力すべきところで、

*.gz

を使うことができるので、大幅に入力を短縮することができる。 ただし、うっかり予期していないものまでマッチさせないように注意が必要だ。

2010年08月27日

AdobeReader 9.3.4 に更新

Adobe Reader 9.3.3 も、結構危ないセキュリティの問題があったために公開されたバージョンなのだが、 これにもかなり危険な脆弱性があって、 8月19日にこの問題に対応した 9.3.4 が公開されている。

ITPro の記事にも PDF を開いただけでアウトみたいなことが書いてある。 9.3.3 を使っていれば、Adobe Reader 9 を開いて、 「アップデートの有無をチェック」を実行するだけで 9.3.4 に更新することができるが、 更新結果を反映するには Windows の再起動が必要になる。 私の場合、何日も pc を起動したままで、作業中のウィンドウが多数ある乱雑な状態になっているから、 再起動というのはあまりやりたくないが、 セキュリティ対策だからこれは仕方ない。

Adobe ReaderとAcrobatに危険な脆弱性、すぐにアップデートを

Security updates available for Adobe Reader and Acrobat

2010年08月26日

ログを grep で検索

JIRO は Linux で動作させることが多いので、Linux の shell 上でいろいろできると便利なことがよくある。 そういう小技で、ちょっとしたことを紹介したい。 なお、そんな当たり前のことは知っているという方もいらっしゃると思うが、 見逃してください。

ログというのは、 JIRO の中で何が起こっているかをテキストファイルに順次書き出したもので、 JIRO ではこれを apache の log4j を使って生成している。

<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
	<param name="File" value="/usr/local/jiro/logs/jiro_log4j.log" />
	<param name="Encoding" value="UTF-8" />
	<param name="bufferedIO" value="false" />
	<param name="bufferSize" value="8192" />
	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %C:%L - %m%n" />
	</layout>
</appender>

このように、 DailyRollingFileAppender を指定して毎日ファイルを分けているので、 長期間稼動させていると、ファイルがどんどん増える。 そこで、何か Exception を検索したいというときに使うのが grep だ。 ログファイルがたくさん入っているディレクトリに cd して、 次のように2段にして使う。

$ grep jp.co.crm.jiro.cron.DailyJobBean jiro_log4j.log.2010* | grep ERROR

この例だと、まず DailyJobBean というクラスで 今年生成したログを grep して、 さらに ERROR で grep する、という仕組みである。 単純だけど、これは結構使える。

2010年08月25日

CentOS に redmine 1.0.0 RC をインストールする (終)

これでインストール終了のはずなので、 とりあえず起動してみる。

$ ruby script/server webrick -e production
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010.  Use #requirement
Rails Error: Unable to access log file. Please ensure that /usr/local/redmine/redmine-1.0.0/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
DEPRECATION WARNING: Please update config/database.yml to use 'database' instead of 'dbfile'. (called from parse_sqlite_config! at /usr/local/redmine/redmine-1.0.0/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:35)
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-07-22 22:18:03] INFO  WEBrick 1.3.1
[2010-07-22 22:18:03] INFO  ruby 1.8.7 (2010-06-23) [x86_64-linux]
[2010-07-22 22:18:03] INFO  WEBrick::HTTPServer#start: pid=9825 port=3000
[2010-07-22 22:18:21] INFO  going to shutdown ...
[2010-07-22 22:18:21] INFO  WEBrick::HTTPServer#start done.
Exiting

怪しいメッセージが出ている。 何かまだ permission に問題があるようだ。 ログに関しては、log ディレクトリの下を見ると、こうなっていた。

# ll
合計 16
-rw-r--r-- 1 mai  mai  36 10月 15  2006 delete.me
-rw-r--r-- 1 root root 51  7月 22 18:52 production.log

mai というのは私のアカウントで、Redmine を起動するユーザーでもあるのだが、 production.log が root しか書けなくなっているのはマズいので、chown で調整する。

# chown mai.mai pro*
# ll
合計 16
-rw-r--r-- 1 mai mai 36 10月 15  2006 delete.me
-rw-r--r-- 1 mai mai 51  7月 22 18:52 production.log

もう一度起動してみる。

ruby script/server webrick -e production
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
./script/../config/../vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010.  Use #requirement
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-07-22 22:19:54] INFO  WEBrick 1.3.1
[2010-07-22 22:19:54] INFO  ruby 1.8.7 (2010-06-23) [x86_64-linux]
[2010-07-22 22:19:54] INFO  WEBrick::HTTPServer#start: pid=9858 port=3000

これでokっぽいが、こんな Exception が出てしまう。

SQLite3::ReadOnlyException: attempt to write a readonly database: INSERT INTO "users" ("created_on", "hashed_password", "admin", "language", "lastname", "mail", "updated_on", "type", "firstname", "mail_notification", "login", "status", "identity_url", "last_login_on", "auth_source_id") VALUES('2010-07-22 22:21:46', '', 'f', '', 'Anonymous', '', '2010-07-22 22:21:46', 'AnonymousUser', '', 'f', '', 0, NULL, NULL, NULL)

RAILS_ROOT: /usr/local/redmine/redmine-1.0.0

db の下を見ると、こうなっている。

drwxr-xr-x 2 mai  mai   16384  7月 19 03:21 migrate
-rw-r--r-- 1 root root 195584  7月 22 22:14 redmine.db
-rw-r--r-- 1 root root  27041  7月 22 22:14 schema.rb

db の owner が root なので書けない。間違って途中で root のまま作業してしまったようだ。 これを chmod mai.mai * で owner=mai にすれば解決。 その後、特に問題なく稼動している。

2010年08月24日

CentOS に redmine 1.0.0 RC をインストールする (7)

・sqlite のインストール

DB の migration がうまくいかない。 どうも sqlite3-ruby が入っていないのが原因らしいので、gem install してみる。

# gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'
*** extconf.rb failed ***
(略)

yum install しろというので、してみる。

[root@t110 redmine]# yum install sqlite-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sqlite-devel.i386 0:3.3.6-5 set to be updated
---> Package sqlite-devel.x86_64 0:3.3.6-5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package                  Arch               Version               Repository        Size
==========================================================================================
Installing:
 sqlite-devel             i386               3.3.6-5               base             257 k
 sqlite-devel             x86_64             3.3.6-5               base             257 k

Transaction Summary
==========================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)

Total download size: 515 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): sqlite-devel-3.3.6-5.x86_64.rpm                             | 257 kB     00:01
(2/2): sqlite-devel-3.3.6-5.i386.rpm                               | 257 kB     00:01
------------------------------------------------------------------------------------------
Total                                                     206 kB/s | 515 kB     00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : sqlite-devel                                                       1/2
  Installing     : sqlite-devel                                                       2/2

Installed:
  sqlite-devel.i386 0:3.3.6-5                sqlite-devel.x86_64 0:3.3.6-5

Complete!
[root@t110 redmine]#

ここまでは問題なさそうなので、もう一度 gem install してみる。

# gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... no
checking for sqlite3_initialize()... no
sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!
*** extconf.rb failed ***

要するに 3.3.6 だと古すぎるそうだ。 sqlite の最新のものをインストールすることにする。

公式サイト ( http://www.sqlite.org/download.html ) から 3.7.0 を download する。

この頃になると、 もう疲れているので、何も考えずに。ダウンロード、展開、./configure、make、make install、と、呪文のように黙々と実行する。

# ./configure

(略)

configure: creating ./config.status
config.status: creating Makefile
config.status: creating sqlite3.pc
config.status: executing depfiles commands
# make
(略)

creating sqlite3
# make install
make[1]: ディレクトリ `/usr/local/sqlite-3.7.0' に入ります
test -z "/usr/local/lib" || mkdir -p -- "/usr/local/lib"
 /bin/sh ./libtool --mode=install /usr/bin/install -c  'libsqlite3.la' '/usr/local/lib/libsqlite3.la'
/usr/bin/install -c .libs/libsqlite3.so.0.8.6 /usr/local/lib/libsqlite3.so.0.8.6
(cd /usr/local/lib && { ln -s -f libsqlite3.so.0.8.6 libsqlite3.so.0 || { rm -f libsqlite3.so.0 && ln -s libsqlite3.so.0.8.6 libsqlite3.so.0; }; })
(cd /usr/local/lib && { ln -s -f libsqlite3.so.0.8.6 libsqlite3.so || { rm -f libsqlite3.so && ln -s libsqlite3.so.0.8.6 libsqlite3.so; }; })
/usr/bin/install -c .libs/libsqlite3.lai /usr/local/lib/libsqlite3.la
/usr/bin/install -c .libs/libsqlite3.a /usr/local/lib/libsqlite3.a
chmod 644 /usr/local/lib/libsqlite3.a
ranlib /usr/local/lib/libsqlite3.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"
  /bin/sh ./libtool --mode=install /usr/bin/install -c 'sqlite3' '/usr/local/bin/sqlite3'
/usr/bin/install -c .libs/sqlite3 /usr/local/bin/sqlite3
test -z "/usr/local/include" || mkdir -p -- "/usr/local/include"
 /usr/bin/install -c -m 644 'sqlite3.h' '/usr/local/include/sqlite3.h'
 /usr/bin/install -c -m 644 'sqlite3ext.h' '/usr/local/include/sqlite3ext.h'
test -z "/usr/local/share/man/man1" || mkdir -p -- "/usr/local/share/man/man1"
 /usr/bin/install -c -m 644 './sqlite3.1' '/usr/local/share/man/man1/sqlite3.1'
test -z "/usr/local/lib/pkgconfig" || mkdir -p -- "/usr/local/lib/pkgconfig"
 /usr/bin/install -c -m 644 'sqlite3.pc' '/usr/local/lib/pkgconfig/sqlite3.pc'
make[1]: ディレクトリ `/usr/local/sqlite-3.7.0' から出ます

特に指定もしていないのだが、 /usr/local/ にインストールされていることが分かる。 もう一度、gem install を実行する。

# gem install sqlite3-ruby
Building native extensions.  This could take a while...
Successfully installed sqlite3-ruby-1.3.1
1 gem installed
Installing ri documentation for sqlite3-ruby-1.3.1...

Enclosing class/module 'mSqlite3' for class Statement not known

No definition for libversion
Installing RDoc documentation for sqlite3-ruby-1.3.1...

Enclosing class/module 'mSqlite3' for class Statement not known

No definition for libversion
#

うまくできている? ユーザーアカウントで、次のコマンドを実行する。

rake db:migrate RAILS_ENV=“production” 
(略)

大量のメッセージが出ているので、成功したらしい。 permission の変更をしろということで、手順通りやってみる。

mkdir tmp public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

(つづく)

2010年08月23日

CentOS に redmine 1.0.0 RC をインストールする (6)

・openssl-devel のインストール

openssl がインストールされていないというのだが、

# which openssl
/usr/bin/openssl

入っているように見える。確認する。

# yum list openssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Installed Packages
openssl.i686                           0.9.8e-12.el5_4.6                         installed
openssl.x86_64                         0.9.8e-12.el5_4.6                         installed

もしかして、devel が入ってないからだめなのか?

# yum list openssl-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Available Packages
openssl-devel.i386                          0.9.8e-12.el5_4.6                         base
openssl-devel.x86_64                        0.9.8e-12.el5_4.6                         base

ということで、 openssl-devel をインストールすることにした。 yum を使う。

# yum install openssl-devel

(途中略)

Installing:
 openssl-devel              i386          0.9.8e-12.el5_4.6          base           1.9 M
 openssl-devel              x86_64        0.9.8e-12.el5_4.6          base           1.9 M
Installing for dependencies:
 e2fsprogs-devel            x86_64        1.39-23.el5                base           632 k
 keyutils-libs-devel        x86_64        1.2-1.el5                  base            27 k
 krb5-devel                 x86_64        1.6.1-36.el5_5.4           updates        1.9 M
 libselinux-devel           x86_64        1.33.4-5.5.el5             base           149 k
 libsepol-devel             x86_64        1.15.2-3.el5               base           192 k
 zlib-devel                 x86_64        1.2.3-3                    base           102 k

Transaction Summary
==========================================================================================
Install       8 Package(s)
Upgrade       0 Package(s)

Total download size: 6.7 M
Is this ok [y/N]: 

yを押せばインストールが始まる。

Downloading Packages:
(1/8): keyutils-libs-devel-1.2-1.el5.x86_64.rpm                    |  27 kB     00:00
(2/8): zlib-devel-1.2.3-3.x86_64.rpm                               | 102 kB     00:00
(3/8): libselinux-devel-1.33.4-5.5.el5.x86_64.rpm                  | 149 kB     00:01
(4/8): libsepol-devel-1.15.2-3.el5.x86_64.rpm                      | 192 kB     00:01
(5/8): e2fsprogs-devel-1.39-23.el5.x86_64.rpm                      | 632 kB     00:02
(6/8): openssl-devel-0.9.8e-12.el5_4.6.x86_64.rpm                  | 1.9 MB     00:08
(7/8): krb5-devel-1.6.1-36.el5_5.4.x86_64.rpm                      | 1.9 MB     00:05
(8/8): openssl-devel-0.9.8e-12.el5_4.6.i386.rpm                    | 1.9 MB     00:04
------------------------------------------------------------------------------------------
Total                                                     281 kB/s | 6.7 MB     00:24
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : zlib-devel                                                         1/8
  Installing     : keyutils-libs-devel                                                2/8
  Installing     : libsepol-devel                                                     3/8
  Installing     : libselinux-devel                                                   4/8
  Installing     : e2fsprogs-devel                                                    5/8
  Installing     : krb5-devel                                                         6/8
  Installing     : openssl-devel                                                      7/8
  Installing     : openssl-devel                                                      8/8

Installed:
  openssl-devel.i386 0:0.9.8e-12.el5_4.6     openssl-devel.x86_64 0:0.9.8e-12.el5_4.6

Dependency Installed:
  e2fsprogs-devel.x86_64 0:1.39-23.el5      keyutils-libs-devel.x86_64 0:1.2-1.el5
  krb5-devel.x86_64 0:1.6.1-36.el5_5.4      libselinux-devel.x86_64 0:1.33.4-5.5.el5
  libsepol-devel.x86_64 0:1.15.2-3.el5      zlib-devel.x86_64 0:1.2.3-3

Complete!
#
これで openssl-devel が入ったので、ruby から使えるように設定する。 ruby をインストールしたディレクトリの、ext/openssl に移動して、extconf.rb を実行する。
# ruby extconf.rb --with-openssl-include=/usr/include --with-openssl-lib=/usr/lib
=== OpenSSL for Ruby configurator ===

(略)

=== Checking done. ===
creating extconf.h
creating Makefile
Done.

これで Makefile ができるので、make all を実行。 実行できたら、make install を実行する。

# make all

(略)

# make install
/usr/bin/install -c -m 0755 openssl.so /usr/local/lib/ruby/site_ruby/1.8/x86_64-linux
mkdir -p /usr/local/lib/ruby/site_ruby/1.8/openssl
mkdir -p /usr/local/lib/ruby/site_ruby/1.8/net
/usr/bin/install -c -m 644 ./lib/openssl/ssl.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/cipher.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/x509-internal.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/buffering.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/digest.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/x509.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/pkcs7.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/bn.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl/ssl-internal.rb /usr/local/lib/ruby/site_ruby/1.8/openssl
/usr/bin/install -c -m 644 ./lib/openssl.rb /usr/local/lib/ruby/site_ruby/1.8
/usr/bin/install -c -m 644 ./lib/net/telnets.rb /usr/local/lib/ruby/site_ruby/1.8/net
/usr/bin/install -c -m 644 ./lib/net/ftptls.rb /usr/local/lib/ruby/site_ruby/1.8/net

ということで、ここまではうまくいった。

(つづく)

2010年08月20日

CentOS に redmine 1.0.0 RC をインストールする (5)

・テーブルの作成 (インストール手順 5)

公式サイトに次のように書いてあったので、 その通りにしてみる。

rake db:migrate RAILS_ENV=“production”

実はうっかりこのまま実行したのだが、 double quote が全角だとまずいのではないかと思う。 しかし、もっとまずいことに、こんなメッセージが出てしまった。

# rake db:migrate RAILS_ENV=“production
(in /usr/local/redmine/redmine-1.0.0)
rake aborted!
Could not find RubyGem rack (~> 1.0.1)

(See full trace by running task with --trace)

rack がない。 ということで、rack をインストールする。

# gem install rack
Successfully installed rack-1.2.1
1 gem installed
Installing ri documentation for rack-1.2.1...
Installing RDoc documentation for rack-1.2.1...

そんなに新しいのでいいのか? とりあえずこれで続行してみると、

# rake db:migrate RAILS_ENV="production"
(in /usr/local/redmine/redmine-1.0.0)
rake aborted!
RubyGem version error: rack(1.2.1 not ~> 1.0.1)

(See full trace by running task with --trace)

よくないらしい。

ということで、アンインストールしてから、 -v オプションを使って、1.0.1 を指定してインストールし直すことにする。

# gem uninstall rack
Remove executables:
        rackup

in addition to the gem? [Yn]  Y
Removing rackup
Successfully uninstalled rack-1.2.1
#
# gem install rack -v 1.0.1
Successfully installed rack-1.0.1
1 gem installed
Installing ri documentation for rack-1.0.1...
Installing RDoc documentation for rack-1.0.1...

これで確実なものがインストールされたので、再度 rake を実行。

# rake db:migrate RAILS_ENV="production"
(in /usr/local/redmine/redmine-1.0.0)
rake aborted!
no such file to load -- openssl

(See full trace by running task with --trace)
#

openssl がインストールされていないと言われてしまった。

(つづく)