Linux版Sublime Text 3で、日本語入力切り替えを変換・無変換・半角/全角キーで出来るようにする

Linux版のSublime Text 3で日本語入力できるようにする方法(ibus-mozc + emacs-mozc + SublimeMozcInput)については、検索すると有用なページがいくつか見つかります。

ただいずれのページも、半角/全角キーによる日本語入力切り替えはできない、との記述がありました。私はWindows環境では半角/全角キーではなく、変換・無変換でそれぞれ日本語入力オンオフを行っていたのですが、こちらも切り替えには使えないようでした。

これに対して、少々トリッキー?な方法を使うことによって、変換・無変換キーで日本語入力オンオフが出来るようになりました。半角/全角キーも同様の方法で出来るはずです。

具体的には以下の方法になります。

  1. 変換・無変換(または半角/全角)キーを、Sublime Text側でバインド可能なキーに割り当て直す
  2. 割り当てたキーで日本語オンオフ出来るようにSublime Textの設定を変更する

1. キー割り当て変更

Sublime Textでバインド可能なキーの一覧はここに記述があります。

この中から変換・無変換(または半角/全角)キーに割り当てるものを選びます。ただ普段使用するキーを割り当ててしまうと使い物にならなくなるので、使ってなさそうなものにします。私は変換キーをF13、無変換キーをF14にしました。

キー割り当てを変更する正しい方法は正直よくわからないのですが、以下のコマンド出力結果からキー割り当てに関する情報が記述されているファイルがわかります。

$ setxkbmap -print
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+japan"    };
    xkb_symbols   { include "pc+jp+inet(evdev)+ctrl(swapcaps)"  };
    xkb_geometry  { include "pc(pc105)" };
};

この出力のうちxkb_symbolsの部分が割当てに関する部分で、それぞれ/usr/share/X11/xkb/symbols/ディレクトリ内のpcファイル・jpファイル・inetファイルのevdev部分・ctrlファイルのswapcaps部分の設定が適用されていることになるようです。

このうち変換・無変換・半角/全角キーの設定が書いてあるのは/usr/share/X11/xkb/symbols/inetファイルになるので、このファイルを編集します。変換キーが押された時の割当は<HENK>、無変換キーの方は<MUHE>のところに記述します。半角/全角キーの場合は<HZTG>コメントアウトを解除して同じように記述します。

@@ -105,8 +105,8 @@
 //    key <HZTG>   {      [ Zenkaku_Hankaku       ]       };
 
     key <HKTG>   {      [ Hiragana_Katakana     ]       };
-    key <HENK>   {      [ Henkan                ]       };
-    key <MUHE>   {      [ Muhenkan              ]       };
+    key <HENK>   {      [ F13                ]       };
+    key <MUHE>   {      [ F14              ]       };
     key <KATA>   {      [ Katakana              ]       };
     key <HIRA>   {      [ Hiragana              ]       };
     key <RO>     {      [ Romaji                ]       };

編集後ログインしなおせば設定が反映されるはずです。

設定内容確認

キー割り当てが正しく変更されて、それがSublime Textから認識可能かどうかは以下のようにして確認できます。

  1. Sublime Textを起動する
  2. [View]-[Show Console]でコンソールを表示する
  3. コンソール下部のコマンド入力欄にsublime.log_input(True)と入力しEnterを押下する

これを実行することによって、以後Sublime Textを終了するまで、入力したキーの情報がコンソールに表示されるようになります。

この状態で変換・無変換・半角/全角キーを押してみて、割り当てたキーが表示されれば成功です。

f:id:lizy:20170510005704p:plain

より良いキー割り当て変更方法

私は設定ファイルを直接変更してしまいましたが、これはあまり筋の良い方法ではないようで、割当を変更したい情報だけを記述したファイルを新たに作成して、それを読み込ませるほうがより望ましいようです。

そのような方法を説明したページもいくつか見つかりました。

ただ私の環境ではこの方法ではうまく行かなかったので、直接書き換えることにしました。

2. Sublime Textのキーバインド変更

Sublime Text側で変換・無変換・半角/全角キーを押した時のキーを拾えればあとは簡単で、それらに日本語入力のオンオフ、またはトグルを割り当てるだけです。

[Preferences]-[Key Bindings]に設定を追加します。

