Windows 向けパッケージ管理 Scoop(スクープ)についてまとめています。

macOS でいう Homebrew、他の OS だと apt・yum・dnf などに該当します。
PowerShell の操作が多い人にはおすすめです。


目次


公式・関連サイト


Scoop のインストール

PowerShell より次を実行します。

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

エラーになる場合は、次を実行した後、再度行ってみて下さい。

Set-ExecutionPolicy RemoteSigned -scope CurrentUser

以下、パッケージの例として Hugo にしています。

 Hugo
🎈 Hugo | ふうせん🎈 FU-SEN

公式サイトにもインストール方法として公開されています。

 Scoop (Windows) - Install Hugo | Hudo Docs


パッケージの検索

パッケージを探す場合は scoop search パッケージ名 とします。

scoop search hugo

 bucket - ScoopInstaller/Main | GitHub


Bucket の種類

初期設定では Main のみが検索の対象ですが、
他にも Bucket を追加し、対象パッケージを追加できます。

Main

 bucket - ScoopInstaller/Main | GitHub

デフォルト状態で検索・インストールできるパッケージです。

Extras

scoop bucket add extras

Main の基準から外されているアプリがパッケージ管理されています。
Main と Extras だけでも多くのパッケージを見つけられるでしょう。

 bucket - lukesampson/scoop-extras | GitHub

管理パッケージ数が 1000 を超えているため、
GitHub のファイル一覧に表示しきれていない事にご注意下さい。

Versions

scoop bucket add versions

Main から特定バージョンをインストールできます。

 bucket - ScoopInstaller/Versions | GitHub

PHPJava は別途 Bucket がありますが、
PHP7 系は Versions でも管理されているので、 Versions のみで良いでしょう。

その他

個々に Bucket を生成できるため、様々な Bucket が公開されています。
目的の Bucket が存在するかもしれません。

 Scoop buckets by Github score | scoop-directory


パッケージのインストール

scoop install パッケージ名 でインストールします。

scoop install hugo

特定バージョンのインストール

パッケージ名から@ に続けてバージョンを指定します。
複数バージョンをインストール可能です。

scoop install hugo@0.101.0

scoop reset を用いてバージョンを切り替えます。

scoop reset hugo@0.101.0

@バージョン がない場合、最新バージョンの切り替えになります。

scoop reset hugo

新しいバージョンが公開されているのに、Scoop パッケージが更新されていない場合、
新しいバージョンを指定してインストールし、すぐに使用する事が可能です。

node.js のインストール

Scoop では現在パッケージとして nodejsnodejs-lts が存在します。
nodejs は最新版を更新しますが、一部動作で問題が発生する場合があります。
それが困る場合、LTS 版として公開されている nodejs-lts を使用して下さい。

Python のインストール

pip が必要な場合、PATH に追加が必要です。インストール時に表示されています。
バージョン番号の代わりに current を使用できます。
current を使用すると、Python の更新で PATH を変更する必要がなくなります。


パッケージの更新

固有のパッケージを更新する場合は scoop update パッケージ名 とします。

scoop update hugo

Scoop 管理のパッケージすべてを更新する事もできます。

scoop update *

このコマンドは一度実行した後 3 時間は同じコマンドを入れても更新しなくなります。
適度に時間を置いて実行して下さい。

Python の更新

pip でパッケージをインストールした場合、pip を含めてパッケージが動作しなくなります。
まず pip を現在の Python バージョンに合わせて再インストールします。

python -m pip install --upgrade --force-reinstall pip

続いて必要なパッケージを更新します。
例えば 🎈 MkDocs 本体は次のとおりです。

pip install --upgrade --force-reinstall mkdocs

パッケージのアンインストール

scoop uninstall パッケージ名 とします。

scoop uninstall hugo

古いパッケージのアンインストール

scoop cleanup を使うと古いバージョンを削除します。

scoop cleanup hugo

ユーザー\scoop\apps\パッケージ\バージョン
参照していない不要なバージョンを直接削除する事も可能です。
ユーザー\scoop\cache 内にも パッケージ#バージョン#~ のファイルがあるので、
こちらも古いバージョンのファイルを削除できます。
古いバージョンが貯まってくるので、適度に掃除して下さい。


