はじめに
PowerShellのアップグレードから、WinGetでアプリをインストールしてg++
コマンドを実行するまで。ついでに、その他諸々のアプリのインストールや設定など。
PowerShell
最新版にしよう
とりあえず最新にしておきたいよね。PowerShellを起動する度に、下記のメッセージが表示されるのも煩わしいし。
新機能と改善のために最新の PowerShell をインストールしてください!
という訳で最新版をインストールする。まずは、現在のPowerShellのバージョンを確認しよう。そのために使用するのは$PSVesionTable
変数だ。これは変数であって、PowersShellのコマンドではない。
ちなみに、PowerShellのコマンドはコマンドレット(cmdlets)という。基本的に変数やコマンドレットの大文字、小文字はあまり区別されないようだ。先程の$PSVesionTable
変数も$psversiontable
や$PSVERSIONTABLE
と書いても問題ない。
PS C:\Users\dorayaki> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.5369
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.5369
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
最初に入っていたのはWindows PowerShell 5.1だったようだ。現在はPowerShell 7なので、最新版にアップグレードしよう。
最新版を検索
WinGetを使ってPowerShellの最新版を検索してみる。winget search 調べたいもの
で、名前やID、タグなどで引っ掛かるものが検索できる。
PS C:\Users\dorayaki> winget search Microsoft.PowerShell
名前 ID バージョン ソース
------------------------------------------------------------------
PowerShell Microsoft.PowerShell 7.4.6.0 winget
PowerShell Preview Microsoft.PowerShell.Preview 7.6.0.2 winget
普通のPowwerShellでも、Preview版でも好きなのを選べばいいので、とりあえず普通の安定してそうな方をインストールする。ちなみにPowerShellでWinGetを実行した場合、下図のように文字化けすることがある。
デフォルトでは通常時のフォントは「MS ゴシック」なのたが、何故かWinGet実行中のフォントは違うフォントになることが原因のようだ。私の環境では「Lucida Console」だったかな。とりあえず、これを「MS ゴシック」に直せば下図の通り文字化けは直る。
これに関しては下記サイトが詳しかったです。
インストール
インストールしたいものが決まったのでwinget install
でインストールしよう。
PS C:\Users\dorayaki> winget install --id Microsoft.PowerShell --source winget
見つかりました PowerShell [Microsoft.PowerShell] バージョン 7.4.6.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
こうして、無事にPowerShell 7がインストールされた。
なお、スタートメニューでPowerShellと調べると下図のように表示される。これから分かるように、新しくインストールしたPowerShell 7と、従来標準搭載されていたPowerShell(下図でのWindows PowerShell)は別物である。
Windows PowerShellとかPowerShell Core 6だとか、PowerShell 7だとかの話は下記の記事だったり、PowerShellの英語版Wikipediaがまとまってて良さそう。
アップデート/アンインストール
winget upgrade パッケージ名
winget uninstall パッケージ名
upgradeが必要なものを表示するには、単にwinget upgrade
と実行する。必要なものすべてをインストールする場合はwinget upgrade --all
を実行する。
PowerShellのwhere
コマンドプロンプトだと、ソフトがどこにインストールされているのかwhereで調べていた。PowerShellではGet-Command
らしい。実行結果でVersionが表示されるが、これはwingetで表示されるVersionが表示されるわけでもないらしい。
PS C:\Users\dorayaki> Get-Command nvim
CommandType Name Version Source
----------- ---- ------- ------
Application nvim.exe 0.0.0.0 C:\Program Files\Neovim\bin\nvim.exe
-e、--exactオプション
ネットでWinGetによるインストールなどを調べていると、よく-e
オプションを指定したコマンドを目にした。これは、指定した文字列と完全に一致するものを検索するオプションのようだ。
PS C:\Users\dorayaki> winget search Microsoft.PowerShell -e
名前 ID バージョン ソース
--------------------------------------------------
PowerShell Microsoft.PowerShell 7.4.6.0 winget
PS C:\Users\dorayaki> winget search Microsoft.Powershell -e
入力条件に一致するパッケージが見つかりませんでした。
こうして自分なりに調べたものをまとめてみたものの、公式を見るのが最も信頼できて、まとまっている気がするよね。
その他ソフトのインストール
WinLibs
Make、GCC、MinGW-w64、LLVMなど色々と入ってるみたいでよさそう。インストールには1時間くらい掛かった。
winget install BrechtSanders.WinLibs.POSIX.UCRT.LLVM
PS C:\Users\dorayaki> winget install BrechtSanders.WinLibs.POSIX.UCRT.LLVM
見つかりました WinLibs (POSIX threads, UCRT runtime, LLVM included) [BrechtSanders.WinLibs.POSIX.UCRT.LLVM] バージョン 14.2.0-19.1.1-12.0.0-r2
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/brechtsanders/winlibs_mingw/releases/download/14.2.0posix-19.1.1-12.0.0-ucrt-r2/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.1-mingw-w64ucrt-12.0.0-r2.zip
██████████████████████████████ 360 MB / 360 MB
インストーラーハッシュが正常に検証されました
アーカイブを展開しています...
アーカイブが正常に展開されました
パッケージのインストールを開始しています...
パス環境変数が変更されました; 新しい値を使用するにはシェルを再起動してください。
コマンド ライン エイリアスが追加されました: "addr2line"
コマンド ライン エイリアスが追加されました: "amdgpu-arch"
コマンド ライン エイリアスが追加されました: "ar"
コマンド ライン エイリアスが追加されました: "as"
コマンド ライン エイリアスが追加されました: "bugpoint"
コマンド ライン エイリアスが追加されました: "c++"
コマンド ライン エイリアスが追加されました: "c++filt"
コマンド ライン エイリアスが追加されました: "ccache"
コマンド ライン エイリアスが追加されました: "clang"
コマンド ライン エイリアスが追加されました: "clang++"
コマンド ライン エイリアスが追加されました: "clang-apply-replacements"
コマンド ライン エイリアスが追加されました: "clang-change-namespace"
コマンド ライン エイリアスが追加されました: "clang-check"
コマンド ライン エイリアスが追加されました: "clang-cl"
コマンド ライン エイリアスが追加されました: "clang-cpp"
コマンド ライン エイリアスが追加されました: "clangd"
コマンド ライン エイリアスが追加されました: "clang-doc"
コマンド ライン エイリアスが追加されました: "clang-extdef-mapping"
コマンド ライン エイリアスが追加されました: "clang-format"
コマンド ライン エイリアスが追加されました: "clang-include-cleaner"
コマンド ライン エイリアスが追加されました: "clang-include-fixer"
コマンド ライン エイリアスが追加されました: "clang-installapi"
コマンド ライン エイリアスが追加されました: "clang-linker-wrapper"
コマンド ライン エイリアスが追加されました: "clang-move"
コマンド ライン エイリアスが追加されました: "clang-nvlink-wrapper"
コマンド ライン エイリアスが追加されました: "clang-offload-bundler"
コマンド ライン エイリアスが追加されました: "clang-offload-packager"
コマンド ライン エイリアスが追加されました: "clang-pseudo"
コマンド ライン エイリアスが追加されました: "clang-query"
コマンド ライン エイリアスが追加されました: "clang-refactor"
コマンド ライン エイリアスが追加されました: "clang-rename"
コマンド ライン エイリアスが追加されました: "clang-reorder-fields"
コマンド ライン エイリアスが追加されました: "clang-repl"
コマンド ライン エイリアスが追加されました: "clang-scan-deps"
コマンド ライン エイリアスが追加されました: "clang-tblgen"
コマンド ライン エイリアスが追加されました: "clang-tidy"
コマンド ライン エイリアスが追加されました: "cmake"
コマンド ライン エイリアスが追加されました: "cmcldeps"
コマンド ライン エイリアスが追加されました: "count"
コマンド ライン エイリアスが追加されました: "cpack"
コマンド ライン エイリアスが追加されました: "cpp"
コマンド ライン エイリアスが追加されました: "cppcheck"
コマンド ライン エイリアスが追加されました: "ctags"
コマンド ライン エイリアスが追加されました: "ctest"
コマンド ライン エイリアスが追加されました: "diagtool"
コマンド ライン エイリアスが追加されました: "dlltool"
コマンド ライン エイリアスが追加されました: "dllwrap"
コマンド ライン エイリアスが追加されました: "dos2unix"
コマンド ライン エイリアスが追加されました: "doxygen"
コマンド ライン エイリアスが追加されました: "dsymutil"
コマンド ライン エイリアスが追加されました: "elfedit"
コマンド ライン エイリアスが追加されました: "FileCheck"
コマンド ライン エイリアスが追加されました: "find-all-symbols"
コマンド ライン エイリアスが追加されました: "g++"
コマンド ライン エイリアスが追加されました: "gcc"
コマンド ライン エイリアスが追加されました: "gcc-ar"
コマンド ライン エイリアスが追加されました: "gcc-nm"
コマンド ライン エイリアスが追加されました: "gcc-ranlib"
コマンド ライン エイリアスが追加されました: "gcov"
コマンド ライン エイリアスが追加されました: "gcov-dump"
コマンド ライン エイリアスが追加されました: "gcov-tool"
コマンド ライン エイリアスが追加されました: "gdb"
コマンド ライン エイリアスが追加されました: "gdbserver"
コマンド ライン エイリアスが追加されました: "gendef"
コマンド ライン エイリアスが追加されました: "genidl"
コマンド ライン エイリアスが追加されました: "gfortran"
コマンド ライン エイリアスが追加されました: "gprof"
コマンド ライン エイリアスが追加されました: "iconv"
コマンド ライン エイリアスが追加されました: "jwasm"
コマンド ライン エイリアスが追加されました: "ld.bfd"
コマンド ライン エイリアスが追加されました: "ld"
コマンド ライン エイリアスが追加されました: "ld.lld"
コマンド ライン エイリアスが追加されました: "ld64.lld"
コマンド ライン エイリアスが追加されました: "llc"
コマンド ライン エイリアスが追加されました: "lld"
コマンド ライン エイリアスが追加されました: "lldb"
コマンド ライン エイリアスが追加されました: "lldb-argdumper"
コマンド ライン エイリアスが追加されました: "lldb-dap"
コマンド ライン エイリアスが追加されました: "lldb-mi"
コマンド ライン エイリアスが追加されました: "lldb-server"
コマンド ライン エイリアスが追加されました: "lld-link"
コマンド ライン エイリアスが追加されました: "lli"
コマンド ライン エイリアスが追加されました: "lli-child-target"
コマンド ライン エイリアスが追加されました: "llvm-addr2line"
コマンド ライン エイリアスが追加されました: "llvm-ar"
コマンド ライン エイリアスが追加されました: "llvm-as"
コマンド ライン エイリアスが追加されました: "llvm-bcanalyzer"
コマンド ライン エイリアスが追加されました: "llvm-bitcode-strip"
コマンド ライン エイリアスが追加されました: "llvm-cat"
コマンド ライン エイリアスが追加されました: "llvm-cfi-verify"
コマンド ライン エイリアスが追加されました: "llvm-config"
コマンド ライン エイリアスが追加されました: "llvm-cov"
コマンド ライン エイリアスが追加されました: "llvm-cvtres"
コマンド ライン エイリアスが追加されました: "llvm-cxxdump"
コマンド ライン エイリアスが追加されました: "llvm-cxxfilt"
コマンド ライン エイリアスが追加されました: "llvm-cxxmap"
コマンド ライン エイリアスが追加されました: "llvm-debuginfo-analyzer"
コマンド ライン エイリアスが追加されました: "llvm-debuginfod"
コマンド ライン エイリアスが追加されました: "llvm-debuginfod-find"
コマンド ライン エイリアスが追加されました: "llvm-diff"
コマンド ライン エイリアスが追加されました: "llvm-dis"
コマンド ライン エイリアスが追加されました: "llvm-dlltool"
コマンド ライン エイリアスが追加されました: "llvm-dwarfdump"
コマンド ライン エイリアスが追加されました: "llvm-dwarfutil"
コマンド ライン エイリアスが追加されました: "llvm-dwp"
コマンド ライン エイリアスが追加されました: "llvm-exegesis"
コマンド ライン エイリアスが追加されました: "llvm-extract"
コマンド ライン エイリアスが追加されました: "llvm-gsymutil"
コマンド ライン エイリアスが追加されました: "llvm-ifs"
コマンド ライン エイリアスが追加されました: "llvm-install-name-tool"
コマンド ライン エイリアスが追加されました: "llvm-jitlink"
コマンド ライン エイリアスが追加されました: "llvm-jitlink-executor"
コマンド ライン エイリアスが追加されました: "llvm-lib"
コマンド ライン エイリアスが追加されました: "llvm-libtool-darwin"
コマンド ライン エイリアスが追加されました: "llvm-link"
コマンド ライン エイリアスが追加されました: "llvm-lipo"
コマンド ライン エイリアスが追加されました: "llvm-lto"
コマンド ライン エイリアスが追加されました: "llvm-lto2"
コマンド ライン エイリアスが追加されました: "llvm-mc"
コマンド ライン エイリアスが追加されました: "llvm-mca"
コマンド ライン エイリアスが追加されました: "llvm-ml"
コマンド ライン エイリアスが追加されました: "llvm-modextract"
コマンド ライン エイリアスが追加されました: "llvm-mt"
コマンド ライン エイリアスが追加されました: "llvm-nm"
コマンド ライン エイリアスが追加されました: "llvm-objcopy"
コマンド ライン エイリアスが追加されました: "llvm-objdump"
コマンド ライン エイリアスが追加されました: "llvm-opt-report"
コマンド ライン エイリアスが追加されました: "llvm-otool"
コマンド ライン エイリアスが追加されました: "llvm-pdbutil"
コマンド ライン エイリアスが追加されました: "llvm-PerfectShuffle"
コマンド ライン エイリアスが追加されました: "llvm-profdata"
コマンド ライン エイリアスが追加されました: "llvm-profgen"
コマンド ライン エイリアスが追加されました: "llvm-ranlib"
コマンド ライン エイリアスが追加されました: "llvm-rc"
コマンド ライン エイリアスが追加されました: "llvm-readelf"
コマンド ライン エイリアスが追加されました: "llvm-readobj"
コマンド ライン エイリアスが追加されました: "llvm-readtapi"
コマンド ライン エイリアスが追加されました: "llvm-reduce"
コマンド ライン エイリアスが追加されました: "llvm-remarkutil"
コマンド ライン エイリアスが追加されました: "llvm-rtdyld"
コマンド ライン エイリアスが追加されました: "llvm-sim"
コマンド ライン エイリアスが追加されました: "llvm-size"
コマンド ライン エイリアスが追加されました: "llvm-split"
コマンド ライン エイリアスが追加されました: "llvm-stress"
コマンド ライン エイリアスが追加されました: "llvm-strings"
コマンド ライン エイリアスが追加されました: "llvm-strip"
コマンド ライン エイリアスが追加されました: "llvm-symbolizer"
コマンド ライン エイリアスが追加されました: "llvm-tblgen"
コマンド ライン エイリアスが追加されました: "llvm-tli-checker"
コマンド ライン エイリアスが追加されました: "llvm-undname"
コマンド ライン エイリアスが追加されました: "llvm-windres"
コマンド ライン エイリアスが追加されました: "llvm-xray"
コマンド ライン エイリアスが追加されました: "lto-dump"
コマンド ライン エイリアスが追加されました: "mac2unix"
コマンド ライン エイリアスが追加されました: "mingw32-make"
コマンド ライン エイリアスが追加されました: "modularize"
コマンド ライン エイリアスが追加されました: "nasm"
コマンド ライン エイリアスが追加されました: "ndisasm"
コマンド ライン エイリアスが追加されました: "ninja"
コマンド ライン エイリアスが追加されました: "nm"
コマンド ライン エイリアスが追加されました: "not"
コマンド ライン エイリアスが追加されました: "nvptx-arch"
コマンド ライン エイリアスが追加されました: "obj2yaml"
コマンド ライン エイリアスが追加されました: "objcopy"
コマンド ライン エイリアスが追加されました: "objdump"
コマンド ライン エイリアスが追加されました: "opt"
コマンド ライン エイリアスが追加されました: "optscript"
コマンド ライン エイリアスが追加されました: "pexports"
コマンド ライン エイリアスが追加されました: "pp-trace"
コマンド ライン エイリアスが追加されました: "ranlib"
コマンド ライン エイリアスが追加されました: "readelf"
コマンド ライン エイリアスが追加されました: "readtags"
コマンド ライン エイリアスが追加されました: "reduce-chunk-list"
コマンド ライン エイリアスが追加されました: "sancov"
コマンド ライン エイリアスが追加されました: "sanstats"
コマンド ライン エイリアスが追加されました: "size"
コマンド ライン エイリアスが追加されました: "split-file"
コマンド ライン エイリアスが追加されました: "strings"
コマンド ライン エイリアスが追加されました: "strip"
コマンド ライン エイリアスが追加されました: "UnicodeNameMappingGenerator"
コマンド ライン エイリアスが追加されました: "unix2dos"
コマンド ライン エイリアスが追加されました: "unix2mac"
コマンド ライン エイリアスが追加されました: "verify-uselistorder"
コマンド ライン エイリアスが追加されました: "vsyasm"
コマンド ライン エイリアスが追加されました: "wasm-ld"
コマンド ライン エイリアスが追加されました: "widl"
コマンド ライン エイリアスが追加されました: "windmc"
コマンド ライン エイリアスが追加されました: "windres"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-c++"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-g++"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-gcc"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-gcc-14.2.0"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-gcc-ar"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-gcc-nm"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-gcc-ranlib"
コマンド ライン エイリアスが追加されました: "x86_64-w64-mingw32-gfortran"
コマンド ライン エイリアスが追加されました: "yaml2obj"
コマンド ライン エイリアスが追加されました: "yaml-bench"
コマンド ライン エイリアスが追加されました: "yasm"
コマンド ライン エイリアスが追加されました: "ytasm"
インストールが完了しました
これでg++
コマンドなどが使えるようになる。
もしMake単体が欲しければ、ezwinports:make、GnuWin32:Makeあたりだろうか。ezwinportsの方が最新のVersionではあった。
FireFox
winget search firefox
と実行するとESRとかDeveloper Editionとか色々と引っ掛かるけれど、普通に使用するならIDがMozilla.Firefoxのものでよさそう。
ブラウザに関して個人的には何となくChromeやEdgeではなくFireFox推しです。FalkonやMinといったニッチなブラウザも使用してみたかったのだけど、Androidでは使えなかったので断念。
PS C:\Users\dorayaki> winget search Mozilla.Firefox -e
名前 ID バージョン ソース
--------------------------------------------------
Mozilla Firefox Mozilla.Firefox 134.0.1 winget
PS C:\Users\dorayaki> winget install Mozilla.Firefox -e
Windows Terminal
WindowsのCUIはWindows Terminalの時代みたいですね。下図の通り公式で書かれているようにインストール。
PS C:\Users\dorayaki>winget install --id Microsoft.WindowsTerminal -e
Windowsターミナルを起動した際に実行されるのがWindows PowerShellになっていたら、PowerShellに変えておこう。
「Windows Terminalって何やねん、コマンドプロンプトとかPowerShellと何が違うんや」と思って探して読んだのが下記の記事。いまいちシェルとターミナルの違いとか分かっていなかったので助かった。
Neovim
エディタは特に拘りが無ければVisual Studio Codeで良いとは思っている。でもVimってカッコいいよね、という心の声に負けて最近Vimの勉強中。ワタシヴィムゼンゼンワカラナイ
PS C:\Users\dorayaki>winget install Neovim.Neovim
Git
ソフトウェア開発をするならGitは必要じゃろう。
PS C:\Users\dorayaki>winget install --id Git.Git -e --source winget
Mery
最近、ただのテキストやMarkdownを書く時に使っている。その内、小説でも書こうかな。
PS C:\Users\dorayaki>winget install --id Kuro.Mery.Beta