WindowsでLinuxライクな生活

# こんな人向け

* 開発ではLinux使っているけど、自PCはWindowsだよ。
* メインはMacだけど、たまにWindows使うよ。

設定後のイメージはこんな感じ

![キャプチャ.JPG](https://qiita-image-store.s3.amazonaws.com/0/38647/a5c94285-62ff-975e-7157-893124f390e7.jpeg)

# 環境

ないです。まっさらな状態から作り上げます。
Windows7 32bit でやってます。

# Chocolatey

```xml:~/packages.config
<?xml version="1.0"?>
<packages>
    <package id="ConEmu" />
    <package id="wizmouse" />
    <package id="launchy" />
    <package id="GoogleChrome" />
    <package id="Firefox" />
    <package id="dropbox" />
    <package id="Everything" />
    <package id="winmerge" />
    <package id="evernote" />
    <package id="cygwin" />
</packages>
```

私がインストールするのはこんなとこです。
これは以前[windowsの開発環境は一瞬で整うwith chocolatey](http://qiita.com/himinato/items/11f4dc9a23afebbc242c)こんな記事を書いているので参考にしてみてください。
このファイルをC:\Users\userなどcmd.exeが起動するとこに作成します。
`wizmouse`は非アクティブWindowをスクロールできるようにするソフト。
`launchy`はMacのspotlightみたいに使えるのでオススメ。

```bat
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
cinst packages.config
```

とっととインストールします。
プロキシがある場合cygwinのインストールに失敗しました。
手動でインストールしました。

# Cygwin

ダウンロード先のサーバは日本にするのが吉です。
追加で`Net/wget`はチェックを入れてインストールしましょう。
`Base/gawk`,`Archive/bzip2`,`Base/tar`この３つも必要ですが、デフォルトでインストールされるはずです。

# apt-cyg

`cygwin`でのパッケージ管理には`apt-cyg`を使います。
`cygwin`を起動することによって`shell`を動かせます。

```sh
wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg
mv apt-cyg  /usr/bin
chmod +x /usr/bin/apt-cyg
apt-cyg -m http://ftp.iij.ad.jp/pub/cygwin/ update
apt-cyg install ctags curl git gcc-g++ lua make openssl ruby python python3 w3m zsh patch zlib-devel openssl-devel libyaml-devel sqlite3 libtool autoconf automake bison m4 mingw64-i686-gcc mingw64-x86_64-gcc readline pkg-config pcre libpcre-devel lzma liblzma-devel vim mercurial
```

パッケージはお好みで増減させてください。
プロキシのせいで`wget`がうまくいかない人は環境変数に`http_proxy`を追加して、値にプロキシ(例:http://example.com:8080)を記載するといいかも。(未検証)

# mintty

`cygwin`は`mintty`というターミナルソフト上で走るので、こいつも設定していきます。

```sh:~/.minttyrc
BoldAsFont=no
Transparency=high
CursorType=block
Font=M+ 1m regular
FontHeight=10
Locale=ja_JP
Charset=UTF-8
Columns=191
Rows=54
Term=xterm
RightClickAction=paste
ClicksTargetApp=yes
BackgroundColour=0,0,0
```

GUIでも設定できるけど、私の設定はこんな感じ。
特に`Term`と`Charset`は上記の設定にした方がいいです。
デフォルトが16色設定なので256色にしています。
日本語のファイルがあるとこで`ls`とかするとわかりますが、`UTF-8`じゃないと文字化けします。

Fontは日本後も表示可能な`M+`というフォントを使っています。
使う方いましたら[M+ OUTLINE FONTS](http://mplus-fonts.sourceforge.jp/mplus-outline-fonts/index.html)からダウンロード可能です。

# zsh

`zsh`を使わない人は不要です。

```sh
vim /etc/passwd
```

などを使って編集します。

```sh:/etc/passwd
# C:\cygwin\home\user:/bin/bash こんな感じの行があるので下に書き換える
/cygdrive/c/Users/user:/bin/zsh
```

# git

多分git使ってたりしていたら下記のエラーでます。
child_info_fork::abort
みたいなやつ。
これはcygwinを落としてash.exe(cygwin/binにあります)にて

```sh
/bin/rebaseall
```

で解消するはずです。
これで失敗する場合はなんらかのcygwinのプロセスが残っていることが考えられます。
cygwinは落とした状態で`rebaseall`しましょう。
更に自身でビルドしたもの(私はrvmで発生しました)は上の方法では解決しません。
下記に示す、dll/soファイル一覧の作成し、一覧に対して`rebaseall`しましょう。

```sh
find ~/.rvm/rubies/ -iname "*.dll" -print > /filselist.txt
find ~/.rvm/rubies/ -iname "*.so" -print >> /filselist.txt
cygwinを落としてash.exeにて
/bin/rebaseall -v -T /filelist.txt
```

# まとめ
見た目、機能ともにそこそこ満足しています。
`ifconfig`や`dig`が使えなかったりしますが、まぁ我慢です。
ちなみに`cygwin`で`ruby`を使うのは茨の道です。