前回、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は魅力的なプラットフォヌムである。このプラットフォヌムの本質は開発環境にあるのだが、コマンドを䜿う目的でも䟿利なのだ。ぜひずも䞀床、お詊しいただきたい。