Scoop コマンド一覧

 Commands | GitHub lukesampson/scoop Documentation(Wiki)


Q&A

Chocolatey との違いは?

 Chocolatey Comparison | GitHub lukesampson/scoop Documentation(Wiki)

🍫 Chocolatey

Windows にはパッケージ管理として Chocolatey も存在します。

Chocolatey は通常管理者モードで使用する必要があります。
多くのパッケージが存在しますが、アプリ自身が自動更新するアプリも含まれ、
アプリと Chocolatey が二重に更新しようとする場合があります。
またアプリ数が多く、メンテナーも多い状況で、アプリによっては更新が遅かったり、
最悪しばらく更新されていないパッケージも存在します。

Scoop は基本的にユーザー権限で使用ができるので、
会社使用の制限されたパソコンでもインストールして使用する事が可能です。
アプリは主にインストーラーを必要としないポータブル版が採用されています。
アプリ数は Chocolatey より少ないですが、
最新パッケージを維持されているアプリが多いです。

サイト管理者は当初 Chocolatey を用いていましたが、
特にパッケージの更新・維持に不満があり、Scoop に変更しました。

すでにインストールされているパッケージを Scoop 管理にできますか?

scoop フォルダ内で管理されるようになりますので、
一度削除してから Scoop でインストールしなおす事になります。

インストールしたアプリが見つかりません。どこにありますか?

デフォルトでは ユーザーフォルダ\scoop\apps\ 内にパッケージ、
ユーザーフォルダ\scoop\shims\ に実行ファイル・スクリプトが入っています。
PATH は shims\ に通してあり、更にパッケージによって個別に設定しています。

Git Bash で使用できますか?

はい。Git をインストールした後は Git Bash でも動作可能です。

ただし scoop update * など、動作がおかしくなるコマンドがあります。
* などの記号を含む部分を '~' で囲って下さい。

scoop update '*'

Update の動作に問題があります。

例えば次のメッセージが出た場合、 extras Bucket 内で問題が発生しています。

Updating 'extras' bucket...
error: Your local changes to the following files would be overwritten by merge:

この下には具体的なパッケージファイルが表示されていますが、それを無視して
該当するバケットを一度削除し、追加しなおすのが簡単な改善手段です。
上では extras Bucket なので、次のコマンドになります。

scoop bucket rm extras
scoop bucket add extras

2021年12月現在、 extras Bucket は特によく発生しています。

パッケージのインストール・更新に失敗しました。

例えば Extras Bucket に入っている openoffice が失敗しているとします。
2021年2月8日、運営者が実際にインストール・更新の失敗を経験しています。

一度アンインストールし、古いバージョンがインストールできるか試します。
2.1.9 が失敗したので、その前 2.1.8 でインストールを試します。

scoop uninstall openoffice
scoop install openoffice@2.1.8

固有バージョンで失敗する場合は、ハッシュ値の違いで発生する事が通常です。
古いバージョンでも発生する場合はファイル構成の違いで
スクリプトが動作しなくなっているケースなどがあります。

今回は後者のケースで、古いバージョンもインストールに失敗しました。
一度アンインストールでフォルダをきれいにし、
すぐに必要な場合は一時的に他の方法でインストールを代用します。

scoop uninstall openoffice

古いバージョンでインストールできた場合はこのバージョンが更新されないようにします。

scoop hold openoffice

次のコマンドでバージョン固定を解除し、更新の対象にできます。

scoop unhold openoffice

可能であればこの失敗情報を元に提供している Bubket の issues に連絡して下さい。
バージョン固有の場合は openoffice@2.1.9 などとします。
現在 open になっている issue を参考にして下さい。
今回はインストールした時の表示をそのまま貼り付けました。
用語に特別なところがなければ、日本語のまま貼り付けても大丈夫でしょう。

 openoffice: Installation and update fails #5635 | GitHub lukesampson/scoop-extras

scoop のコマンド実行がおかしくなっています。

scoop フォルダを削除し、再インストールします。
パッケーシも消えてしまうので、予め確認します。

dir ~\scoop\apps

その後 scoop フォルダを削除します。

del ~\scoop\ -Force

これで Scoop を再インストールできるようになります。