何でも動いてビビっちゃうWSLですが, sqlplusを入れてみました.
ますますWSL環境に引きこもりそうです.
ダウンロード
この辺からどうぞ.
Oracle Database 12c Release 1 (12.1.0.2.0)
ユーザ登録が要るの, 面倒ですけど.
libaio1とalienをインストール
oracleからはrpm形式で配布されているのでdeb形式に変換します.
変換に必要なalienをとりあえずインストール.
$ sudo apt-get install libaio1 $ sudo apt-get install alien
deb形式に変換する
$ sudo alien oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm $ sudo alien oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm $ sudo alien oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.x86_64.rpm
インストール
sudo dpkg -i oracle-instantclient12.1-basic_12.1.0.1.0-2_amd64.deb sudo dpkg -i oracle-instantclient12.1-devel_12.1.0.1.0-2_amd64.deb sudo dpkg -i oracle-instantclient12.1-sqlplus_12.1.0.1.0-2_amd64.deb
環境設定
.profileとか.bashrcとかどこかに.
# oracle client export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib export NLS_LANG=Japanese_Japan.UTF8 export PATH=$PATH:/usr/lib/oracle/12.1/client64/bin
この時点でbash再起動か
$ source .profile
で再読み込みしておきます.
prelinkしておく
この時点で動くかなと思ったのですが, 下記のエラーが出て動作しませんでした.
sqlplus: error while loading shared libraries: libclntsh.so.12.1: cannot enable executable stack as shared object requires: Invalid argument
ここは無能らしくstack overflowの意見を鵜呑みにします
sudo apt-get install prelink sudo execstack -s /usr/lib/oracle/12.1/client64/bin/sqlplus
これで動作しました.
余談:prelinkって何や
こちらを参考にすると, shared objectをあらかじめ組み込んでしまうソフトだそうです.
へー.知らなかった.
ところで上記で実行したのは
execstack
ですが, こちらはセキュリティ機構の回避のためのコマンドらしいです.
Exec Sheildって初めて聞きました.
さらに余談
HOMEにoradiagディレクトリが出来て邪魔だったのですが消す方法があると知ってとてもうれしかったです.