Chapter 01

パッケージマネージャ「scoop」のセットアップ

zetamatta
zetamatta
2021.06.17に更新
修正日 修正内容
Jun.17,2021 セクション「SSL/TLSのセキュリティーエラーが出る場合」を追加

scoopとは Windowsのパッケージマネージャの一つです。scoop がインストールされていると、有名なコマンドラインツールのインストールが scoop install bzip2 のようにワンコマンドでできたりします。この手のパッケージマネージャとしては他に NuGet や Chocolatey などがあります。

scoop の特徴として

  • 利用に管理者権限は不要!
  • 実行ファイルは ~\scoop\shims に集約され、環境変数 PATH の肥大化が抑制される
  • インストーラのセットアップが簡単
  • nyagos が公式レポジトリにある (Chocolatey にもあるけど)

などがあります。導入の手順は次のとおりです。

Windows 8.xや、古めの WindowsServer の場合

PowerShell のバージョンが古いので、そのままでは入らない場合があります。まずは Powershell を起動してバージョンを確認しましょう。

PS C:\Users\Administrator> Get-Host | Select-Object Version

Version
-------
4.0

Download Windows Management Framework 5.1 from Official Microsoft Download Center より、OS の種類に対応した、Windows Management Framework 5.1 をインストールしましょう。(要OS再起動)。

このダウンロードサイトでは、どの OS がどのファイルか親切に書いていないので、ファイル名から推測しかありません。どうやら、Win8.1AndW2K12R2-KB3191564-x64.msu が 64bit版の Windows8.1 と Windows 2012R2 サーバのようです(なお、間違っていてもちゃんとエラーが出るのでやり直せば大丈夫)

次のように、バージョンが表示されるようになれば Ok です。

PS C:\Users\Administrator> Get-Host | Select-Object Version

Version
-------
5.1.14409.1005

この後は、以下の「コマンドプロンプトが CMD.EXE の場合」に従ってください。

コマンドプロンプトが PowerShell の場合

公式サイト にあるとおり、

iwr -useb get.scoop.sh | iex

で scoop をインストールが始まります。これが失敗した場合、スクリプトの実行が許可されていないので、次のコマンドで許可を出してから、再実行します。

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex

さらに、ここでSSL/TSLのセキュリティーエラーが表示される場合は、後述のセクション「SSL/TSLのセキュリティーエラーが出る場合」を参照してください

コマンドプロンプトが CMD.EXE の場合

標準シェルが CMD.EXE なので、powershell からインストールスクリプトを実行します。スクリプトの実行許可はインラインで出しておきましょう。

$ powershell -ExecutionPolicy RemoteSigned "iwr -useb get.scoop.sh | iex"
Initializing...
Downloading scoop...
Extracting...
Creating shim...
Downloading main bucket...
Extracting...
Adding ~\scoop\shims to your path.
'lastupdate' has been set to '2020-01-26T20:56:49.1761305+09:00'
Scoop was installed successfully!
Type 'scoop help' for instructions.

このインストール手順によって、scoop のコマンドへのパスはシステムには設定されていますが、現在のコマンドプロンプトはまだ読み込んでいません。一旦コマンドプロンプトを終了して、再度起動すると、scoop コマンドが使えるようになります。

SSL/TLSのセキュリティーエラーが出る場合

iwr -useb get.scoop.sh | iex で次のようなエラーがでる場合があるようです。
(Windows 8.1 環境で確認)

PS C:\Users\zetamatta> iwr -useb get.scoop.sh | iex
iwr : 要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作
成できませんでした
発生場所 行:1 文字:1
+ iwr -useb get.scoop.sh | iex
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:Htt
   pWebRequest) [Invoke-WebRequest]、WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
   ll.Commands.InvokeWebRequestCommand

PowerShellのコマンドラインで、次のコマンドを発行して、TLS 1.2 を有効にすることで解消できるようです

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12