それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

「コマンドプロンプトからCygwinへ」の記事への補足

昨日のエントリが、被はてブ1000件達成しました。ありがとうございます。これだけの注目をあびることに恐怖すら覚えました。ブクマコメントや直接コメントを頂いたので幾つか補足説明をさせてください。


Cygwin環境の話がすごくブクマコメントいただいたので補足させてください。

やっぱり昔のCygwinイメージは強い。

昔のイメージって強烈なんだなと思いました。1.5以前のイメージとは違うんだよ。って最初に書いたんだけど、脱却は難しい感じでした。
1.7変更点やCygwinの細かいの話は id:fd0さんのエントリを参考にして欲しい。

コメントへのレス。

補足させてください。昨日のエントリでも間違ってるところもあるので、補足しながら訂正させてください。すいません。

以下の事について、レスしていきます。よろしくお願いします。

ブクマコメントの反響

  • ドライブ指定がキモい
  • Mingwでもいいよね。
  • Macつかえば?Mac大流行とかまじ?
  • PowerShellあるだろ?Windows管理ならPSだ
  • コンパイルしちゃいけない。。
  • WindowsはGUI用と割りきったほうが楽!

↑そんなことないから!!

補足

  • CygwiはC:\にインストールしないのが無難
  • 開発環境を作る話じゃないってことが大事。
  • Windows+CygwinSSHのための端末。
  • /etc/hosts
  • 記述ミスの訂正
  • マサちゃん

最後に

ドライブ指定がキモい


手元のMacBookAirからCygwinSSHログインしてキャプチャしました。

cd E:/"ドライブ指定はほぼそのまま使える。

takuya@letsnote:~$ cd e:/
takuya@letsnote:~$ pwd  
/cygdrive/e/

"cd e:/" でいいんです。

Cygwinのパス変換は賢い。

パスの違い気にならなくなるよ、とにかく僕と契約してCygwin使いになってよ。

Mingwでもいいよね。

はい。Mingwいいと思う。Mingwはいい選択肢。

    というかMinttyがMinGwで動くとか知らなかった。ごめん

CygwinよりはWindowsに近い環境になる。UNIXっぽいほうがいいならCygwin、WindowsっぽいほうがいいならMingwだと思う。
GNUwin32は昔試したけど、 文字化けしたので使ってない→http://d.hatena.ne.jp/takuya_1st/20100823/1282585424

あのときlsが文字化けしてなかったらこのエントリは存在しなかった。

Macつかえば?Mac大流行とかまじ?

MacはGNUコマンド入ってねーよ!あれはBSD系コマンド!いっしょにすんな

ライセンスの関係でMacはBSDコマンドですよね。Readlineではまります。homebrew でGNUコマンド入れなくちゃなんねぇ。それはそのうち書きます。こないだのKOFやOSC行くたびにMac人口増えてます。ここ10年のMac界で考えればMacは流行ってる。

PowerShellあるだろ?Windows管理ならPSだ

すいません。GNUのコマンドの話なんで勘弁。Powershellな人も、Cygwin試してみてください。


PowerShellでもMintty使えたらいいのにね。ShebangとMinttyが使えたら、PowerShellもいい選択肢ね。候補にしたい。


WinコマンドとGNUコマンドの融合出来るよ

ipconfig | grep 192

貴女のPowerShell環境に、僕らのGNUのパワーを融合させてくだしあ。

コンパイルしちゃいけない。やっぱり。。

ビルド環境がアレなんじゃなくて、ConfigureとかForkが恐ろしく遅い・・・

コンパイルするならLinuxのVMマシンを使ったほうが断然速いから!!

nkfみたいに、Cygwinで使うツールのビルドに使える。
C言語のコンパイルを含む開発には向かないかもしれません。RubyのGemとかビルド地獄だよ。

WindowsはGUI用と割りきったほうが楽!

そんなことない!

CUI充実させたら、もっと最強だよ。

補足とか

割愛したので、ちょっと混乱させてしまったかもしれない。そんな部分について

CygwiはC:\にインストールしないのが無難


理由:めんどうだから。

最近はC:\Users\Takuya\AppData\XXX以下に入れれてエクスプローラーからは隠してる。必要なときは "cygstart /“を実行するとエクスプローラーで開くから存在すら忘れる。WindowsXPならともかく、Vista/7はC:\がWindowsのUAC制御下だから、色々面倒。辞めたほうがいいと思います。というかまだXPの。。。

開発環境じゃなく、Linuxへのアクセス環境

