はじまり
あれっ、この前も同じような記事を書かなかった?
俺は日々進化している・・・。
Windowsへのインストール作業を楽にしたい。
最近、PCを新しくしたのですが、Windowsを新しくセットアップした後、ソフトウェアのインストールする作業が本当に面倒くさかったです。マウスとAlt + Tabを忙しなく動かして、10年ぐらい前にもこんな作業をやっていたような気がします。なんて原始的なんだ。
・・・という書き出しで、以前にも同じようなWindowsのパッケージ管理ツールに関する記事を書きました。なんて節操がないことをしているんだ・・・僕は・・・。
しかし、パッケージ管理マネージャーをScoopからChocolateyに変えたのには意味があります。そのことに関して今回は取り上げていきたいと思います。
Chocolateyとは
ChocolateyはWindows用のパッケージマネージャーで、Linuxのapt
やyum
のようなツールです。コマンドラインを使用してソフトウェアのインストール、アップデート、アンインストールが簡単に行えるため、効率的な作業環境の構築が可能です。
主な特徴としては以下が挙げられます。
- 数千以上のパッケージが利用可能
- コマンド一つでインストールが完了
- 複数のソフトウェアを一括管理できる
Chocolateyの方がパッケージの数が多い。
ScoopよりもChocolateyの方がインストール可能なパッケージの数が多いです。2024-01-06時点におけるパッケージの数は以下のようになっています。Chocolateyが約2倍多いですね。
- Scoop:5,776
- Chocolatey:10,360
そのため、Scoopではインストールできず、Chocolateyではインストール出来るパッケージがあったりします。個人的に見つけたものは以下のパッケージです。ニッチですが。
- Sound Blaster Command
- NVidia Display Driver(Scoopにあるものは更新年月日が2022年ぐらいで止まっていた。)
以下に、Scoopでインストール出来る一部のパッケージおよびChocolateyでインストール出来る一部のパッケージを照らし合わせた表を載せておきます。
name | is_available_on_scoop | is_available_on_choco |
---|---|---|
7zip | true | true |
ffmpeg | true | true |
git | true | true |
libwebp | true | false |
exiftool | true | true |
steam | true | true |
discord | true | true |
googlechrome | true | true |
everything | true | true |
gimp | true | true |
vlc | true | true |
msiafterburner | true | true |
QuickLook | true | true |
vscode | true | true |
epic-games-launcher | true | true |
PPSSPP | true | true |
Sound Blaster Command | false | true |
NVidia Display Driver | false | true |
Chocolateyで利用出来るパッケージはここで確認することが出来ます。
ScoopだとGitHub Actionsが上手く通らない。
そして、Scoopをパッケージ管理マネージャーとして操を立てるという企みは一夜にして崩れ去った理由としては、GitHub Actionsが成功しなかったことが挙げられます。
なぜかは分かりませんが、Scoopのパッケージをインストールして、その後にScoopを使ってその他のパッケージをインストールしようとしても「scoop」のコマンド名の解決が為されず、エラーになってしまうのです。
.github/workflows/install_test.yml
name: InstallTest
on: [push]
jobs:
windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install PSScriptAnalyzer module
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module PSScriptAnalyzer -ErrorAction Stop
- name: Get list of rules
shell: pwsh
run: |
Get-ScriptAnalyzerRule
- name: Install required packages
shell: pwsh
run: choco install -y git
- name: Install dotfiles
shell: pwsh
run: install_scripts/dotsinstaller.ps1 install
- name: scoop list
shell: pwsh
run: scoop list
dotsinstaller.ps1の処理の一部であるこのスクリプトでScoopをインストールします。しかし、この後にscoop list
を実行するとワークフローが失敗します。Cドライブにインストールしようが、Dドライブにインストールしようが失敗してしまいました。
$firstDir = (Get-Location).Path
# Set-Location "D:\"
Set-Location "C:\"
Get-Location
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
Set-Location $firstDir
実際に詰まる時のエラーメッセージはこんな感じです。scoopが認識されていないらしい。
scoop: D:\a_temp\75f2a30e-f141-4938-9284-342f2c9b5e11.ps1:2
Line |
2 | scoop list
| ~
| The term 'scoop' is not recognized as a name of a cmdlet, function, script file, or executable program.
| Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
もう少し手前の警告メッセージでは、実行ポリシーの設定に失敗しているようです。しかし、普通にローカルのWindowsマシンではインストールできているんですよね・・・。分からん・・・。
Path
C:\
Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by
a policy defined at a more specific scope. Due to the override, your shell will retain its current effective
execution policy of Unrestricted. Type “Get-ExecutionPolicy -List” to view your execution policy settings. For more
information please see “Get-Help Set-ExecutionPolicy”.
At D:\a\dotfiles\dotfiles.config\scoop\init.ps1:6 char:1
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser …
- ~~~~~~~~~~~~~~~~~
- CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
- FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
Initializing…
Downloading…
Creating shim…
Adding ~\scoop\shims to your path.
Scoop was installed successfully!
Type ‘scoop help’ for instructions.
そんなトラブルに見舞われた後、Scoopの代わりにChocolateyをパッケージのインストールに使用したらワークフローが上手く通りました。
GitHub公式の解説でも、WindowsでGitHub Actionsのランナーを走らせる時には、Chocolateyを使ってパッケージをインストールするように推奨されています。
Chocolateyをインストールする。
PowerShellを管理者権限で起動して、Chocolateyをインストールします。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Chocolateyがインストールされていればバージョンを確認できます。
choco -v
パッケージをインストールする。
それではChocolateyでパッケージをインストールしていきます。例えば、以下のコマンドでGoogle Chromeをインストールできます。
choco install googlechrome -y
ps1ファイルに列挙してインストールする。
先程の方法だとtxtファイルを配置しなければなりませんが、こっちの方法の方がファイルを配置するのでもファイルからコピペして貼り付けるでもインストール出来るので楽かもしれません。
インストールしたいアプリをテキストファイルにまとめます。たとえば、「InstallWithMain.ps1」というファイルを作って以下の内容を記述するか、PowerShellコンソール上で以下のコマンドを全て実行します。
# cui
choco install git
choco install 7zip
choco install curl
choco install exiftool
choco install ffmpeg
# gui
choco install discord
choco install everything
choco install gimp
choco install googlechrome
choco install msiafterburner
choco install obs-studio
choco install quicklook
choco install vlc
choco install vscode
# game
choco install steam
choco install epicgameslauncher
choco install nvidia-display-driver
choco install soundblaster-command
その他のchocoコマンド
インストール済みパッケージをアップデートします。
choco upgrade googlechrome -y
全てのインストール済みパッケージをアップデートします。
choco upgrade all -y
インストール時に「.light」サフィックスや「.portable」サフィックスを付けることができるパッケージもあったりします。
choco install openssl.light
choco install everything.portable
インストール済みパッケージをリスト形式で表示します。
choco list
インストール済みパッケージをアンインストールします。
choco uninstall googlechrome -y
まとめ
今回は、Chocolateyを使ってWindowsにアプリケーション・パッケージを楽にインストールするための方法の紹介しました。
こちらのパッケージ管理マネージャーを使えば、Windowsにインストールするパッケージをおおよそ一括管理出来るのと同時に、GitHub Actionsでインストールテストを行うことも出来ます。
それでは快適な環境構築を!
PC作業のお供に
Amazonベーシック マウスパッド ゲーム用 Mサイズ ブラック 正方形
Logicool G 8000Hz 左右対称 PRO X SUPERLIGHT 2 ワイヤレス ゲーミングマウス G-PPD-004WL-BKd 44K DPI 8K ポーリングレート 軽量 60g LIGHTFORCE ハイブリッドスイッチ LIGHTSPEED USB Type-C 充電 国内正規品
PFU キーボード HHKB Professional Classic 英語配列/白
おしまい
インストールにけっこう時間が掛かるな・・・。
Windowsはかなり掛かるんだな・・・。
以上になります!
コメント