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

MSYS2で行く - アプリのインストール

【連載】

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

【第297回】MSYS2で行く - アプリのインストール

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

前回、WindowsでLinuxコマンドを実行する方法として「MSYS2」を使う方法を取り上げた。Windowsには、Linuxコマンドを実行する方法がWSL/WSL2や仮想環境を使う以外にもいくつか用意されている。初期から存在しているのは、ライブラリを介してLinuxコマンドを実行するという方法で、「Cygwin」が一番有名ではないかと思う。

似たような仕組みを採用したものはほかにもあるのだが、そのなかから前回は開発が活発、かつ”モダン”ということでMSYS2を取り上げた。そこでも説明したように、MSYS2のインストールは簡単だ。次のようにWinget (Windows Package Manager)でインストールするだけでよい。

winget install MSYS2

MSYS2は、C:\msys64\にインストールされる。このMSYS2を使うために、環境変数PATHやHOME、LC_TYPEなどを次のような値に設定しておく。

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

インストール後は、まず次のコマンドを実行する。

pacman -Syu

これにより、パッケージのメタデータとパッケージそのもののアップデートが行われる。MSYS2は、Windowsで実行できるLinuxコマンドの集まりのようなものだ。パッケージのインストールやアンインストールはpacmanコマンドで実施する。WindowsをLinuxのように使うことができる便利なプラットフォームなのだ。

MSYS2のパッケージ管理システムの使い方

MSYS2は、最初にインストールした段階でC:\msys64\usr\binに400個以上のコマンドが収められている。いずれもWindowsでネイティブに動作するLinuxコマンドだ。つまり、このパスが環境変数PATHに含まれていれば、PowerShellでもコマンドプロンプトでも、これらのコマンドをネイティブなコマンドとして実行できるわけだ。

MSYS2のコマンドを実行しているところ

また、初期インストールの時点でいくつかのパッケージもインストールされている。インストール済みパッケージは「pacman -Q」で確認できる。

MSYS2の初期インストール済みパッケージ

これらのパッケージによってC:\msys64\usr\bin\にインストールされているコマンドは、次の通りだ。

