仕事の関係でCOBOLを学習する必要が出てきたため、せっかくなのでVagrantでopensource COBOLを動かせるローカル開発環境を構築してみました。
参考サイト様のほぼそのままですが(多謝)、とりあえずできたので備忘録も兼ねて記載しておきます。
■環境
使用PC:Windows10
構築する仮想マシン:CentOS6.8
■必要なソフトウェアのインストール
Vagrant
www.vagrantup.com
VirtualBox
Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle
■ローカル開発環境(VM)の構築
今後仮想環境を複数作成する可能性を考慮して、仮想環境を括る”Vagrant”をCドライブ直下に作成し、その下に今回作成する仮想環境のディレクトリを作成
> mkdir C:\Vagrant\cbl_centos68
cdコマンドで移動
> cd C:\Vagrant\cbl_centos68
Vagrantfile の作成
C:\Vagrant\cbl_centos68>vagrant init bento/centos-6.8
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Vagrantfileの編集
作成されたVagrantfileをエディタで開き、35行目、以下の部分のコメントアウトを外す
config.vm.network "private_network", ip: "192.168.33.10"
VMの起動
C:\Vagrant\cbl_centos68>vagrant up
VMへSSH接続
C:\Vagrant\cbl_centos68>vagrant ssh
CentOSのアップデート
[vagrant@localhost ~]$ sudo yum update -y
opensource COBOLをインストール
opensource-cobol-1.4.0J-1.el6.x86_64.rpmを以下サイトからダウンロードして、先程作成したC:\Vagrant\cbl_centos68
に格納しておく
www.osscons.jp
先程のrpmファイルがVagrantディレクトリに格納されているのを確認してlocalinstallを実行
[vagrant@localhost ~]$ cd /vagrant
[vagrant@localhost vagrant]$ ls
hello.cbl opensource-cobol-1.4.0J-1.el6.x86_64.rpm Vagrantfile
[vagrant@localhost vagrant]$ sudo yum localinstall opensource-cobol-1.4.0J-1.el6.x86_64.rpm
途中必要となるパッケージのインストールを求められるので承認
Install 6 Package(s)
Total size: 21 M
Total download size: 20 M
Installed size: 35 M
Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed:
opensource-cobol.x86_64 0:1.4.0J-1
Dependency Installed:
cpp.x86_64 0:4.4.7-23.el6 gcc.x86_64 0:4.4.7-23.el6 glibc-devel.x86_64 0:2.12-1.212.el6
glibc-headers.x86_64 0:2.12-1.212.el6 kernel-headers.x86_64 0:2.6.32-754.2.1.el6
Complete!
バージョン確認
[vagrant@localhost vagrant]$ cobc -version
opensource COBOL 1.4J
OSS Consortium's patched version of OpenCOBOL1.1(Feb.06 2009)
----
cobc (OpenCOBOL) 1.1.0
Copyright (C) 2001-2009 Keisuke Nishida / Roger While
Built May 07 2015 17:18:48
Packaged Feb 06 2009 10:30:55 CET
■必要な各ライブラリのインストール
gmp-develのインストール
[vagrant@localhost vagrant]$ sudo yum install gmp-devel
途中必要となるパッケージのインストールを求められるので承認
Install 1 Package(s)
Total download size: 171 k
Installed size: 337 k
Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed:
gmp-devel.x86_64 0:4.3.1-13.el6
Complete!
ncurses-develのインストール
[vagrant@localhost vagrant]$ sudo yum install ncurses-devel
途中必要となるパッケージのインストールを求められるので承認
Install 1 Package(s)
Total download size: 641 k
Installed size: 1.7 M
Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed:
ncurses-devel.x86_64 0:5.7-4.20090207.el6
Complete!
db4-develのインストール
[vagrant@localhost vagrant]$ sudo yum install db4-devel
途中必要となるパッケージのインストールを求められるので承認
Install 2 Package(s)
Total download size: 7.1 M
Installed size: 26 M
Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed:
db4-devel.x86_64 0:4.7.25-22.el6
Dependency Installed:
db4-cxx.x86_64 0:4.7.25-22.el6
Complete!
適当にハローワールドを出力するCOBOLプログラム(hello.cbl)を作成して先程のVagrantフォルダに格納しておく
hello.cblをコンパイル
[vagrant@localhost vagrant]$ cobc -x -std=cobol85 hello.cbl
正しくコンパイルされていればhelloファイルが出来上がる。
[vagrant@localhost vagrant]$ ls
hello hello.cbl opensource-cobol-1.4.0J-1.el6.x86_64.rpm Vagrantfile
ただしこのままでは実行できない。
/etc/ld.so.conf.dの中にlibcob.so.1
の場所を記載したconfファイルを作成しておく必要がある。
libcob.so.1の場所を確認
[vagrant@localhost vagrant]$ sudo find / -name libcob.so.1
/usr/local/lib/libcob.so.1
viコマンドで先程確認した場所を記載したconfファイルを作成
[vagrant@localhost vagrant]$ sudo vi /etc/ld.so.conf.d/usr-local-lib.conf
catコマンドで作成したconfファイルの内容を確認
[vagrant@localhost vagrant]$ cat /etc/ld.so.conf.d/usr-local-lib.conf
/usr/local/lib
ldconfigコマンドで設定を反映させる
[vagrant@localhost vagrant]$ sudo ldconfig
lddコマンドで確認するとlibcob.so.1のパスが通っているのが確認できる
[vagrant@localhost vagrant]$ ldd ./hello
linux-vdso.so.1 => (0x00007ffccf0cf000)
libcob.so.1 => /usr/local/lib/libcob.so.1 (0x00007f5d531a1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f5d52f1d000)
libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f5d52cc1000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f5d52a9f000)
libdb-4.7.so => /lib64/libdb-4.7.so (0x00007f5d5272a000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5d52395000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5d52191000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f5d51f70000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5d51d52000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d533de000)
helloファイルを実行
[vagrant@localhost vagrant]$ ./hello
HELLO, WORLD!
■参考サイト
sutepulu.com