[
    {"keys": ["f13"], "command": "activate_mozc"},
    {"keys": ["f14"], "command": "deactivate_mozc"}
]

CentOS 7用のrpmを作ってibus-mozcをインストールしてみる

CentOS 7でSublime Textを使おうとして調べたところ、以下の記事が見つかりました。

基本的にここに書いてある手順で問題ないとは思いますが、Fedora 19のrpmパッケージを使うという所が少し気になったので、CentOS 7用にビルドし直してインストールできないか試してみました。

準備

rpmをビルドするには、コンパイラなどのツールに加えてrpm-buildパッケージに含まれるツールが必要になります。またrpmビルド時にはうっかりシステムへ影響を与えるのを避けるためroot以外のユーザでの作業が推奨されています。

個人的な作業環境にrpmビルド環境を用意しても良かったのですが、dockerを使ってrpmビルド用のイメージを作成しました。

このイメージは以下のような内容になっていて、起動すればシステムに影響を与えることなくrpmをビルドできるようにしてあります。

  • CentOS 7ベース
  • Development Toolsグループのインストール
  • rpm-buildパッケージのインストール
  • rpmビルド作業用ユーザ(mockbuild)の追加

rpmのビルド

コンテナ起動

ホスト側ではdockerを使ってrpmビルド用コンテナを起動します。この時rpmビルド先ディレクトリをホスト側ディレクトリにマウントしておくことによって、コンテナからrpmファイルを取り出す手間を省いておきます。

[host]$ mkdir -p ~/work/RPMS/
[host]$ docker pull tnanba/rpmbuild
[host]$ docker run --rm -ti -v ~/work/RPMS:/home/mockbuild/rpmbuild/RPMS tnanba/rpmbuild /bin/bash

rpmビルドに必要なパッケージインストール

ビルドするのは「クロの思考ノート」さんの記事でも使用されているibus-mozc-1.10.1390.102-1.fc19.x86_64.rpmを使用しました。これより新しいものもありましたが、CentOS 7のパッケージとして用意されているibus-develより新しいバージョンに依存していてうまくいかなかったためこのバージョンにしました。

対応するsrpmを取ってきて、まずは何も考えずにビルドしてみます。

[container]$ curl -O ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/19/Everything/source/SRPMS/m/mozc-1.10.1390.102-1.fc19.src.rpm
[container]$ rpmbuild --rebuild mozc-1.10.1390.102-1.fc19.src.rpm

error: Failed build dependencies:
    openssl-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    zlib-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    libxcb-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    protobuf-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    glib2-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    qt-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    zinnia-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    gtk2-devel is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    gyp >= 0.1-0.4.840svn is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    ibus-devel >= 1.4.1 is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    emacs is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    xemacs is needed by mozc-1.10.1390.102-1.el7.centos.x86_64
    xemacs-packages-extra is needed by mozc-1.10.1390.102-1.el7.centos.x86_64

ビルドに必要となるパッケージが不足しているため、これらを解決する必要があります。幸いにもこれらは全てパッケージとして提供されているので、yumでインストールします。

[container]$ sudo yum -y install openssl-devel zlib-devel libxcb-devel \
  protobuf-devel glib2-devel qt-devel zinnia-devel gtk2-devel gyp \
  ibus-devel emacs xemacs xemacs-packages-extra

この状態で再度rpmbuild --rebuildを実行すればrpmのできあがり……なのですが、できあがったrpmの依存関係がCentOS 7のパッケージと整合しないため問題が発生します。

試しにできあがったrpmをホスト側でインストールしようとすると、以下のような依存関係のエラーが発生します。

[host]$ sudo rpm -ivh ~/work/RPMS/x86_64/mozc-1.10.1390.102-1.el7.centos.x86_64.rpm
エラー: 依存性の欠如:
    libprotobuf.so.8()(64bit) は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています
    libzinnia.so.0()(64bit) は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています
    zinnia-tomoe は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています

protobufzinniaはパッケージとして提供されているのでyumでインストールすれば解決するのですが、zinnia-tomoeはパッケージとして提供されていないため依存関係を解決できません。

しかしながらパッケージを検索すると、関連のありそうなものがありました。

[host]$ sudo yum search zinnia-tomoe
zinnia-tomoe-ja.x86_64 : Japanese tomoe model file for zinnia
zinnia-tomoe-zh_CN.x86_64 : Simplified Chinese tomoe model file for zinnia

