Debian SquuezeにもOracle11g Express Editionを入れてみた。

※実際には12/17のネタです。

■前提条件の確認とインストール
 lennyには無かった「useradd」コマンドに「-M」オプションがあるので、そのまま入りそうだ。

$ sudo apt-get install alien libaio1 unixodbc
$ whereis -b unzip
unzip: /usr/bin/unzip
$ LANG=C man useradd | grep -A 3 "\-M\$"
       -M
           Do no create the user's home directory, even if the system wide
           setting from /etc/login.defs (CREATE_HOME) is set to yes.
$ whereis -b chkconfig | grep chkconfig || sudo apt-get install chkconfig
chkconfig: /sbin/chkconfig
$ apt-cache show chkconfig | grep Filename
Filename: pool/main/c/chkconfig/chkconfig_11.0-79.1-1_all.deb

$ whereis -b awk 2>&1 | grep "^\/bin\/awk" || test -f /bin/awk || sudo ln -s /usr/bin/awk /bin/awk
$ ls -l /bin/awk
lrwxrwxrwx 1 root root 12 2011-12-17 19:59 /bin/awk -> /usr/bin/awk

■zipの解凍、rpm⇒deb変換
 ※lennyと母艦は一緒の仮想マシンなので、ここの処理時間は変わらない。

$ unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
$ cd Disk1/;time sudo alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
oracle-xe_11.2.0-2_amd64.deb generated

real    4m14.957s
user    1m16.953s
sys     2m24.345s

■インストール

$ sudo dpkg -i oracle-xe_11.2.0-2_amd64.deb
(データベースを読み込んでいます ... 現在 41910 個のファイルとディレクトリがインストールされています。)
oracle-xe 11.2.0-2(oracle-xe_11.2.0-2_amd64.deb で) 置換するための準備をしています ...
oracle-xe を展開し、置換しています...
oracle-xe (11.2.0-2) を設定しています ...
Executing post-install steps...
insserv: warning: script 'oracle-xe' missing LSB tags and overrides
oracle-xe                 0:off  1:off  2:on   3:on   4:on   5:on   6:off
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

■「configure」スクリプトの実行

$ sudo /etc/init.d/oracle-xe configure

★途中で以下のようなエラーが出たが正常に終了した。

Starting Oracle Net Listener...touch: cannot touch `/var/lock/subsys/listener': No such file or directory
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.
■実行したスクリプトから「touch」を使用している箇所を抜き出す

$ sudo grep touch /etc/init.d/oracle-xe | sed s/"\t"//g | sort | uniq
touch /var/lock/subsys/listener
touch /var/lock/subsys/oracle-xe

■後で削除されるようだが、「/var/lock/subsys」ディレクトリが無い。

$ sudo grep  "\/var\/lock\/subsys\/listener" /etc/init.d/oracle-xe
        touch /var/lock/subsys/listener
                        touch /var/lock/subsys/listener
    if [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/listener

$ sudo grep  "\/var\/lock\/subsys\/oracle-xe" /etc/init.d/oracle-xe
        touch /var/lock/subsys/oracle-xe
                touch /var/lock/subsys/oracle-xe
        rm -f /var/lock/subsys/oracle-xe

 参考:最終回 Linux起動の仕組みを理解しよう[rcスクリプト編]
 http://www.atmarkit.co.jp/flinux/rensai/theory11/theory11a.html

$ sudo grep subsys /etc/init.d/oracle-xe
        touch /var/lock/subsys/listener
        touch /var/lock/subsys/oracle-xe
                        touch /var/lock/subsys/listener
                touch /var/lock/subsys/oracle-xe
    if [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/listener
        rm -f /var/lock/subsys/oracle-xe

■ディレクトリを作成するだけでよいので、作成する。

$ sudo mkdir /var/lock/subsys

■oracle-xeを起動中は以下の空のファイルが作成される。
 停止するとこのファイルは無くなる。

$ sudo ls /var/lock/subsys/
listener  oracle-xe

※lennyにも無かったので、このディレクトリを作成して追加した。
※oracleユーザでログインしないのであれば、パスワードの設定は不要。

■ログインチェック

$ source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
$ sqlplus system/*****
SQL*Plus: Release 11.2.0.2.0 Production on 土 1217 20:35:23 2011
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> exit
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。

■追記(initスクリプトの修正)

 oracle-xeのLSB tagを修正する(debian lenny / squeeze)
 http://ameblo.jp/labunix/entry-11116145732.html