karashi39とはいったい

夢と希望と明日と正義を讃える

流行りに乗ってM言語に手を出してみた

言わずと知れたM言語ですが、MUMPS(Massachusetts general hospital Utility Multi-Programming System)というデータベースで動く言語ということです。hospitalとかついちゃってる医療向けの技術のくせに、mumps(おたふく風邪)っていうネーミングがよろしい。というわけで触ってみようと思い立ち、触りました。

動作環境

よくわからん。OSXで動くような動かないような...。
brewでsearchすると、no formula。Closed pull requestsはいっぱいあって、ううむこれは...。 そんなことを調べているうちに、"vagrantで配布してますのでそれでよろしく"みたいな話があったので、vagrantをやったことがなかった私はやってみようと思ったのだった。今時やっていなかったとは... というわけで、Ubuntuです。

というわけでOSEHRA VistA をみて作業を進めていきます。

VistA Vagrant Installation

よくわからん。vagrantがわからん。しかしREADME通りに進めて行くと、エラーが出ているような途中で終わっているようなでしたが、vagrant sshでつながったので動いているし大丈夫だろうと思いました。しかし、READMEに書いてあるssh -p 2222 osehratied@localhostでは繋がらないんですね。それはなんなのかを、とりあえず調べることにしました。

そうすると、osehratiedユーザを初期化するtied.shがどうもコケて死んでしまうみたいな感じでした。中身を見ると、どうもmumpsがインストールされているべきディレクトリが参照できていない(シンボリックリンクがありましたが、その先が存在していない)。ので、どうやらこれは大事な何かがインストールできてないよねって気持ちになりました。

とりあえず、その辺りどうするのかを、実機調査ベースで考えて行くことにしました。なんというか、このソフトウェアはOSSって言ってる割に情報があんまりでてこない感じで、CSY(Closed Source Yarou)なのでは?という気持ちになったため、趣味だし自分が楽しい感じで進めたいって思ったのです。

GT.M Installation

GT.Mっていうのが、mumpsのDBのことみたいです。細かいことをあまり考えたくないのですが、とりあえず/opt/lsb-gtmうんちゃらみたいなディレクトリにモノがあるのが理想形のようなので、インストールしなければということで、インストーラーを落としてやっていこうと思いました。この時点で公式のVagrantを落としてくる意味はないよなって思ったりもしました。

作業はGTM installation - http://vistapedia.net/に沿って進めていきます。

なにやら、wgetで指定するurlが違う*1とか、32bitバイナリがまんま入ってくるのでビルドができないとかってのがありましたが、なんとかしました。

そして結果的には動きませんでした。GT.Mを入れりゃいいんだろみたいな雑な考えではダメだと思った私は、やはりVagrantの方でなんとかしないといけないのだという気持ちになりました。

  config.vm.provision :shell, inline:<<-EOS
    echo "set grub-pc/install_devices /dev/sda" | debconf-communicate
    dpkg --add-architecture i386
    apt-get update
  #  apt-get -y upgrade --fix-missing
    apt-get -y install libc6:i386 libncurses5:i386 libstdc++6:i386
  #  apt-get -y install gcc-multilib g++-multilib
  EOS

Ubuntux86-64でx86用の何かを可能な感じにするやつです。Vagrantfileにapt-get upgradeを書くとGRUBの画面を開こうとして死ぬので、開かないで済むように指示を書きましたが、肝心のupgradeでもなんだかコケる(ハッシュサムが合わない)とかがあり、もう面倒なので外しました。コンパイラもコケるので外しています。なかなかM言語を触ることができなくて面倒になっていた私は、細かいことを全て忘れることにしました。

YottaDBというものが

x86のファイルを触れるようにしてみても、やはりvagrant upはうまくいかなくて、/opt/lsb-gtm no such file or directoryみたいなメッセージはなくならない。vagrant up --debugをつかって原因を調べているのですが、デバッグログというものは慣れが必要だなと改めて感じました。そしてどうやらydbinstallというものがうまくいっていないらしい。

Something went wrong downloading ydbinstall (なんかydbinstallのダウンロードがダメ)

というログがひっそりと出ていて、よくわからんことを言うなよって思いましたが、調べるとydbinstallというものをcurlで取得するのに、そのURLが400になるのでダメだったり、今は大丈夫だったり、大丈夫だけどSHA1が違うのでエラーに入るということみたいだったので、SHA1の判定をスキップにしました。これでYottaDBも入り、GT.Mも入ったみたいです。

さあ動かすぞ

(devel) karashi(^-^)39 ~/Work/mumps_work/VM/VistA/Scripts/Install/Ubuntu $ ssh -p 2222 osehratied@localhost
osehratied@localhost's password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-62-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

7 packages can be updated.
3 updates are security updates.


*** System restart required ***

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

**************************************************
  *  Welcome to VistA
  **************************************************
  *
  * Use the following credentials for Robert Alexander
  *   Access:  fakedoc1
  *   Verify:  1Doc!@#$
  *
  * Use the following credentials for Mary Smith (Nurse)
  *   Access:  fakenurse1
  *   Verify:  1Nur!@#$
  *
  * Use the following credentials for Joe Clerk (Clerk)
  *   Access:  fakeclerk1
  *   Verify:  1Cle!@#$
  *
  * If you have any issue, please email your question to admin@osehra.org
  **************************************************



Volume set: PLA:gtm_sysid  UCI: PLA  Device: /dev/pts/0

ACCESS CODE:

動いてる...ACCESS CODEを求められる画面でuser/passに相当するAccess/Verifyが上に書かれているという素敵なUIです。 よくよく考えるとこれはユーザ向けのモードなので、プログラマー向けのOSユーザでsshします。

(devel) karashi(^-^)39 ~/Work/mumps_work/VM/VistA/Scripts/Install/Ubuntu $ ssh -p 2222 osehraprog@localhost
osehraprog@localhost's password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-62-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

7 packages can be updated.
3 updates are security updates.


*** System restart required ***

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


OSEHRA>

これは、なんだろう?対話モードかな...ということで、ググった感じのハローワールドを打ち込みますと、

OSEHRA>w "hello world"
hello world

うごいた!

というわけで、結構時間をかけてしまいましたがM言語を動かす環境が僕のマクドにやってきました。言語を学ぶのはこれからですが、たのしいGWにしていきましょう。

本日のサムネ画像

最近作曲に行き詰まっているので、絵を描いてました。ギターを擬人化した、ギタ子です。 f:id:karashi39:20180507115429j:plain


*1:http://sourceforge.net/projects/fis-gtm/files/GT.M-x86-Linux/V5.3-004A/gtm_V53004A_linux_i686_pro.tar.gz/downloadってありますが、その次でtar解凍するので、urlのおしりのdownloadはいらないですよね。