どうやらzinnia-tomoeパッケージはzinnia-tomoe-jazinnia-tomoe-zh_CNに分割されたようなので、rpmの依存関係も修正しておきます。

specファイルの修正

ここで再びコンテナ側に戻って、specファイルを修正した上でrpmを作成することにします。specファイルを修正するため、srpmをインストールします。これによってsrpmに含まれているファイルが展開されて修正できるようになります。

[container]$ $ rpm -ivh mozc-1.10.1390.102-1.fc19.src.rpm

~/rpmbuild/SPEC/mozc.specというファイルが展開されるので、ここに含まれている依存関係の記述をCentOS 7のパッケージに合わせて修正します。

[container]$ cd ~/rpmbuild/SPECS/
[container]$ vi mozc.spec
Requires:       zinnia-tomoe       <-- 削除
Requires:       zinnia-tomoe-ja    <-- 追加
Requires:       zinnia-tomoe-zh_CN <-- 追加

zinnia-tomoeを取り除いてzinnia-tomoe-jazinnia-tomoe-zh_CNの記述を加えておきます。後はこの修正したspecファイルを使ってrpmをビルドすれば完了です。できあがったrpmファイルはホスト側の~/work/RPMS配下に出力されます。

[container]$ cd ~/rpmbuild/SPECS/
[container]$ rpmbuild -ba mozc.spec

rpmインストール

できあがったrpmファイルをホスト側でインストールします。

[host]$ sudo rpm -ivh ~/work/RPMS/x86_64/mozc-1.10.1390.102-1.el7.centos.x86_64.rpm

エラー: 依存性の欠如:
    libprotobuf.so.8()(64bit) は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています
    libzinnia.so.0()(64bit) は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています
    zinnia-tomoe-ja は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています
    zinnia-tomoe-zh_CN は mozc-1.10.1390.102-1.el7.centos.x86_64 に必要とされています

依存関係が修正されているので、yumで追加してやれば解決します。

[host]$ sudo yum -y install protobuf zinnia zinnia-tomoe-ja zinnia-tomoe-zh_CN
[host]$ sudo rpm -ivh ~/work/RPMS/x86_64/mozc-1.10.1390.102-1.el7.centos.x86_64.rpm
[host]$ sudo rpm -ivh ~/work/RPMS/x86_64/ibus-mozc-1.10.1390.102-1.el7.centos.x86_64.rpm

後は再ログインすれば設定画面に「日本語(Mozc)」が出てくるようになるはずです。

なおemacs-common-mozcとemac-mozcも同時にビルドされるので、必要に応じてこれらもインストールしておきます。

結局の所、Fedoraのパッケージを直接インストールした場合と変わりないとは思いますが……

Cygwinの自動インストール

Cygwinのインストール(特にパッケージの追加)は、いちいちGUIのインストーラを起動する必要があるところが難点でした。それを解消する方法として、以前の記事ではapt-cygを導入しました。

しかしながらCygwinのインストーラを引数指定で起動することによって、Cygwin本体のインストールやパッケージの追加が全て手作業の介入なしで出来ることが分かりました。

コマンドラインからのCygwinインストーラ起動方法

指定可能な引数はCygwinのFAQに書いてあります。

Cygwinのインストーラ(setup-x86.exe)をダウンロードして、コマンドプロンプトを開いてインストーラのあるフォルダを開きます。後は以下のコマンドを実行するだけで追加パッケージなしのCygwin本体だけをインストールできます。

$ setup-x86.exe ^
   --root c:\cygwin ^
   --site http://ftp.iij.ad.jp/pub/cygwin/ ^
   --local-package-dir %CD% ^
   --quiet-mode

この場合、Cygwinインストーラは以下の設定で動作します:

  • インストール先はc:\cygwinとする(--root c:\cygwin)
  • http://ftp.iij.ad.jp/pub/cygwin/ からダウンロードする(--site http://ftp.iij.ad.jp/pub/cygwin/)
  • ダウンロードしたファイルは現在のフォルダにキャッシュする(--local-package-dir %CD%)
  • 自動モードでインストールする(--quiet-mode)

ダウンロード元として指定するミラーサイトは、以下のページから適当に日本のサイトを選んでおくのが良いです。

パッケージの追加

