Scoop
Windows 向けパッケージ管理 Scoop(スクープ)についてまとめています。
macOS でいう Homebrew、他の OS だと apt・yum・dnf などに該当します。
PowerShell の操作が多い人にはおすすめです。
目次
公式・関連サイト
- Scoop
- lukesampson/scoop | GitHub
- Documentation - ドキュメント (GitHub Wiki)
- ScoopInstaller | GitHub
- bucket | GitHub - 管理パッケージ一覧
Scoop のインストール
PowerShell より次を実行します。
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
エラーになる場合は、次を実行した後、再度行ってみて下さい。
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
以下、パッケージの例として Hugo にしています。
公式サイトにもインストール方法として公開されています。
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
PHP
や Java
は別途 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 では現在パッケージとして nodejs
と nodejs-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)
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 を再インストールできるようになります。