てめぇが使っておる MSYS たぁどこの MSYS ぢゃ、の今更のメモ

ワタシのサイトではとにかく何度も何度でも「MSYS」が登場するんだけれど、これについてちゃんと説明したことがないんだよね。

しかも問題は、こうして機会を作らないと、ワタシ自身がもう「どこの馬の骨「だったのか」」を作業し直しによっては復元できない。

なんでこんなヘンな言い回しになるかと言うと、ワタシは「まだ Windows 9x/ME の記憶さえも鮮明だった 2006年頃(おそらく最も新しくても2010年)」に手にした MSYS を、PC が死んだりしての乗り換え時も後生大事にコピーして使い続けてきた、つまりもう最低でも10年以上同じ MSYS を使い続けてきた、から。つまりは「拾った当時何をして手に入れたかは当然記憶しているが、当たり前だが「どのサイトから入手した」」だのといった、他人に説明できる情報は今や何一つ復元できない、ということ。

その間一度としてオリジナルの MSYS そのものについての情報更新をしてない。「このミニマルで満足」してたから、というとちょっと違う。割り切ってた、てことだわ。「UNIX そのものに比べると100億倍不愉快だが DOS に比べれば90京.003倍くらいはわずかに快適なのだから、やむをえず満足しとこう」ということだわな。最初の頃はまだワタシもかなり C/C++ プログラマであったことあって、MSYS だけでなく MinGW のほうも頑張って使おうとしてたけれど、最近は Microsoft 自身が開発環境の提供に関しては太っ腹になってることなども手伝って、「GNU マナーで Windows ネイティブアプリケーションをビルドする」ことにうまみを感じなくなってきて、ゆえに、ほんとうに「MSYS だけ」を使い続けるということになってた、いつしか。

それとこれも割と何度か言っていることなんだけれども「なぜ cygwin でないのか、なぜ msys2 でないのか」は、やっぱりこれは言っとく必要があるんだよね。けれどもこれはまぁ「ミニマルでええんや」てことで伝わるんじゃないかね、とは思ってる。デカすぎなのよ、cygwin。msys2 のほうが少し取り回ししやすいものの、同じ msys という名前を冠していながらもはや「MINIMAL」は消え失せてる。やぱーりワタシは「ミニマルでええんや」、てことでの「MSYS」である。

いかにミニマルで取り回ししやすいのか、については、「「msys/1.0/…」という階層ごと持ち運べる」ということである。これもワタシのサイトでは何度か書いてるんだけれど、MSYS って、考えようによっては凄まじく「気持ちが悪い」システムで、そしてその気持ち悪い振る舞いこそが便利、なのよ。どういうことかと言えば、「トップレベルのフォルダがあたかもルートディレクトリ」として振る舞う、ということ。つまり、USB メモリに突っ込んでおくと、どういう階層のフォルダに置いてあろうが「msys/1.0」の位置がルート(/)になる。そう、「USB メモリに突っ込んでおくと」。ちょっとした非常用 OS を使うみたいな気分でも使えるんだよね。ゆえにこれな、「客先の、自分では自由に出来ない PC での作業を必要とする」場合なんぞにびっくりするほど便利なんだよね。

そういうわけで、いい加減「オレが使ってる MSYS」をあんたのとこにも復元出来たり出来たら嬉しかったりする人もいたりするかしらん、ワタシにとってもそのメモは有用かもしらんしな、と今更思ってちょっと調べ直してみた、の巻。

「完全に拾ったのと同じもの」を見つけられたと思ったけれど、違ってた、の話から。

一番最初にワタシが MSYS を知り、入手した経路とは違うのだけれど、とりわけ java 開発者に馴染みになった「MSYS 入手手段」があったんだよね。「ALl In One Eclipse」という、まぁワタシに言わせりゃ「(気持ちはわかるよ、でもね)お馬鹿プロジェクト」。Windows 用にスタンドアロンな FTP サーバ(FileZilla) を同梱する…だけでなくてとにかく「首謀者が思うぜんぶっ、ぜーんぶっっっ」が入ってたんよね、Apache WEB Server はまぁ「当然」のものとして選ばれてて、その他ほんとに色々。その中の一つに選ばれてたんだよね、MSYS が。こっそりとしれーっと入ってたの。だから UNIX のユの字も知らない末端エンジニアが知らずに MSYS の恩恵を受けていた、ということが、一時期起こった。今もこの流れがあるのかはワタシにはわからない。けれども、その10年とちょっと前、そんな時代があった。