一旦Cygwinをインストールしてしまえば、インストール先等の情報を再度指定する必要はなくなります(レジストリに設定される?)

後は追加したいパッケージ名を指定してインストーラを起動するだけで全自動でインストールされるので、apt-cygをセットアップするより簡単かもしれません。

$ setup-x86.exe --packages ruby,git --quiet-mode

自動インストールさせるためには--quiet-modeは必ず指定する必要があります。

まとめてインストール

Cygwin本体と追加パッケージのインストールはまとめて実行できます。

以前の記事ではapt-cygをインストールしてからRubyのビルドに必要なパッケージをインストールする手順でしたが、以下のコマンドを実行すればCygwinのインストールから追加パッケージまで全て自動でインストールできます。

$ setup-x86.exe ^
   --root c:\cygwin ^
   --local-package-dir %CD% ^
   --site http://ftp.iij.ad.jp/pub/cygwin/ ^
   --quiet-mode ^
   --packages gcc,git,make,patch,libncurses-devel,openssl-devel,readline,libsqlite3-devel,libxml2-devel,libxslt-devel,wget

WindowsにCygwin+Ruby(rbenv)を入れてveeweeを使うための準備をする

最近流行のVagrant+ChefをWindowsでも試してみたいと思います。Vagrantは1.1からインストーラを使うようになったのでこれはそのまま入れます。

次にChefの動作環境を用意する前に、Vagrantで使うためのboxを作成するveeweeをインストールします。公開されているboxもいくつかありますが、それを使うのは若干不安があるのと、使わないもの(ruby+puppet+chef)を除いたboxを作るためです。

まずはveeweeを動かすためのベースとなるRubyをrbenvでインストールします。

Cygwinのインストール

WindowsでRubyを使う方法はいくつかありますが、Cygwinを入れて自前でビルドする方法にしました。恐らくかなり面倒くさい方法ですが、後々VagrantやChefを使う際にCygwinsshrsyncが使えるので便利です。

Cygwin+Ruby(rbenv)のインストールについては、このページが非常にわかりやすいのでこれをベースに進めるのが良いと思います。

Cygwin本体のインストール

上記ページに従ってsetup.exeをダウンロードして実行します。この時インストールするパッケージを選択することになるのですが、ここでは以下の2つのパッケージをインストールします。これは後でapt-cygを使う際に必要となる最低限のパッケージになります。

apt-cygのインストール

Cygwinにパッケージを追加する場合、毎回setup.exeを起動してダイアログからパッケージ選択することになり非常に面倒です。そこでapt-cygをインストールすることによって、yumやaptのようにコマンドラインからパッケージを追加できるようになります。

インストールはページに書いてある手順通りに行います。

$ svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/
$ chmod +x /bin/apt-cyg

これでコマンドラインからパッケージがインストールできるようになります。

$ apt-cyg install vim

Rubyのインストール

Rubyはコンパイル済みのものを使わずに、Cygwinでコンパイルしたものを使います。Cygwin環境へのRubyインストールはいろいろ罠がありました。

コンパイラのインストール

コンパイラgccパッケージをインストールすれば使えると思ったのですが、これだけではgccコマンドが使えませんでした。gcc4パッケージを追加することによって使えるようになりました。

$ apt-cyg install gcc gcc4

しかしこの状態ではgccコマンドが正常に動きませんでした。試しに適当なソースファイルをコンパイルしようとしたところエラーが出ました。

$ echo "int main() {return 0;}" >> test.c
$ gcc test.c
/usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe: error while loading shared libraries: cygmpfr-4.dll: cannot open shared object file: No such file or directory

調べたところ、"libmpfr4"パッケージを追加すれば良いと言うことが分かりました。

$ apt-cyg install libmpfr4

これでようやくgccが動作するようになりました。

ライブラリ・ツールのインストール

Rubyをビルドするために、このページに書いてあるライブラリとツールをインストールします。微妙にパッケージ名が違うものがあったので調整しました。

$ apt-cyg install git \
  make \
  patch \
  libncurses-devel \
  openssl-devel \
  readline \
  libsqlite3-devel \
  libxml2-devel \
  libxslt-devel

rbenvのインストール

rbenvは手順通りにインストールを行います。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

ruby-buildのインストール

rbenvに対してビルド・インストール機能を追加するためのruby-buildプラグインをインストールします。これもページに書いてある手順通りに行います。

