Scoop とは
ScoopはWindows用のパッケージ管理ツールです。
Scoopを導入することでUbuntuの apt
、RHLE/CentOSの yum
、macの brew
のようなことができるようになります。
Windowsにおけるツール類のインストール作業コストはかなり高いのですが、Scoopを入れることにより、各種モジュールをコマンド一発でインストールすることが可能になります。
その際には依存モジュールも自動的にインストールしてくれます。
例えばGit
(Git for Windows)をScoopでインストールする場合、 scoop install git
の一文だけで完了します。
公式サイトを探してインストーラをダウンロードしてきたり、インストールオプションをダイアログで選択する手間が省け、再現性のある環境構築が可能です。
また、Scoopでインストールされるモジュールは、個人フォルダ内に配置されるため管理者権限が不要だったり、アンインストールも(基本的には)モジュールの配置フォルダを消すだけなので、環境を比較的綺麗に維持できます。
一応バージョンコントロールも出来ますが、ちょっと癖があります。
必要要件
ScoopをインストールするにはPowerShell 5と.Net Framework 4.5以上が必要になります。
Windows 10を使っている限りは、この要件を満たしています。
なお、インストール用のスクリプトをダウンロードしてくるため、インターネットへの接続が必要になります。
Scoopのインストール
Scoopをインストールするには上記の要件を満たした上で、PowerShellをから下記のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
ポリシー変更のために以下のメッセージが表示されるので Y
を押してください。
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the
about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170.
Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
以下のようなメッセージが出たら、インストールは完了です。
Initializing...
Downloading scoop...
Extracting...
Creating shim...
Downloading main bucket...
Extracting...
Adding ~\scoop\shims to your path.
'lastupdate' has been set to '2020-08-19T11:27:12.6461118+09:00'
Scoop was installed successfully!
Type 'scoop help' for instructions.
Scoopを使ったGitのインストール
Scoopを利用して、インストール作業を行ってみます。
今後の作業で必要になるので、手始めに Git
をインストールしておきます。
Scoopでは基本的に scoop install
でモジュールのインストールを行います。
Git
をインストールするには以下のコマンドを実行してください。
scoop install git
下記のような表示が出て、インストールが実行されます。
Installing '7zip' (19.00) [64bit]
7z1900-x64.msi (1.7 MB) [===================================================================================================================================] 100%
Checking hash of 7z1900-x64.msi ... ok.
Extracting 7z1900-x64.msi ... done.
Linking ~\scoop\apps\7zip\current => ~\scoop\apps\7zip\19.00
Creating shim for '7z'.
Creating shortcut for 7-Zip (7zFM.exe)
'7zip' (19.00) was installed successfully!
Installing 'git' (2.28.0.windows.1) [64bit]
PortableGit-2.28.0-64-bit.7z.exe (44.7 MB) [================================================================================================================] 100%
Checking hash of PortableGit-2.28.0-64-bit.7z.exe ... ok.
Extracting dl.7z ... done.
Linking ~\scoop\apps\git\current => ~\scoop\apps\git\2.28.0.windows.1
Creating shim for 'git'.
Creating shim for 'gitk'.
Creating shim for 'git-gui'.
Creating shim for 'tig'.
Creating shim for 'git-bash'.
Creating shortcut for Git Bash (git-bash.exe)
Creating shortcut for Git GUI (git-gui.exe)
Running post-install script...
'git' (2.28.0.windows.1) was installed successfully!
Git
をインストールする過程で依存モジュールとして 7zip
もインストールされます。
(7zip
は圧縮解凍ソフトとしては非常に強力ですのでオススメです)
なお、Scoopでインストールされたモジュールはデフォルトでは %userprofile%\scoop\apps
に配置されます。
また、%userprofile%\scoop\shims
にPATHが通されており、ここに実行用のスクリプトが配置されています。
GUIのあるようなものは下図のようにWindowsメニューのScoop Apps
内にショートカットが作成されます。
ダウンロードの高速化 (マルチセッション対応)
aria2
をインストールすると、Scoopにおけるファイルのダウンロードがマルチセッションになり、効率的にダウンロードできるようになります。
導入しておくことをおすすめします。
scoop install aria2
以下のような表示が出ればインストール完了です。
aria2は自動的に有効化され、以降の操作で利用されます。
Installing 'aria2' (1.35.0-1) [64bit]
aria2-1.35.0-win-64bit-build1.zip (2.1 MB) [==================================================================] 100%
Checking hash of aria2-1.35.0-win-64bit-build1.zip ... ok.
Extracting aria2-1.35.0-win-64bit-build1.zip ... done.
Linking ~\scoop\apps\aria2\current => ~\scoop\apps\aria2\1.35.0-1
Creating shim for 'aria2c'.
'aria2' (1.35.0-1) was installed successfully!
bucketの追加と Google Chromeのインストール
私がWindows環境を立ち上げて一番最初に行うことは Google Chrome
をインストールすることです。
これをScoopを使ってやってみます。
Google Chromeは scoop install
でインストール可能ですが、そのままではインストールすることができません。
Scoopには bucket
という概念があり、今までインストールした Git
や aria2
などの基本コマンドは main
というbucketに含まれてています。
main bucketに含まれているモジュールはデフォルトでインストール可能です。
まずはGoogle Chromeがどのbucketに含まれているかを探します。
以下のコマンドを実行することで、モジュールを検索します。
scoop search googlechrome
コマンドを実行すると以下のように表示されます。
Results from other known buckets...
(add them using 'scoop bucket add <name>')
'extras' bucket:
bucket/googlechrome-beta
bucket/googlechrome-canary
bucket/googlechrome-dev
bucket/googlechrome-portable
bucket/googlechrome
'extras' bucket:
という部分が、モジュールを含んでいるbucketになります。
Google Chromeの場合、 extras
というbucketに含まれていることになります。
そこで、このextras bucketを利用できるようにするために、以下のコマンドを実行してbucketの追加を行います。
scoop bucket add extras
以下の表示が出ればbucketの追加は成功です。
Checking repo... ok
The extras bucket was added successfully.
なお、bucketを追加するためには Git
が必要になるため、事前に Git
をインストールしてください。
(本手順ではインストール済みです)
他にどのようなbucketがあるかは、以下を参照してください。
【Known application buckets - GitHub】
extras bucketの追加が完了したら、scoop install
コマンドでGoogleChromeをインストールします。
scoop install googlechrome
以下の表示が出れば、インストールは完了しています。
Running installer script...
Linking ~\scoop\apps\googlechrome\current => ~\scoop\apps\googlechrome\85.0.4183.83
Creating shim for 'chrome'.
Creating shortcut for Google Chrome (chrome.exe)
'googlechrome' (85.0.4183.83) was installed successfully!
なお、インストールされたGoogle Chromeを実行するにはコマンドプロンプトまたはPowerShellのコンソールから chrome
と打つか、Windowsメニューの「Scoop Apps」内のショートカットから実行することができます。
VisualStudio Codeをインストールする
続いてScoopでVisualStudio Code(以下VSCode)をインストールします。
VSCodeも extras
に含まれているので、事前にbucketの追加が必要です。
(本手順では追加済みです)
scoop install vscode
インストールが完了すると、以下のようなメッセージが表示されます。
Download: (OK):download completed.
Checking hash of dl.7z ... ok.
Checking hash of vscode-install-context.reg ... ok.
Checking hash of vscode-uninstall-context.reg ... ok.
Extracting dl.7z ... done.
Linking ~\scoop\apps\vscode\current => ~\scoop\apps\vscode\1.48.2
Creating shim for 'code'.
Creating shortcut for Visual Studio Code (code.exe)
Running post-install script...
'vscode' (1.48.2) was installed successfully!
Notes
-----
Add Visual Studio Code as a context menu option by running: "C:\Users\hogehoge\scoop\apps\vscode\current\vscode-install-context.reg"
上記メッセージの最後にコンテキストメニューに関するNotesが表示されています。
インストールした状態ではエクスプローラのコンテキストメニューからVSCodeを実行することが出来ないため、コンテキストメニューを追加したい場合はメッセージの指示に従いScoopによって提供されているレジストリファイル vscode-install-context.reg
をレジストリにマージしてください。
レジストリファイルの保存先はメッセージを確認してください。
(本例では C:\Users\hogehoge\scoop\apps\vscode\current\
になります)
このように、scoop install
後に操作が必要な場合はメッセージが表示されますので、見逃さないようにしてください。
環境構築スクリプト
上記の一連の操作 + α をスクリプト化してみました。
スクリプト化しておくことで、常に同じ環境を作成することが可能になります。
いちいちインストーラをダウンロードしてきたり、ダイアログ操作でインストールオプションを指定する必要はありません。
例えばチーム開発で同じ環境に揃えたい場合や、繰り返し行うサンドボックス内でのテスト環境構築などで非常に有効です。
##################################################
# install Scoop
##################################################
# インストールディレクトリの設定 (user)
#$env:SCOOP='D:\Applications\Scoop'
#[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
# インストールディレクトリの設定 (global)
#$env:SCOOP_GLOBAL='D:\GlobalScoopApps'
#[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
try {
# Scoopのインストール確認
get-command scoop -ErrorAction Stop
}
catch [Exception] {
# Scoopのインストール
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
}
# install basic module
scoop install aria2
scoop install git
scoop install sudo
# add bucket
scoop bucket add extras
scoop bucket add versions
# Scoopのインストールディレクトリの取得
$SCOOP_ROOT = if ($env:SCOOP) {$env:SCOOP} else {"$home\scoop"}
##################################################
# install Google Chrome
##################################################
scoop install googlechrome
##################################################
# install vscode
##################################################
scoop install vscode
reg import $SCOOP_ROOT\apps\vscode\current\vscode-install-context.reg # add context menu
##################################################
# install slack
##################################################
scoop install slack
##################################################
# install VC Runtime
##################################################
scoop install vcredist2019
本スクリプトでは、まずScoopコマンド確認し、確認できない場合はScoopのインストールを行います。
それ以前のコメントアウト部分は、ScoopおよびScoopによってインストールされるモジュールのインストール先を指定するための記述になります。
必要に応じて変更してください。
Scoopのインストールが完了したら、必要なモジュールをインストールしています。
aria2
、 git
、sudo
をインストールした後に extras bucket
を追加して、 Google Chrome
、VSCode
、Slack
、VC Runtime
をインストールしています。
なお scoop install
コマンドは、何も指定しない場合は最新バージョンを取得してきます。
従って、上記で提示したスクリプトでは実行するタイミングにより異なるバージョンがインストールされてしまい、100%再現性のある環境を構築できません。
バージョンコントロールもできるのですが、ちょっと癖があるので別の機会で記述したいと思います。