その「全部入り一」は今でもあるんだよ、プロジェクトとして可視なの:

「Java 畑の人々が好んで使った Eclipse」の、これはとてつもなくとてつもなーく古い全部入り一なので、入れたいとは思わんでしょ。入れなくていいよ。MSYS は入ってないから。どうも記憶してる全部入り一とは同じなのか違うのかはもうわからんのだわ。「関連プロジェクト」として見えてるんだから、たぶん入ってたから、なんだとは思うんだけどね、確認する術もわからんよ、もう。

少なくとも、その All In One Eclipse に含まれていた MSYS は「字句通りの意味の MSYS」で、つまり、本来「MinGW プロジェクトのサブプロジェクトであるところの MSYS」は、配布としても例えば「c:/MinGW/msys/1.0/」の形の、つまり「MinGW 配下」のブツとしての配布形態なのだが、この全部入り一に含まれていたのはこの 1.0 の下である。

Eclipse の同梱のやり方からわかる通り、msys/1.0 の下の構造だけを独立して使うことが出来るというわけね、そしてワタシが「MSYS」と呼んでいるのは、常にこれのこと、ね。ここまではよろしい?

ほかに術があるのかはわからん。けれど、ワタシが持ってる MSYS よりはさすがにちょっとは新しい MSYS の入手方法は、結局はこの:

のインストーラを介するしかなさげね。言ってきたとおり「置くだけで使える」ようなもんなんだからインストーラなしのアーカイブで欲しいと思うんだが、ないみたい、そういうのは。

このインストーラは「MSYSの」ではなくて「MinGWの」なので、「MSYSだけ欲しい」ならベースだけをチェックすればいい。階層は「c:/WinGW/msys/1.0」となってはしまうけれど。(「USBに突っ込んで使う」ような場合はこの 1.0 の下を使えばいい。)

なお、「環境変数」、特に PATH をどうするかはよくよく考えること。ワタシは PATH に入れるのでずっとやってきてる(「コマンドを指定して実行」とかで直接 bash を起動したいから)が、一番理想的(というかプロジェクトが推奨している)のは、「msys.bat」を起動することである。こいつが必要なセットアップをあれこれやってくれて、「理想的な Unix もどき箱庭」を作り出してくれる。

それと、環境変数をセットしたい場合は、Windows 10 になって環境変数の設定にたどり着くのがちょっと迷子になりやすくなってるので注意ね。ユーザ環境変数はいいんだけど、システム環境変数の設定にたどり着きにくくなった。これの答えは簡単で、こういうことね:

環境変数の設定に困ってインターネット検索すると、最もドヤってるお馬鹿回答がトップでヒットするので注意。なんでここまで簡単な話をああまで難しく出来るんだか…。

ふぅ…。まぁこれが、今の今までちゃんと説明せずに、それでも延々と「MSYS、MSYS、MSYS、…」と言い続けてきていた「オレの、オレの、オレの MSYS を」、の話ね。

どうなんだろ、ワタシの話を読んでて「ふーん、そういうことなら使ってみようかなぁ」と思っていた人なんかはいたんであろうか? そういう人がいたのかいなかったのかはわからないんだけれど、ただワタシとしてはやっぱりずっと引っかかってはいたんだよね。「伝わってんのかしら?」って。

一応最後に念押ししておくけれど、「ワタシは MSYS を使う」ということでしかないからね? 推奨しているつもりは毛頭ない。ワタシにとっては先に述べた「持ち運びやすい」ことがかなり大事なので MSYS を使い続けるけれど、「よりちゃんと Unix でないと死にそう」なら cygwin か msys2 を検討しろよ。ワタシがこれを嫌いだからって、あなたがそれを嫌いになる理由はないよ。