前提
この記事は下記のような方にお勧めします。
- WindowsUpdateが適用されているWindows10で開発を行っている
- PowerShellもちょっと興味がある
- ツールのインストールが面倒に感じる
"Scoop"というツール
Windowsで開発をなさっている皆さん、"Scoop"というコマンドラインツールをご存知ですか?
Windowsでも開発時にはコマンドラインのツールを使う場面が出てきますが、Windows上ではブラウザからGitHubなどの公式サイトを検索して、インストーラーやZipをダウンロードしてドキュメントの通りにパスや環境変数を設定して…と非常に手間がかかります。それを解決する手段として有力なのが、"Scoop"というツールです。
"Scoop"はWinndows上でDebianのapt-getやRedHatのyumのようなパッケージ管理を行おう、というツールです。1
例えばGitをインストールする場合、コマンドプロンプトまたはPowerShellのコンソールから、scoop install git
と入力するだけでダウンロードからインストール、標準的な初期設定を完了してくれます。
ふと普段は使わないツールが必要になったとき、この手軽さは非常に捗ります。
すぐに使いたい人のためのScoopインストール
ScoopのインストールはPowerShellのスクリプトを使用します。
Windowsキーでスタートメニューを出して、PowerShellを起動します。2
プロンプトが表示されたら、以下のように入力してみます。
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
これだけでダウンロードとインストールが行われます。
何やら警告が表示される場合3は、以下のコマンドを実行します。
# スクリプトを実行できるようにする
set-executionpolicy remotesigned -scope CurrentUser
このコマンドはPowerShellのスクリプトの実行権限を変更します。こちらの記事が詳しいので、参照してみてください。
確認プロンプト表示されますので、y
を押してからもう一度、前述のコマンドを実行します。
こだわりのある人のScoopのインストールのオプション
Scoopと管理されているアプリのインストール場所
上記のデフォルトではScoop本体とアプリはC:\Users\ユーザー名\scoopにインストールされます。インストール前にあらかじめ指定しておくことで、他の場所にインストールすることも可能です。
#code内の角括弧をエスケープしようとしたらバックスラッシュが必要でした。
#本来のコマンドでは行頭のバックスラッシュは必要ありません。
\[environment]::setEnvironmentVariable('SCOOP','D:\Applications\Scoop','User')
$env:SCOOP='D:\Applications\Scoop'
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
環境変数にパスを指定することで、Scoopのインストール場所を変更しています。
基本的な使い方
コマンドプロンプトからもPowershellからも利用できますが、コンソールの使いやすさからPowerShellを利用するのがおすすめです。
基本的にはscoop コマンド名 オプション
の構文で使用します。
例えば、最新版のGitをインストールしたい場合は以下の一文で完了します。
PS C:\Users\user> scoop install git
これだけでもScoopが便利なのは実感できますが、Scoopで名前だけ知っているアプリをインストールするような場合を想定して、コマンドを流れにそって説明していきます。
ヘルプコマンド
scoop help
で以下のようにヘルプを表示できます。
PS C:\Users\user> scoop help
Usage: scoop <command> [<args>]
Some useful commands are:
alias Manage scoop aliases
bucket Manage Scoop buckets
cache Show or clear the download cache
checkup Check for potential problems
cleanup Cleanup apps by removing old versions
config Get or set configuration values
create Create a custom app manifest
depends List dependencies for an app
export Exports (an importable) list of installed apps
help Show help for a command
home Opens the app homepage
info Display information about an app
install Install apps
list List installed apps
prefix Returns the path to the specified app
reset Reset an app to resolve conflicts
search Search available apps
status Show status and check for new app versions
uninstall Uninstall an app
update Update apps, or Scoop itself
virustotal Look for app's hash on virustotal.com
which Locate a shim/executable (similar to 'which' on Linux)
Type 'scoop help <command>' to get help for a specific command.
最後に表示されているように4、各コマンドのヘルプも表示できます。
アプリケーションの検索
scoop search アプリ名
でScoopが対応しているアプリを検索できます。部分一致で検索され、所属するバケットも表示されます。
例えばscoop search ssh
を実行すると以下のような結果が得られます。
PS C:\Users\user> scoop search ssh
'extras' bucket:
processhacker (2.39)
winsshterm (2.5.2)
'main' bucket:
git-with-openssh (2.21.0.windows.1)
gow (0.8.0) --> includes 'ssh.bat'
mls-software-openssh (8.0p1-2)
openssh (7.6p1)
ssh-copy-id (2015-03-22)
win32-openssh (7.9.0.0p1-Beta)
'extras'バケットに2種、'main'バケットにいくつか、見知った名前が並びます。
「バケット」については後述します。
アプリケーションの情報表示
scoop info アプリ名
でアプリの情報が表示できます。
例としてscoop info openssh
は以下のように表示されます。
PS C:\Users\user> scoop info openssh
Name: openssh
Version: 7.6p1
Website: https://www.openssh.com/
License: ISC (https://spdx.org/licenses/ISC.html)
Manifest:
C:\Users\user\scoop\buckets\main\bucket\openssh.json
Installed: No
Binaries:
findssl.sh.exe usr/bin/scp.exe usr/bin/sftp.exe usr/bin/ssh.exe usr/bin/ssh-add.exe usr/bin/ssh-agent.exe ssh-copy-id.exe usr/bin/ssh-keygen.exe usr/bin/ssh-keyscan.exe usr/bin/sshd.exe
公式サイトのアドレスやライセンス、同梱されるバイナリの一覧など、目的のアプリの情報が確認できます。
公式サイトのアドレスが表示されるのが個人的にはうれしい機能です。インストール済みのアプリの場合はInstalled:
にインストールされたフォルダが表示されます。
アプリのインストール
前述のように、scoop install アプリ名
でアプリをインストールすることができます。アプリに他のアプリへの依存性がある場合、それもダウンロードしてインストールしてくれます。
インストールされたアプリの一覧
scoop list
で、Scoopを通じてインストールされたアプリの一覧を見ることができます。
PS C:\Users\user> scoop list
Installed apps:
7zip 19.00
curl 7.64.0_2
git 2.21.0.windows.1
vagrant 2.2.4
vim 8.1.0540
インストールされたアプリのアップデート
インストールされているアプリをアップデートするためには、scoop update
で、Scoop自体を更新します。このとき、Scoopに登録されているアプリケーションのリポジトリーである「バケット」も更新されます。
以下は、scoop update
を実行したときの例です。
PS C:\Users\user> scoop update
Updating Scoop...
Updating 'main' bucket...
* 0b8f15e7 ant: Update to version 1.10.6 2 hours ago
* f461df00 jx: Update to version 2.0.100 3 hours ago
* f819e81b just: Update to version 0.4.3 7 hours ago
* 63a1e423 force: Update to version 0.26.3 11 hours ago
* 35786e27 aws: Update to version 1.16.154 13 hours ago
* 058470df nodejs: Update to version 12.2.0 15 hours ago
* a8fc75f0 fnproject: Update to version 0.5.77 15 hours ago
* cd197c23 bazel: Update to version 0.25.1 15 hours ago
* ff61bf2b jx: Update to version 2.0.99 16 hours ago
* a3ebb585 git-annex: Update to version 7.20190507 16 hours ago
* b3f8344c jx: Update to version 2.0.98 17 hours ago
* 14469baf jx: Update to version 2.0.97 18 hours ago
* 29a73fe6 jx: Update to version 2.0.96 19 hours ago
* caa45066 ngrok: hash fix close #37 close #38 19 hours ago
* 8ce8b4e0 exiftool: Update to version 11.40 20 hours ago
* 187bee7b jx: Update to version 2.0.95 22 hours ago
* 1951e061 ffmpeg-nightly: Update to version 20190507-e25bddf 24 hours ago
* 9d36936b jx: Update to version 2.0.93 25 hours ago
Scoop was updated successfully!
続けて、scoop status
で、インストールされているアプリの更新を確認します。5
PS C:\Users\user> scoop status
Scoop is up to date.
Updates are available for:
curl: 7.64.0_2 -> 7.64.1_1
vim: 8.1.0540 -> 8.1.1286
Everything is ok!
更新できるアプリが確認できたら、scoop update アプリ名
でアプリをアップデートします。
とりあえずすべてのアプリをアップデートしたい場合には、scoop update *
という使用法もあります。
アプリをアンインストールする
scoop uninstall アプリ名
でインストールされたアプリをアンインストールできます。
Scoop自体をアンインストールするときも、scoop uninstall scoop
です。
バケットについて
「バケット」はScoopで利用できるアプリを分類したリポジトリーです。初期状態では'main'バケットのみが利用可能となっています。もしも利用したいアプリが'main'バケットに存在しない場合には、scoop bucket add バケット名
で別のバケットを追加できます。
Scoopコミュニティで管理されているバケットは[buckets.json]か、scoop bucket known
コマンドから確認できます。
残念ながら、登録されているアプリを事前に知りたい場合には、今のところ[buckets.json]からそれぞれのリポジトリのbucketフォルダを確認するしかないようです。とはいえ、おおよそのアプリケーションは'extras'バケットを追加すれば見つけることができると思います。
[buckets.json]:https://github.com/lukesampson/scoop/blob/master/buckets.json
最後に
これで基本的なScoopの使用法は紹介できたかと思います。
コマンドラインだけで数多くのアプリのインストールを完了できるようになるのは魅力的です。また、Scoopでアプリを管理するときの肝となる「バージョン管理編」を公開 したいと考えています。 しました。