2015年8月19日水曜日

英語tips

[too short a time]

a short timeのshortをtoo(副詞)が修飾するために語順変更

[toward, towards]

意味は同じ、towardがアメリカ、towardsがイギリス英語

[his or her, their]

his or her の代わりに、theirを使える(くだけた言い方)

2015年8月2日日曜日

Windows 8.1からVagrant⇒Virtual Box⇒Ubuntu経由でOctaveを使う

(0) 使用したソフトウエア

Windows 8.1 64 bit
Virtual Box 4.3.28
Vagrant 1.7.2
Ubuntu 14.04 LTS 64bit
Octave 3.8.1
Xming 6.9.0.31
PuTTY 0.64

UbuntuとOctave以外は既にインストール済だったものを使ったので、インストール方法は省略。


(1) 最小限のVagrantfileを生成する。
> vagrant init -m
Vagrantfileの中身はたったこれだけ。。。
Vagrant.configure(2) do |config|
  config.vm.box = "init"
end
VagrantfileはRubyで書かれているので、制御構造や変数、配列などはRubyのまま使える。


(2) ベースにするboxを設定する。

Vagrant Cloudにあるオフィシャルのubuntuの64bit版を使う。
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
end
boxインストールされていない場合のURLも指定できるが、defaultのVagrant Cloudから持ってくる場合は省略可能。

ホストとゲストで64bit/32bitが異なるときは、他にも設定しないと上手く動かないらしい。
ここではホスト、ゲストとも64bitなので問題なし。


(3) とりあえず、vagrant upしてみる

ダウンロードが始まったが、残り時間が一時間弱。。。
> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'ubuntu/trusty64' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'https://atlas.hashicorp.com/ubuntu/boxes/trusty64'
    default: URL: https://atlas.hashicorp.com/ubuntu/boxes/trusty64
==> default: Adding box 'ubuntu/trusty64' (v20150609.0.10) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150609.0.10/providers/virtualbox

    default: Progress: 50% (Rate: 95875/s, Estimated time remaining: 0:33:10)
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

Recv failure: Connection was reset
ダウンロードに失敗してしまった。タイムアウト?


(4) upの前にbox addで追加してみる。
> vagrant box add ubuntu/trusty64
==> box: Loading metadata for box 'ubuntu/trusty64'
    box: URL: https://atlas.hashicorp.com/ubuntu/trusty64
==> box: Adding box 'ubuntu/trusty64' (v20150609.0.10) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150609.0.10/providers/virtualbox.box
==> box: Box download is resuming from prior download progress
    box: Progress: 88% (Rate: 47705/s, Estimated time remaining: 0:02:58)
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

Recv failure: Connection was reset
同じメッセージが出て今度は88%で失敗。


(4) ローカルファイルからbox addする。

下記を参考にして、Chromeでダウンロードしてからローカルファイルからaddする方法を試してみる。
http://hayachi617.blogspot.jp/2013/09/windows8-provargrant.html

vagrant box addの時に表示されたダウンロード元の下記を、Chromeでダウンロードする。
https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150609.0.10/providers/virtualbox.box
> vagrant box add ubuntu/trusty64 trusty-server-cloudimg-amd64-vagrant-disk1.box
今度は無事にaddできた。


(5) もう一度upしてみる。
> vagrant up

(6) 更にゲストOS(ubuntu)にsshで接続
> vagrant ssh
ただし、Windowsのデフォルトではsshクライアントが入っていないので注意。
ここではGit Shellのsshクライアント使って接続している。
PuTTYの他のsshクライアントを使って、vagrant up時に出力されたアドレス/ポートに接続する事も出来る。
vagrant sshは上手く行かない事も多いようなので、PuTTYの方がおススメ。


(7) この状態でもゲストOSから外部ネットワークにはアクセス出来る。

例えば、下記の様にgoogleからwgetする事も出来る。
vagrant@vagrant-ubuntu-trusty-64:~$ wget http://www.google.com