$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rucby-build

Rubyのインストール

後はruby-buildの機能を使ってRubyをビルド・インストールします。

$ rbenv install --list
    :
    :
  1.9.3-p374
  1.9.3-p385
  1.9.3-p392
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
    :
    :

1.9.3-p392を入れることにします。Cygwinでビルドするとかなり遅いので気長に待ちます。

$ rbenv install 1.9.3-p392
$ rbenv rehash
$ rbenv global 1.9.3-p392
$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [i386-cygwin]

まずはRubyのインストールまで完了しました。次はここにveeweeを追加します。

Windows + pik環境へのvagrantインストール

pikがインストールできたので次はvagrantをインストールします。VirtualBoxはあらかじめインストールしてあるものとします。

$ pik use 1.9.2
$ gem install vagrant
ERROR:  Error installing vagrant:
        The 'json' native gem requires installed build tools.

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

jsonのgemをビルドするのに必要なツールがないためうまくいきませんでした。エラーメッセージに書いてあるDevKitをインストールします。

pikの機能によるdevkitのインストール

pikはdevkitをインストールする機能を持っているらしいので、それを使うことにします。

$ pik help package

Usage: pik package [options]

Downloads and installs packages.

  sqlite: 'pik package sqlite install'
  7zip:   'pik package 7zip install'
  devkit: 'pik package devkit install' # Installed to mingw versions only.

しかしながら実行してもエラーでインストールできませんでした。

$ pik package devkit install
INFO: Downloading:  http://cdn.rubyinstaller.org/archives/devkits/DevKit-tdm-32-4.5.1-20101231-1457.7z
      to:  C:\dev\pik\downloads\DevKit-tdm-32-4.5.1-20101231-1457.7z


There was an error.
 Error: Failed to download http://cdn.rubyinstaller.org/archives/devkits/DevKit-tdm-32-4.5.1-20101231-1457.7z: Forbidden

手動でのdevkitインストール

pikの機能が使えないので、手動でdevkitをインストールします。ダウンロードページからdevkitのファイルをダウンロードします。

ダウンロードファイルを見て気がついたのですが、pikはdevkitの4.5.1をダウンロードしようとしていたのに対して、現在は4.5.2にバージョンアップしたためダウンロードするファイルがなくてエラーになっているようでした。

ダウンロードしたファイルは自己解凍ファイルなので、これを C:\dev\devkit に展開しておきます。あとは手順に従ってインストールします。

まずはスクリプトを実行してconfig.ymlを生成します。

$ cd C:\dev\devkit
$ ruby dk.rb init
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

これで C:\dev\devkit\config.yml が生成されるのですが、pikで使用しているrubyのパスがうまく追加されないようなので手動で追加しておきます(最後の行)

# This configuration file contains the absolute path locations of all
# installed Rubies to be enhanced to work with the DevKit. This config
# file is generated by the 'ruby dk.rb init' step and may be modified
# before running the 'ruby dk.rb install' step. To include any installed
# Rubies that were not automagically discovered, simply add a line below
# the triple hyphens with the absolute path to the Ruby root directory.
#
# Example:
#
# ---
# - C:/ruby19trunk
# - C:/ruby192dev
#
---
- C:/dev/pik/rubies/ruby-1.9.2-p136

あとはインストールすれば完了です。

$ ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/dev/pik/rubies/ruby-1.9.2-p136'
[INFO] Installing 'C:/dev/pik/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/devkit.rb'

念のためdevkitページに書いてあるテストを実行しておきます。

$ gem install rdiscount --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed rdiscount-1.6.8
1 gem installed
Installing ri documentation for rdiscount-1.6.8...
Installing RDoc documentation for rdiscount-1.6.8...

$ ruby -rubygems -e "require 'rdiscount'; puts RDiscount.new('**Hello RubyInstaller**').to_html"
<p><strong>Hello RubyInstaller</strong></p>

特にエラーも出ず正常に動作しているようでした。

vagrantのインストール

devkitさえ設定してしまえば、vagrantはすんなりインストールできました。