「CygwinはWindowsにLinuxのコマンド群を移植したものです。」に違和感

伝わりきらなくて誤解を招いた。後悔してる。

開発環境をつくるんじゃない。開発環境にアクセスしたり、強化コマンド群を作って入れてた。そのうちに、Vimでコーディングに使えることに気づいた。これを一行で書かずにもっと強調するべきだった。ごめんなさい。

Windowsはまだ捨てない。

Windows捨てろよ。とかLinux使えとか。いろいろな宗旨の方がいらっしゃる。

GUIはまだまだWindowsが便利。LinuxのデスクトップマネージャよりはWinが使い慣れてるし、やっぱ便利だと思う。これかくと宗教戦争でCygwinの便利さの主張がかすむので・・・触れてない。ごめんなさい。開発環境とVMの話は最後に書きます。

Windows+CygwinSSHのための端末。

SSHが快適にできる、ここにCygwinを導入する価値があります。

SSHCygwin使ってるうちに、Grepとか使い始めて、最後には、Cygwinで何でも済ませるようになる。中毒性高いから是非使って欲しい。


puttyPoderosaではできないことがある。ポートフォワーディング

それは

SSHコマンドでポートフォワーディングが出来る。


つまり、VmWareMYSQLをいれたりしなくていい。ポートフォワーディングでGUIツールを使い込め。これは主張したい

MySQLのGUI/CUI  (localhost:5432) ---- cygwin ssh ----- (192.168.2.10:5321) 開発サーバーのMySQL

こうしておけば、なんでもかんでもVM作らなくていいですよ。MySQLの接続先変えたいときに、GUICUIの設定変えなくてもポートフォワーディングで切り分けできるし、設定は.ssh/confing に集約されるのでオススメ

接続切れても、SSHだけの再起動で完了。

ポートフォワーディング専用コマンドやツールを入れなくていい。しかも設定を、.ssh/config やシェルスクリプトに残してすぐ起動できる。
断然に楽です。

puttyPoderosaではできないことがある。秘密鍵

秘密鍵が変換しなくても使える。


/etc/hostsのWindowリンク

Cygwinの/etc/hosts はWindowsのHOSTSへのリンクになっています。

takuya@letsnote:~$ ls -alt /etc/hosts
lrwxrwxrwx 1 takuya None 46 7月  29 09:45 /etc/hosts -> /cygdrive/c/Windows/System32/drivers/etc/hosts

このようにWindowとの親和性がいい感じです。

ほかにも

takuya@letsnote:~$ open  $SYSTEMROOT
takuya@letsnote:~$ open  $USERPROFILE

など環境変数も使えたりします。こういう親和性が嬉しいんです。VmでなくWinで動くからこそ出来ることもある。

そのくせShebangがつかえたり

#!/usr/bin/env ruby

関連付けはWindowsのままで、実行時だけはCygwinでやればとても楽です。

記述ミスの訂正

って書いてあったんだけどそんなコマンドねえよって怒られたんで、echo コマンドを加えた。

Windows XP に Cygwin をインストールする - 集中力なら売り切れたよ

ごめんなさい。訂正しました。

mklink コマンド使ったほうがいいって書いてあるが、XP にはそのコマンドねぇから!おめーの席ねぇから!

Windows XP に Cygwin をインストールする - 集中力なら売り切れたよ

ごめんなさい。もう死ぬほどお詫びします。XPなんてVISTA登場と同時に捨てたので知りませんでした。Cygwinなれてきたらfstabでマウントしてください。すいません!!

マサちゃん

どこみてんのよ!
むしろOperaOperaに突っ込んでほしい。

最後に、VM厨にCygwin良さを主張してみる。

以下は、炎上しそう。。。むかついたら燃やしちゃってください。

仮想マシンLinux使えばいいんじゃん?そうかなぁ

開発環境は好きにしたらいいと思う。

そもそもCygwinは「完全仮想環境」ではない。VirtualPCVmWareVirtualBoxとの比較はナンセンスかな。比較するならWineやOpenVZのほうが近い気がする。どうだろうか。

ポイントはCygwinで開発環境へ簡単アクセス環境が良くなるって話です。

私も「まとも」な開発環境はグローバルIPLinuxにおいてあります。

  • そこにどうやってファイルを転送するのか。
  • そこへ軽快にアクセスするにはどうするのか。

そこでCygwinSSHです。

CygwinSSHで開発環境へ軽快アクセス。