(8) octaveを入れてみる。
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get update
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get install octave
300MB必要と言ってくるが構わず進める。ここもダウンロードに時間はかかるが成功。
vagrant@vagrant-ubuntu-trusty-64:~$ octave
で、octaveのcliが上がる。versionは3.8.1。
最新は4.0.0。aptのrepositoryを指定するとさらに新しいバージョンが取れるというのでやってみる。
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-add-repository ppa:octave/stable
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get update
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get upgrade octave
versionは3.8.1のまま。ppaもまだ4.0.0には更新されていない様子(2015/8/1)
ソースからコンパイルする方法も紹介されていたが、今回は省略。
http://askubuntu.com/questions/645600/how-to-install-octave-4-0-0-in-ubuntu-14-04
sudo apt-get build-dep octave
wget ftp://ftp.gnu.org/gnu/octave/octave-4.0.0.tar.gz
tar xf octave-4.0.0.tar.gz
cd octave-4.0.0/
./configure
make 
sudo make install

(9) X経由でGUIを使えるようにしてみる。

Vagrantfileの内容は config.ssh.forward_x11 = true 一行追加のみ。
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.ssh.forward_x11 = true
end
Windows側のXserverにはXmingを使う。
無償版は少し古いがR6.9ベースのVer6.9.0.31が最新。
有償版ならR7.5ベースのモノがある。
XmingからPuTTYを使用してssh port forwardingを行うため、PuTTYも必要。
Xmingに付属しているXLaunchを使ってXmingを設定済の状態で起動する.xlaunchファイル作成する事が出来る。
中身はただのxmlファイル。
下記をoctave.xlaunch等の名前にして保存すれば、octaveのguiをいきなり起動出来る。
<?xml version="1.0"?>
<XLaunch xmlns="http://www.straightrunning.com/XmingNotes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.straightrunning.com/XmingNotes XLaunch.xsd" WindowMode="MultiWindow" ClientMode="StartProgram" Program="octave --force-gui" ClientStart="PuTTY" RemoteHost="127.0.0.1" RemoteUser="vagrant" ExtraSSH="-P 2222" Display="0" Clipboard="true"/>

(10) octaveのインストールをVagrantfileのprovisionで実行できるようにする。

octaveのインストール用shell scriptをsetup.shに書いてVagrantfileと同じdirに置く。
Vagrantfileでprovisioning時にsetup.shが呼び出される様にする。

Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.ssh.forward_x11 = true
  config.vm.provision :shell, privileged: false, :path => "setup.sh"
end
setup.sh
#!/usr/bin/env bash

sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave

(11) 公開鍵暗号を使った接続(PuTTY)

下記を見て設定を行う。
http://www.kuins.kyoto-u.ac.jp/news/47/putty-gen.html

PuTTYgenで公開鍵(id_rsa.pub)、秘密鍵(id_rsa.ppk)を作成。
pscpで公開鍵をWindowsからUbuntuに転送。
Ubuntu上のssh-keygenでid_rsa.pubからauthorized_keysを生成。
authorized_keysのパーミッションを600にする。
id_rsa.pubは削除しておく。
PuTTYのカテゴリの『接続』-> 『SSH』-> 『認証パラメータ』->『認証のためのプライベートキーファイル』に秘密鍵(id_rsa.ppk)を指定。
PuTTYのPagaentに秘密鍵(id_rsa.ppk)を指定しておけば、パスフレーズの入力をPageant起動時の一回のみに省略できる。

仮想サーバへのSSHログインは、PC内部ネットワークを使っている。
したがって、外部ネットからログイン時にパスワードを盗聴されるリスクは低い気がする。
何にせよ、やり方を知っておくのは悪くない。


(12) TODO

Vagrant=>Virtual Box=>Ubuntu=>Docker=>Octaveにしてみる。
Vagrant=>Docker=>Octaveにしてみる。