マイナビニュースマイナビ

MSYS2で行く

【連載】

にわか管理者のためのLinux運用入門

【第296回】MSYS2で行く

[2021/08/31 08:00]後藤大地 ブックマーク ブックマーク

実は、”WindowsでLinuxする(Windows上でLinuxを使う)”方法は、複数存在する。MicrosoftがWSL/WSL2の開発に取り組み始めたことでWSL/WSL2が有力な第一候補になっているが、それ以外の方法も以前から存在しているのだ。

プロセッサのパワーが十分高くなった時期、または、プロセッサに仮想化支援機能が入り始めた時期から、「仮想環境でLinuxを実行する」というアプローチが取られるようになった。PCを変えることなくWindowsもLinuxも使えるのが利点だ。MacOS上でLinuxを使うこともできるし、逆にLinux上でWindowsを実行することもできる。この技術が普及したことで、Linuxの利用は以前よりも簡単になった。

しかし、WindowsでLinuxする方法はそれ以前からも存在している。最も代表的なものは「Cygwin」と呼ばれるソフトウエアだ。これを使う場合、”Linuxする”というと語弊があるのだが、CygwinはGNUのソフトウエアやLinuxで使われることの多いオープンソースソフトウエアをWindowsで実行できるようにしたものだ。Linuxカーネルを実行したりプロセッサの仮想化技術を使っているわけではないので、WSL2や仮想化アプリケーションとは違う。詳しい説明は省くが、まずは「Linuxのコマンド群をWindowsで使えるようにしてパッケージングしたもの」、と考えておいていただきたい。

似たようなものに(と言っても、厳密に言えばそれぞれ特徴や目指すところは違うのだが)、「MSYS2」「Chocolatey」「Scoop」などがある。ほかにもあるのだが、現在でも開発が活発に進められており、それなりにユーザー数が多いところをピックアップするとこの辺りになるんじゃないかと思う。

WSL2が使えるのだからこれ以外の選択肢は必要ないのではないかと思うかもしれないが、こうした技術にはそれはそれで需要があるのだ。

WSL2では不満?

WSL2の最大のポイントはMicrosoftが開発しているという点にある。導入は簡単だし、Linuxカーネルとの互換性は100%。Visual StudioやVisual Studio Codeからも利用できる。Linuxを使いたいという要望であれば、WSL2は十分に需要を満たしてくれるのだ。

ではどういった場合にWSL2では不満になるかと言えば、例えばもっと軽く済ませたいときだ。

Linuxには便利なコマンドがたくさんある。こういったコマンドをWindowsでも使いたいということになれば、WSL2でその需要は満たすことができる。しかし、常にWSL2を発動させておかないとならない。それはつまり、常に仮想環境を動かし続けることを意味している。

これは在宅勤務のようにPCに電源を接続しておける環境であれば問題ない。しかし、1日中電源に接続しないで使うような場合、バッテリー消費が気になってくる。いくつかの便利なコマンドを使うためだけにWSL2を使うのは、どうもバッテリーを消費しすぎるように思えるのだ。

例えば、ディレクトリ以下のファイルやディレクトリをツリー表示するtreeコマンド。同名のコマンドはWindowsにもあるが、Linuxで動くtreeのほうが便利だ。WSL2を使えば、「wsl tree」のようにしてWSL2で動くtreeコマンドをWindowsでも使うことができる。ただし、仮想環境が同時に動き、仮想環境からWindows側のファイルシステムにアクセスするためのオーバーヘッドも生じている。WSL2が動作するためのストレージ容量も消費している。treeコマンドを実行するために使われるリソースが大きいのである。

ほかの需要はソフトウエア開発だ。WindowsでLinuxで使われているライブラリなどを活用してソフトウエアを開発する場合である。WSL2はあくまでもネイティブなLinuxだ。WSL2でWindowsのソフトウエアを開発するというのはあまり得意ではない。先ほど取り上げたCygwinやMSYS2といったプラットフォームは、それができるのだ。Linuxで使われる便利なライブラリを使って、Windowsでネイティブに動作するアプリケーションを開発することができる。これはWSL2にはない特徴だ。

MSYS2

候補はいくつかあるのだが、まずそのなかから「MSYS2」を取り上げる。開発が活発に行われており、パッケージ管理システムに「pacman」を採用していて使いやすいのだ。モダンなLinuxディストリビューションに慣れているユーザーが取り組みやすい候補の一つではないかと思う。

