Portable CygwinをUSBに入れて持ち運ぶ

USBにLinuxをインストールするとまではいかないが
UNIX環境欲しいよ、という要望には応える程度の能力を有する。


実は、俺が使いこなせないだけという・・・。

インストール

基本的には以下を参考に。

http://www.dam.brown.edu/people/sezer/software/cygwin/

俺の場合、ディスク上のサイズで約500MB程度占有した。
とりあえず1GBのUSBメモリにインストールした。

  • Cygwin公式サイトからsetupをダウンロードする。
    • 『Install from Internet』を選択
    • Root DirectoryにUSBのドライブを選択する。解説では『E:\』として説明されている。違う場合は以下読み替える必要がある。
    • あとは好みで進める。パッケージのダウンロードは日本ドメイン選んでもそれなりに時間かかることに注意!
  • インストールが成功したら、"E:\cygwin\home"を作成。また、home下にusernameディレクトリも作成。もちろんusernameは好みで。
  • profileをダウンロードし、『E:\cygwin\etc』に入れる。エディタでprofileを開き、2か所のusernameを自分のものに書き換える。
  • X.tabをダウンロードし、『E:\』に入れ、X.batに拡張子を変える。
  • uninstall.tabをダウンロードし、『E:\』に入れ、uninstall.batに拡張子を変える。


Portable cygwinの起動は『X.bat』、終了は『uninstall.bat』から実行する。

設定

ここまでしか書かれていないが、実際にはいくつかいじらないと快適にはならない。

日本語の設定

合併のお知らせ|OKIソフトウェアを参考にしました。多謝。
上記サイトのダウンロードページから、『cygwin1-dll-**-**-**.tar.bz2』をダウンロードし解凍。
現地点では『cygwin1-dll-20-06-20.tar.bz2』でした。
インストール方法を参考にCygwinを終了させてから、『E:\cygwin\bin』にあるものを置き換える(上書き)。


あとはシェルの設定ファイルで、

export LANG=ja_JP.UTF-8
X.batの設定

あとは、一部X.batを書き換える。
全体でこんな感じにしてみました。

set home=%CD%cygwin\home\mochlite
set path=%path%cygwin\home;%CD%cygwin\bin;%CD%cygwin\usr\X11R6\bin
cygwin\bin\mount -m | cygwin\bin\sed s/mount/"%CD%\/cygwin\\/bin\\/mount"/ > cygwin\tmp\mount.log
cygwin\bin\umount -c
cygwin\bin\umount -A
cygwin\bin\mount -bfu %CD%cygwin/ /
cygwin\bin\mount -bfu %CD%cygwin\bin /usr/bin
cygwin\bin\mount -bfu %CD%cygwin\lib /usr/lib
cygwin\bin\mount -bfu %CD%cygwin\home\mochlite /home/mochlite

start zsh --login -i

(zshcygwinで追加インストールした)shellは好みで。rxvtは入ってませんでした。
Xウィンドウでの起動は必要ないのでカット。
まぁ、pathの方も最後のX関連はなくしてもいいかもしれない。
そして、先頭のが結構ハマった。


実は、CygwinWindows環境変数HOMEが設定されている場合、そこをCygwin上でのホームディレクトリにする。
つまり最初の設定では、Portable CygwinをUSBに入れて持ち運んだ先で環境変数HOMEが設定されている場合、
そこをCygwinのホームにし、各種設定ファイル(.bash_profile, .inputrc等)をPCに書き込んでしまう。
下手すると大事なファイルもそっちに作成しただけで、USB側のhome/には何もないっ!なんてことにも成りかねない。
これを回避するために、

set home=%CD%cygwin\home\mochlite

としてやることでUSB側のhome/mochliteがCygwin上のホームになる(mochliteはユーザー名です)。
%CD%はカレントディレクトリを示す。

ちなみにhome/username 作ったけれど、結局コレ使うのって自分だけだろうしということで、usernameディレクトリは削除して、home/に設定ファイルを直接置くようにしました。username以下に置いてある場合はusernameに設定する必要があります。

追記:
やっぱりユーザー名はあったほうがよさそうなので残しておくことにしました。
伴って、上の記述は修正されています。

また、Cygwinのコマンド等はこちらのページが詳しい。(u)mountのオプションが気になって辿り着きました。
UNIXコマンドと違うんだね。一緒だと思ってた・・・。


3.7. Cygwin ユーティリティ


と、そんなこんなで。


以上で日本語入力可でzshな環境の出来上がり!これが携帯できるなんてっ!!
というか、主にperl, ruby, pythonをシェルと一緒に持ち運べるのは便利な気がする。
この便利さは素人な俺でもいくらか感じられるし、コマンドプロンプトで『ls』と打ってしまう人にはお勧めです。


あとよくわからないのは、次の画像のような挙動。(ダブル)クォートすると文字が変になる。
(set home―に気づいてないときに撮ったものです><)

echo 'これはひどいw'

と打ったのだけれど・・・
見ての通り、日本語入力、出力はおk。ちなみに日本語切替えは『Alt』+『半角/全角』。戻すのは『半角/全角』のみでおk。


(参考ページにも書かれているが)homeがUSB側だとコマンドが結果返すまでにタイムラグが発生することがたまにある。
C:/がホームになってたときは速かったのになーw

追記:
次エントリにて、設定等追加してます。
Portable Cygwin環境設定 続き - Haitena だいありー