$ gem install vagrant
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed json-1.5.4
Successfully installed log4r-1.1.10
Successfully installed net-ssh-2.2.2
Successfully installed net-scp-1.0.4
Successfully installed vagrant-1.0.5
5 gems installed
Installing ri documentation for json-1.5.4...
Installing ri documentation for log4r-1.1.10...
Installing ri documentation for net-ssh-2.2.2...
Installing ri documentation for net-scp-1.0.4...
Installing ri documentation for vagrant-1.0.5...
Installing RDoc documentation for json-1.5.4...
Installing RDoc documentation for log4r-1.1.10...
Installing RDoc documentation for net-ssh-2.2.2...
Installing RDoc documentation for net-scp-1.0.4...
Installing RDoc documentation for vagrant-1.0.5...

vagrant動作確認

念のためvagrantも動作を確認しておきます。確認内容はGetting Startedページに書いてあるものを使います。

提供されているBoxを取り込んでそれを起動します。

$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
$ vagrant init lucid32
$ vagrant up

起動した仮想マシンにログインできれば確認完了ですが、Windowsというかputtyを使う場合は秘密鍵を変換しておく必要があります。鍵を変換する方法はvagrantのSSHページに書いてあるとおり、puttygenでinsecure_private_keyからppkを作ればOKです。

PuTTY may not recognize the insecure_private_key provided by vagrant as a valid private key. To remedy this, first grab the PuTTYgen app. Then use PuTTYgen and import the insecure_private_key (found in the .vagrant.d dir in your home directory) and save a ppk file from that private key. Use the ppk file instead of the default one when SSHing into your vagrant box.

http://docs.vagrantup.com/v1/docs/getting-started/ssh.html

あとはlocalhostのポート2222に対してユーザvagrantとputtygenで生成した秘密鍵でログインできることが確認できました。

確認が完了したので仮想マシンは破棄しておきます。

$ vagrant destroy

pik-0.3.0のインストール

いつの間にかpikのバージョンが上がっていたので旧バージョンをアンインストールして、最新版に入れ直しました。

pikのインストール

ダウンロードページからインストーラ pik-0.3.0.pre.msi をダウンロードしてインストールします。インストール先は C:\dev\pik に変えておきました。PATH環境変数はインストーラが自動で設定するので手動での設定は必要ありませんでした。

rubyのインストール

次にpikを使ってrubyのインストールを行います。vagrant/veewee用にrubyをインストールするのですが、必要なバージョンが特に書いてなかったので、pikでインストール可能な最新版を入れることにします。

$ pik list known
# MRI Ruby
[ruby-]1.8.7-p302
[ruby-]1.8.7[-p330]
[ruby-]1.9.1[-p430]
[ruby-]1.9.2-p0
[ruby-]1.9.2[-p136]

# IronRuby
ironruby-1.0.0
ironruby-1.1.0
ironruby[-1.1.1]

# JRuby
jruby[-1.5.6]
jruby-1.6.0.RC1

1.9.2が最新のようなのでこれをインストールします。

$ pik install ruby-1.9.2
ERROR: You need the 7zip utility to extract this file.
       Run 'pik package 7zip install'

7zipがないためにエラーになりました。エラーメッセージの指示通りに7zipパッケージを入れてから再度試したところ成功しました。

$ pik package 7zip install
$ pik install ruby-1.9.2

しかしいざインストールしたrubyを実行しようとしても動きませんでした。

$ pik use 1.9.2
$ ruby -v

If you install pik using the msi you must set the ‘HOME’ or ‘PIK_HOME’ environment variable to the directory pik installs to, ususally the path specified in %USERPROFILE%.

vertiginous/pik · GitHub

PIK_HOME環境変数の設定が必要とのことだったので、これを C:\dev\pik に設定して再度rubyをインストールしたところ動作するようになりました。

WindowsへのRuby環境構築

VagrantにCentOSのboxを作成したいけれども、一からやるよりはveeweeというのを使った方がよさそう?

でもvagrant/veeweeともrubyなので、まずはWindowsにrubyの環境を構築する。

RVM on Windows

Windows環境へのインストール方法の記述がない。と思ったらFAQに記述があった。

Does RVM work on windows? Will it in the future?

NO. If you would like to manage multiple versions of ruby on windows please use pik which is an excellent tool by Gordon Thiesfeld. You can find it on GitHub.

RVM: Ruby Version Manager - RVM Frequently Asked Questions

WindowsではRVMは動かないらしいので、pikを調べてみる。

pik on Windows

ダウンロードページからpik-0.2.8.msiを入手してインストールする。ディレクトリはc:\dev\pikに変更。