MSYS2はWindowsでLinuxで使われているようなライブラリを使ってWindowsでネイティブに動作するソフトウエアを開発するためのプラットフォームと位置付けられている。しかし、それを実現するためにWindowsでネイティブに動作するLinuxのコマンド群を提供しており、Linux環境の代わりとしても使うことができる。Linuxユーザーにも、Windows開発者にも、お薦めできるプラットフォームだ。

MSYS2は、関連するソフトウエアを全て「C:\msys64\」にインストールする。Windowsへの環境汚染が少ないというのも特徴だ。アンインストールで「C:\msys64\」は完全削除が行われるので、いらなくなったらサクッと元に戻るというわけだ。

MSYS2のインストールとセットアップ

まず先に、MSYS2を実行するために3つの環境変数を追加する。次の環境変数だ。

環境変数 内容
HOME C:\Users\ユーザー名
LC_CTYPE ja_JP.UTF-8
Path C:\msys64\usr\bin
C:\msys64\mingw64\bin

MSYS2でインストールされるコマンドは「C:\msys64\home\ユーザ名ー\」をホームディレクトリとして動作する。Windowsにおけるユーザーのホームディレクトリは「C:\Users\ユーザー名\」だ。ホームディレクトリが2つになると結構混乱する。環境変数HOMEに正規のディレクトリを登録して、こちらに統一しよう。

また、何も設定していないとVimなどいくつかのアプリケーションが日本語を適切に使ってくれないので、環境変数LC_CTYPEにja_JP.UTF-8も設定する。

後は、インストールしたMSYS2のコマンドがWindowsから使えるように環境変数Pathに「C:\msys64\usr\bin」と「C:\msys64\mingw64\bin」を追加する。設定できる環境変数はいくつもあるのだが、それらは必要に応じておいおい設定すれば良く、まずは最低限この辺りを設定しよう。

なお、Windowsで環境変数の設定は、スタートメニュー右横の検索フィールドで「PATH」を検索し、表示される候補から「システム環境変数の編集」→「システムのプロパティ」→「環境変数…」を選択し、「環境変数」ダイアログで行えばよい。ユーザーの環境変数として編集しておこう。

環境変数の編集

MSYS2のインストールはWingetで以下のように行うことができる。Wingetの登場で本当にこういったソフトウエアの導入は簡単になった。

winget install MSYS2

MSYS2のインストールが完了したら、次のコマンドを実行してパッケージのメタデータアップデートと、パッケージのアップグレードを最初に行っておく。

pacman -Syu

MSYS2のインストールと、パッケージのアップグレード

MSYS2のインストールと、パッケージのアップグレード完了

先述の通り、MSYS2はパッケージ管理システムとして「pacman」を採用している。pacmanはArch Linuxのパッケージ管理システムだ。aptに慣れているユーザーにはなじみがないかもしれないが、これはこれで使いやすい。

MSYS2をインストールしたばかりの状態でも、最低限必要なLinuxコマンドはインストールされている。次のように、Linuxで一般的に使われるコマンドが実行できることが確認できるはずだ(lsコマンドについては、PowerShellのエイリアスとの衝突を避けるため、「ls」ではなく「ls.exe」のように明示的にMSYS2のコマンドが実行されるようにしてある点に注意)。

デフォルトインストールのMSYS2のコマンドを実行している様子

MSYSのアンインストールは、Wingetを使って次のように実行すればよい。

winget uninstall MSYS2

MSYS2のアンインストール

C:\msys64\以下の全てのファイルが削除される

MSYS2はインストールもアンインストールも簡単だ。

MSYS2はセットアップが簡単

MSYS2は、仕事で同じ環境を構築する必要があるユーザーと環境セットアップ方法を共有するのも簡単だ。先ほど説明したように、wingetとpacmanコマンドだけでほぼ環境構築を終えることができる。WSL2のようにWSL側の環境に入る必要もなく、Windowsだけで作業を完結することができる。

以降何回かに分けてMSYS2の構造や使い方などを説明していく。ユーザーによってはWSL2でLinux環境を動作させるよりも、MSYS2のほうが目的に合っているということもると思う。かなり扱いやすいプラットフォームなので、ぜひとも試してもらいたい。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で TECH+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
Slackで始める新しいオフィス様式
Google Workspaceをビジネスで活用する
ニューノーマル時代のオウンドメディア戦略
ミッションステートメント
次世代YouTubeクリエイターの成長戦略
IoTでできることを見つけるための発想トレーニング
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
マイクロサービス時代に活きるフレームワーク Spring WebFlux入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る