.ssh/config が使えるのMintty+SSHがとても便利だと思います。

WindowsでEmEditorを使いたい。.vimrcをサーバー側に置きたくはないです。

  • シンタックスチェックくらいはWindows側でやりたい。
  • ちょっとしたシェルスクリプトはWindowsで使いたい。

設定ファイルがVMのなかとか不便。

ドットファイルのマスタ(windowsのbashrc/vimrc)からコピー(Linux)という構成を作ると便利なのです。
これをするとやたら捗る。

Puttyに対する愚痴

  • そもそもPuttyの開発止まってるじゃん!(つい最近復活して最新版リリースされたけど)
  • Puttyだとだめなんだ。秘密鍵がね。sshの細かい設定ができない。Putty
  • 半透明Puttyはバギーで使えない。
  • PoderosaもRSA鍵でハマる。さらに頻繁に表示が崩れる。(たしか等幅フォント扱いがおかしいバグ)
  • Puttyの設定バックアップどうするの?
  • Putty設定のめんどくささはなんとかならないの?

VMつかえLinux使えの人々へ

「端末とGNUコマンド」のはなしであって「開発環境の比較」ではないのでなのであまり煽らないでください。。

VmWareがオススメらしいけど、ぼくは全くそう思わない。3年前は確かに使ってた。でもノートパソコンではVMは邪魔な存在になった。

結局グローバルIPかりて、そこにサーバーをおいてあります
そこへのアクセスにPuttyを使うか、Cygwinで接続するかの話です。

VmWareで我慢できなったこと。

VMWareで開発とかありえない。
Sambaゴミ箱問題、TCP/IPすぐ切れる。
スリープから戻ってこない。
Linux側の余計な常駐プロセスが電源食うとか我慢出来ない。
  • 問題はVMとのローカル接続がTCP/IPだということ。
  • VMはノートパソコンと相性が悪いということ。
  • 起動が遅い。
  • coLinuxはハイバネートしない。

Cygwinはたしかに、DLL初回ロード時では起動が少し遅い。

でもWindowsの再起動後にVmWareを立ち上げるまでの待ち時間とどっちが速いだろうか

TCP/IPの問題で我慢できなったこと

Windowsがスリープすると、TCP/IPがタイムアウトする→Putty切れる。

  • つまりVMWareに再接続。
  • つまり、Putty再起動。
  • つまり、面倒くさい


レッツノート開いたら、Puttyの「切断されました!」ダイアログが10個くらいでてきて、困ってた。ダイアログがポポポポーン

これCygwinSSH+Minttyで解決したんだ。僕の場合は。

Sambaのゴミ箱問題。

Sambaだとゴミ箱が不便

  • VmWare+Sambaでプログラム書いてるとゴミ箱で困る。
  • 削除ファイルがゴミ箱にない!やっちゃった!困る。
  • 数GBのログファイルとかVmのHDDをすぐに圧迫して困る。

結局、「GNUコマンドがWindows側に欲しい。」となりました

Cygwinバックアップしても1.5GB

cygwinフォルダをcygwin.tgzにして持ち運んでも2GBでお釣り来る。
ちょっと使うだけなら、tgzを展開してmintty起動でおわる。

ちょっとしたコマンドのために、VmWareをインストして、10GBの仮想ディスクをつかうなんて信じられない。

仮想マシンユーザーはシンタックスチェックとかどうしてる?

もしかしてブラウザでPHP見て。「あっSyntax Errorだった?」とかまさかね・・・
Vm側、Windows側どちらでやるにしても、満足できなかった。

  • VM側に、Puttyで接続してコマンドチェックだと、上記のPuttyの問題で我慢出来ない。
  • Windows側のエディタでシンタックスチェックするなら、環境別に作るとcmd.exeで我慢できない。


ダブルバインドだよね。

そこでCygwinです。

Cygwinさえいれとけば、とりあえずシンタックスチェックや部分実行ができて便利。
そしてEmEditorの外部ツール連携でシンタックスチェック。これが最強。


VmWareで開発環境より、グローバルIP借りがオススメ。SakuraサーバーにSSHするなり、自宅にRsyncでミラーを持ってきたほうがいい。

id:naqtnさんのコメントの一言が僕の気持ちを代弁してくれてる。

ブコメに違和感。ポイントは何処行っても(Mac、Linux、Windows)使い慣れたものが同じように使える、ってとこだと思うんだ

感謝です!そういうことです!


というわけで、そのときの端末+αとしてCygwinオススメです。