C:\msys64\usr\bin\のデフォルトコマンド
[.exe, addgnupghome, agetty.exe, applygnupgdefaults, arch.exe, ash.exe, autopoint, awk.exe, b2sum.exe, base32.exe, base64.exe, basename.exe, basenc.exe, bash.exe, bashbug, blkid.exe, brotli.exe, bsdtar.exe, bunzip2.exe, bzcat.exe, bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2.exe, bzip2recover.exe, bzless, bzmore, c_rehash, cal.exe, captoinfo.exe, cat.exe, cfdisk.exe, chattr.exe, chcon.exe, checkupdates, chgrp.exe, chmod.exe, chown.exe, chroot.exe, chrt.exe, cksum.exe, clear.exe, cmd, col.exe, colcrt.exe, colrm.exe, column.exe, comm.exe, core_perl, cp.exe, csplit.exe, curl.exe, cut.exe, cygcheck.exe, cygpath.exe, cygwin-console-helper.exe, dash.exe, date.exe, db_archive.exe, db_checkpoint.exe, db_deadlock.exe, db_dump.exe, db_hotbackup.exe, db_load.exe, db_log_verify.exe, db_printlog.exe, db_recover.exe, db_replicate.exe, db_stat.exe, db_tuner.exe, db_upgrade.exe, db_verify.exe, dd.exe, dep-search, df.exe, dir.exe, dircolors.exe, dirmngr-client.exe, dirmngr.exe, dirname.exe, dnsdomainname.exe, du.exe, dumper.exe, dumpsexp.exe, echo.exe, egrep, env.exe, envsubst.exe, expand.exe, expr.exe, factor.exe, false.exe, fdisk.exe, fgrep, file.exe, find.exe, findfs.exe, flock.exe, fmt.exe, fold.exe, fsck.cramfs.exe, fsck.minix.exe, ftp.exe, gapplication.exe, gawk-5.1.0.exe, gawk.exe, gdbm_dump.exe, gdbm_load.exe, gdbmtool.exe, gdbus.exe, gencat.exe, getconf.exe, getent.exe, getfacl.exe, getopt.exe, gettext.exe, gettext.sh, gettextize, gio-querymodules.exe, gkill.exe, glib-compile-schemas.exe, gobject-query.exe, gpg-agent.exe, gpg-connect-agent.exe, gpg-error.exe, gpg-wks-server.exe, gpg.exe, gpgconf.exe, gpgme-json.exe, gpgme-tool.exe, gpgparsemail.exe, gpgscm.exe, gpgsm.exe, gpgsplit.exe, gpgtar.exe, gpgv.exe, grep.exe, groups.exe, gsettings.exe, gunzip, gzexe, gzip.exe, hardlink.exe, head.exe, hexdump.exe, hmac256.exe, hostid.exe, hostname.exe, iconv.exe, id.exe, info.exe, infocmp.exe, infotocap.exe, install-info.exe, install.exe, ipcmk.exe, isosize.exe, join.exe, kbxutil.exe, kill.exe, ldd.exe, ldh.exe, less.exe, lessecho.exe, lesskey.exe, link.exe, ln.exe, locale.exe, locate.exe, logger.exe, logname.exe, look.exe, ls.exe, lsattr.exe, lzcat.exe, lzcmp, lzdiff, lzegrep, lzfgrep, lzgrep, lzless, lzma.exe, lzmadec.exe, lzmainfo.exe, lzmore, makepkg, makepkg-mingw, makepkg-template, mcookie.exe, md5sum.exe, minidumper.exe, mintheme, mintty.exe, mkdir.exe, mkfifo.exe, mkfs.bfs.exe, mkfs.cramfs.exe, mkfs.exe, mkfs.minix.exe, mkgroup.exe, mknod.exe, mkpasswd.exe, mkswap.exe, mktemp.exe, more.exe, mount.exe, mpicalc.exe, msgattrib.exe, msgcat.exe, msgcmp.exe, msgcomm.exe, msgconv.exe, msgen.exe, msgexec.exe, msgfilter.exe, msgfmt.exe, msggrep.exe, msginit.exe, msgmerge.exe, msgunfmt.exe, msguniq.exe, mv.exe, namei.exe, nano.exe, nettle-hash.exe, nettle-lfib-stream.exe, nettle-pbkdf2.exe, ngettext.exe, nice.exe, nl.exe, nohup.exe, nologin.exe, nproc.exe, numfmt.exe, od.exe, openssl.exe, p11-kit.exe, paccache, pacdiff, paclist, paclog-pkglist, pacman-conf.exe, pacman-db-upgrade, pacman-key, pacman.exe, pacscripts, pacsearch, pacsort.exe, pactree.exe, passwd.exe, paste.exe, pathchk.exe, peflags.exe, peflagsall, perl.exe, perl5.32.1.exe, pg.exe, pinentry-w32.exe, pinentry.exe, pinky.exe, pkcs1-conv.exe, pldd.exe, pr.exe, printenv.exe, printf.exe, ps.exe, psl-make-dafsa, psl.exe, ptx.exe, pwd.exe, rankmirrors, rcp.exe, readlink.exe, realpath.exe, rebase.exe, rebaseall, recode-sr-latin.exe, regtool.exe, rename.exe, renice.exe, repo-add, repo-elephant, repo-remove, reset.exe, rev.exe, rlogin.exe, rm.exe, rmdir.exe, rnano.exe, rsh.exe, runcon.exe, script.exe, scriptlive.exe, scriptreplay.exe, sed.exe, seq.exe, setfacl.exe, setmetamode.exe, setsid.exe, sexp-conv.exe, sfdisk.exe, sh.exe, sha1sum.exe, sha224sum.exe, sha256sum.exe, sha384sum.exe, sha512sum.exe, shell, shred.exe, shuf.exe, site_perl, sleep.exe, sort.exe, split.exe, ssp.exe, start, stat.exe, strace.exe, stty.exe, sum.exe, swaplabel.exe, sync.exe, tabs.exe, tac.exe, tail.exe, talk.exe, taskset.exe, tclsh.exe, tclsh8.6.exe, tee.exe, telnet.exe, test.exe, testpkg.exe, tftp.exe, tic.exe, time.exe, timeout.exe, toe.exe, touch.exe, tput.exe, tr.exe, true.exe, truncate.exe, trust.exe, tset.exe, tsort.exe, tty.exe, tzselect, tzset.exe, ul.exe, umount.exe, uname.exe, uncompress, unexpand.exe, uniq.exe, unlink.exe, unlzma.exe, unxz.exe, unzstd.exe, update-ca-trust, updatedb, updpkgsums, users.exe, uuidd.exe, uuidgen.exe, uuidparse.exe, vdir.exe, vendor_perl, vercmp.exe, watchgnupg.exe, wc.exe, wget.exe, whereis.exe, which.exe, who.exe, whoami.exe, wipefs.exe, xargs.exe, xgettext.exe, xmlcatalog.exe, xmllint.exe, xsltproc.exe, xz.exe, xzcat.exe, xzcmp, xzdec.exe, xzdiff, xzegrep, xzfgrep, xzgrep, xzless, xzmore, yat2m.exe, yes.exe, zcat, zcmp, zdiff, zdump.exe, zegrep, zfgrep, zforce, zgrep, zic.exe, zless, zmore, znew, zstd.exe, zstdcat.exe, zstdgrep, zstdless, zstdmt.exe

パッケージの検索には、いくつかの手段が用意されている。まず、「pacman -Ss パッケージ名」で名前による検索が可能だ。また、「pacman -Fx ファイル名」で、指定したファイル名にヒットするファイルが含まれるパッケージを探すことができる。パッケージ名が不明な場合は、こちらのほうが使いやすいだろう。そしてインストールは「pacman -S パッケージ名」だ。

パッケージの検索とインストール

例えば、本連載で以前紹介したエディタの「Vim」も、次のように簡単にインストールできる。

インストールしたVimの実行例

MSYS2には豊富な数のパッケージが収録されており、よく使われるツールは大抵用意されていると考えてよいと思う。これが、MSYS2を使う大きなメリットだ。

人気のあるツールが簡単に導入できる

pacmanはArch Linuxで使われているパッケージ管理システムだ。Ubuntuを使っているユーザーにはなじみのないコマンドだろう。しかし、このコマンドは結構扱いやすく、慣れてしまえば便利なことこの上ない。pacmanでよく使うコマンドの組み合わせをまとめておくので、参考にしてもらえればと思う。

コマンド 内容
pacman -S パッケージインストール
pacman -Ss パッケージ検索
pacman -R パッケージアンインストール
pacman -Rs パッケージおよびそのパッケージのみが必要としているパッケージをアンインストール
pacman -Rns パッケージおよびそのパッケージのみが必要としているパッケージおよびバックアップファイルをアンインストール
pacman -Fx 指定したファイルが含まれているパッケージを一覧表示
pacman -Fl 指定したパッケージがインストールするファイルを一覧表示
pacman -Q インストール済みパッケージ一覧表示
pacman -Syu メタデータアップデートとパッケージアップグレード

Wingetを補ってあり余るMSYS2

Windows 10にWingetが導入されたことで、Windowsにおけるアプリケーションの導入は格段に簡単になった。aptがWindows 10で動作するようになったと想像するとわかりやすいだろう。

しかし、Wingetはまだまだ生まれたばかりで発展途上にある。そのため、欲しいソフトウエアがWingetに登録されていないということがよくあるのだ。Wingetが充実してさまざまなソフトウエアが登録されることが好ましいのだが、今はまだその段階ではないし、Linux系コマンドはいつまで経っても登録が増えないかもしれない。

MSYS2は、それを解決してくれるプラットフォームなのだ。使いたいLinux系コマンドがMSYS2経由であれば簡単にインストールでき、そしてWindowsでネイティブに動作する。WSL2のように仮想環境で動作するわけではないし、もちろん仮想環境で動作するLinuxのようにWindowsから分断されてもいない。WindowsでネイティブにLinux系のコマンドが使えるのだ。

WSL2に押され気味のように見えるが、やはり依然としてMSYS2は魅力的なプラットフォームである。このプラットフォームの本質は開発環境にあるのだが、コマンドを使う目的でも便利なのだ。ぜひとも一度、お試しいただきたい。

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

一覧はこちら

連載目次

関連リンク

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

一覧はこちら

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

一覧はこちら

会員登録(無料)

ページの先頭に戻る