Help us understand the problem. What is going on with this article?

全Scoopコマンド解説 その1 ~使用頻度(高)~

はじめに

Windowsのインストーラー、Scoopのコマンド操作についてまとめてみました。

Scoopはいわゆるパッケージ管理ツールを行うCLIツールでmacOSでいうHomebrew的な存在です。
実際にHomebrewにインスパイアされて開発されており、同系ツールであるChocolateyから移行するユーザも増えてきました。

ただ、そんな状況にもかかわらず、Scoopのコマンドについては公式ドキュメントでも「scoop helpで詳細確認できます。」程度しか書かれておらず
helpを表示してもコマンドによって説明の粒度にムラがあり、半分くらいは構文程度の情報しか記載されていないものもあります。

そのため、ソースコードベースにコマンドの仕様をまとめ、以下3つの記事に分けて解説を載せることにしました。
これでもっとユーザ数、増えてもらえれば幸い。

# 記事リンク 使用頻度 Scoopサブコマンド
今回はココ→ 全Scoopコマンド解説 その1 ~使用頻度(高)~ help, search, bucket, install, list, info, status, update, uninstall
- 全Scoopコマンド解説 その2 ~使用頻度(中)~ home, cache, cleanup, hold, unhold, which, reset, checkup
- 全Scoopコマンド解説 その3 ~使用頻度(低)~ config, alias, create, depends, export, prefix, virustotal

※表中のサブコマンドの並びに沿って紹介していきます。

表記・用語について

解説中に使用している構文の表記方法やScoop用語については以下のようにしています。

構文の記号 説明
[xxx] xxxは省略可能
<xxx> 任意のxxx名。<app>なら任意のScoopアプリ名。<args>なら任意の引数。<command>なら任意のScoopサブコマンド名
regex 正規表現
<xxx> ... 任意の数の<xxx>が指定可能(=可変長引数)
Scoop用語 説明
Scoopアプリ Scoopでインストール可能なアプリ、または、インストール済みのアプリです。
Scoop Bucket 一連のScoopアプリを保持するパッケージリポジトリです。
リモートとローカルとで存在し、デフォルトではMain Bucketのみがローカルで使用可能となっています。
マニフェストファイル Scoopアプリのインストール方法やバージョン、ライセンスなどを記載したメタ情報ファイルです。

※ほかのScoop用語については本文中でその都度解説します。

インストール方法

Scoopの公式ページにある通りですが、念のためこちらでも記載しておきます。
以下、PowerShellコンソール上で実行してください。

前提条件としてはPowerShell 5以上であることと、.NET Framework 4.5が必要となります。
こちらの条件が仮に不足していた環境でも以下のコマンドを実行すれば、
それらの警告とアップグレードするためのリンクが表示されるようになっているため、気にせず2行目まで実行してみましょう。

インストール方法
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

# Scoop自身が内部でgitを使用するため、gitにPATHが通っていない環境は以下のコマンドでインストールする必要があります。
# 既にgitにPATHが通っている環境だとしてもScoop管理に移行して常に最新バージョンを使うようにするのがおススメです。
scoop install git

help

まずはhelpコマンドです。
こちらの存在さえ知っていれば、基本的な使い方は掴めます。

構文
scoop help <command>

ヘルプを表示します。
scoop helpでサブコマンドの一覧が表示され、scoop help ${サブコマンド名}でサブコマンド用のヘルプが表示されます。

# Scoop全体のヘルプを表示
scoop help
#=>Usage: scoop <command> [<args>]
#=>
#=>Some useful commands are:
#=>
#=>alias       Manage scoop aliases
#=>bucket      Manage Scoop buckets
#=>...
#=>Type 'scoop help <command>' to get help for a specific command.

# 任意のサブコマンドのヘルプを表示
scoop help install
#=>Usage: scoop install <app> [options]
#=>
#=>e.g. The usual way to install an app (uses your local 'buckets'):
#=>     scoop install git
#=>...

ちなみに単純にscoop helpで全体のヘルプを表示したい場合はscoopだけでも可能です。
また、helpのエイリアス的な書き方でscoop --help <command>scoop /? <command>としても同じ結果が得られます。

search

インストール可能なScoopアプリを検索するコマンドです。

構文
scoop search [regex]

検索文字列である[regex]を指定しなければ、インストール可能なScoopアプリが全て表示されます。
検索文字列である[regex]を指定すれば、以下のような条件で検索されます。

1.検索文字列に正規表現で一致するインストール可能なScoopアプリ名があれば、その条件で一致したScoopアプリを表示。
2.1で一致しなかった場合、インストール後にPATHを通す対象になっている実行ファイル名(拡張子除く)や
  ショートカットファイル名で正規表現検索し、一致すればそのScoopアプリとファイル名を表示。
3.(1,2)で1件も一致しなかった場合、scoop bucket knownで表示されるBucket(詳細は後述)内で
  インストール可能なScoopアプリ名で正規表現検索をし、一致したScoopアプリを表示。
4.いずれの条件でもヒットしなかった場合は「No matches found.」を表示。

# Scoop全体でインストール可能なアプリを表示
# 全部出してもあまり嬉しい時はないだろう。
scoop search
#=>'main' bucket:
#=>7zip (19.00)
#=>ack (3.0.1)
#=>acmesharp (0.9.1.326)
#=>...

# zipで検索
# Scoopアプリ名にzipが入っているものがヒットするほか、
# 最終的にPATHに通る実行ファイル名にもzipが入っていれば表示される。
scoop search zip
#=>7zip (19.00)
#=>busybox (3128-g241d4d4ac) --> includes 'bunzip2'
#=>bzip2 (1.0.7.0)
#=>gow (0.8.0) --> includes 'bunzip2.exe'
#=>gzip (1.3.12)
#=>lzip (1.20)
#=>unzip (6.00)
#=>zip (3.0)

# 正規表現で検索したい場合は`''`で囲むのがおススメ。
# 以下はPiriform社が提供しているユーティリティツールをOR検索している例。
scoop search 'ccleaner|recuva|defraggler|speccy'
#=>'extras' bucket:
#=>    ccleaner (5.59.7230)
#=>    defraggler (2.22.995)
#=>    recuva (1.53.1087)
#=>    speccy (1.32.740)

bucket

Scoop Bucketの追加、一覧表示、削除を行うコマンドです。

Bucketとは、他のパッケージ管理ツールにおけるパッケージリポジトリ的な存在で
ScoopではデフォルトでMain Bucketが登録されています。
Bucketを追加することでMain BucketにはないScoopアプリもインストールすることが可能となります。

Bucketについての詳細はScoopで利用できるBucketごとの解説(scoop bucket known限定)にてまとめました。
適宜、ご参照ください。

構文
scoop bucket add|list|known|rm [<args>]

Bucketの操作はScoopを導入して最初に行う際の設定を除いてはあまり使用機会はないコマンドなので、
以下の例でなんとなく使い方イメージできれば特に困ることはありません。

# Scoopが公式的に推奨?しているBucketなどはkownで一覧表示できます。
scoop bucket known
#=>main
#=>extras
#=>versions
#=>...

# extras Bucketを追加
scoop bucket add extras
#=>Checking repo... ok
#=>The extras bucket was added successfully.

# knownで表示されるBucket以外を任意で追加したい場合はBucket名に加え、BucketのGitリポジトリとなるURLも必要となります。
scoop bucket add iyokan-jp https://github.com/tetradice/scoop-iyokan-jp.git
#=>Checking repo... ok
#=>The iyokan-jp bucket was added successfully.

# 追加したBucketはlistで確認可能です。
scoop bucket list
#=>extras
#=>iyokan-jp
#=>main

# 不要になった場合は削除
scoop bucket rm iyokan-jp

install

Scoopアプリをインストールするコマンドです。

構文
scoop install (<app> | <app> ...) [options]

構文にある通り、一度にインストールできるアプリは一つ、または、複数指定が可能です。

インストール可能なScoopアプリは登録済みのBucket内にあるものに限られるため、
もしインストールしたいScoopアプリがない場合は新たにBucketを追加する必要があります。

また、いくつかのScoopアプリではinstallした際にユーザ環境変数(PATHの追加や〇〇_HOMEの追加など)を
自動で更新する機能もありますが、更新された場合であってもPowerShellから実行している限り、
ターミナルの再起動不要で即現在のシェル環境に反映されます。

# ccatをインストール
scoop install ccat
#=>Installing 'ccat' (1.1.0) [64bit]
#=>windows-amd64-1.1.0.tar.gz (1.2 MB) [=================================================] 100%
#=>Checking hash of windows-amd64-1.1.0.tar.gz ... ok.
#=>Extracting windows-amd64-1.1.0.tar.gz ... done.
#=>Linking ~\scoop\apps\ccat\current => ~\scoop\apps\ccat\1.1.0
#=>Creating shim for 'ccat'.
#=>'ccat' (1.1.0) was installed successfully!

# ちなみにccatはColorizing `cat`を意味しており、以下のようにシンタックスハイライトを効かせてコードを表示できます。
ccat "$env:USERPROFILE\scoop\apps\ccat\current\manifest.json"
#=>jsonがカラーで表示される。

# マニフェストファイルのURLを指定することでもインストール可能です。 
scoop install https://raw.githubusercontent.com/user/repo/branch/path/to/app.json
#=>...

# ローカル内にあるマニフェストファイルもパスを指定してのインストールができます。 
scoop install .\path\to\app.json
#=>...

また、installコマンドでは以下のオプションも使用可能です。各オプションの詳細は割愛します。

ショートオプション ロングオプション 説明
-g --global グローバルなパス(例えば、C:\Scoopなど)にScoopアプリをインストールする。
-i --independent 依存性があった場合、自動的に依存しているアプリもインストールしない
-k --no-cache インストールする際、キャッシュを使用せずに再度インストーラーをダウンロードしなおす
-s --skip ハッシュ値の検証をスキップする(実施する場合は、慎重に行うこと)
-a --arch <32bit or 64bit> アーキテクチャを指定してインストールを行う(Scoopアプリがアーキテクチャごとのインストールをサポートしていた場合のみ有効)

list

インストールしたScoopアプリを表示するコマンドです。

構文
scoop list [regex]

引数で正規表現を指定することにより、その正規表現にマッチするScoopアプリ名のみ表示できます。

また、インストールが失敗しているScoopアプリがあった場合は一番下の失敗リストに表示されるため、
正常にインストールできたかの確認としても使えます。

# インストール済みの全Scoopアプリを表示
scoop list
#=>Installed apps:
#=>
#=>7zip 19.00
#=>apache 2.4.39
#=>...

# pythonにマッチするインストール済みのScoopアプリを表示
scoop list python
#=>Installed apps matching 'python':
#=>
#=>  python 3.7.3
#=>  python27 2.7.16 [versions]

info

Scoopアプリの詳細を確認するためのコマンドです。

構文
scoop info (<app> | <url>)

表示される情報はマニフェストファイルから取得してきており、以下の内容が確認可能です。

項目名 説明
Name Scoopアプリ名
Description Scoopアプリの説明
Version バージョン
Website ホームページのURL
License ライセンス
Manifest マニフェストファイルのフルパス
Installed インストール先のパス

※インストールされていないアプリの場合は「No」と表示される)
※複数のバージョンがインストールされているときはそれらのフルパスが全て表示される
Binaries PATHを通している実行ファイル(gitであれば、git.exe gitk.exe git-gui.exe tig.exe git-bash.exe)
Environment 設定される環境変数
Notes 備考
# gitの情報を出力
scoop info git
#=>Name: git
#=>Version: 2.22.0.windows.1
#=>Website: https://git-for-windows.github.io/
#=>License: GPL-2.0 (https://spdx.org/licenses/GPL-2.0.html)
#=>Manifest:
#=>  C:\Users\xxxxx\scoop\buckets\main\bucket\git.json
#=>Installed:
#=>  C:\Users\xxxxx\scoop\apps\git\2.21.0.windows.1
#=>  C:\Users\xxxxx\scoop\apps\git\2.22.0.windows.1
#=>Binaries:
#=>   cmd\git.exe cmd\gitk.exe cmd\git-gui.exe usr\bin\tig.exe git-bash.exe
#=>Environment:
#=>  GIT_INSTALL_ROOT=C:\Users\xxxxx\scoop\apps\git\current
#=>Notes
#=>-----
#=>To get Git to recognise OpenSSH, you will need to run
#=>
#=>scoop install openssh
#=>[environment]::setenvironmentvariable('GIT_SSH', (resolve-path (scoop which ssh)), 'USER')

# ScoopのマニフェストファイルのURLを指定することでも表示可能。
# 使用する機会は稀。
scoop info https://raw.githubusercontent.com/user/repo/branch/path/to/app.json
#=>...

status

Scoop全体のステータスを確認するためのコマンドです。

構文
scoop status

確認できるステータスは以下の5項目です。
表示するメッセージがないステータス項目はスキップされます。
そのため、通常時は「Updates are available for:」ぐらいしか表示されません。

表示するメッセージが1件もなければ、「Everything is ok!」と出ます。

ステータス項目 説明
Updates are available for: 更新可能なScoopアプリ
These apps are outdated and on hold: 更新可能ですが、hold中のScoopアプリ
※holdについては次の記事にて解説します
These app manifests have been removed: マニフェストファイルが削除されたScoopアプリ
※Bucketから削除された、もしくは、Scoopアプリ名のリネームされた場合に表示されます
These apps failed to install: インストールが失敗しているScoopアプリ
Missing runtime dependencies: あるインストール済みのScoopアプリに依存されている未インストールのScoopアプリ
scoop status
#=>Scoop is up to date.
#=>Updates are available for:
#=>    gradle: 5.4 -> 5.5
#=>    mysql: 8.0.15 -> 8.0.16

update

Scoop、または、Scoopアプリを最新のバージョンに更新するコマンドです。

構文
scoop update [* | <app> | <app> ...] [options]

scoop updateでScoop自身を更新し、scoop update <app>でインストール済みのScoopアプリの最新バージョンをインストールします。
updateコマンドの引数は複数のScoopアプリ名を指定できる他、*を使用することによりインストール済みの全てのScoopアプリの中から
バージョンが最新でなくなっているScoopアプリを全て更新することができます。

# Scoop自身を更新するコマンドです。
# Scoopの新機能、バグ修正のほか、Scoopが管理しているScoopアプリ情報も更新されます。
scoop update
#=>Updating Scoop...
#=>Updating 'extras' bucket...
#=> * cb9b7a09 opera: Update to version 62.0.3331.43                        27 minutes ago
#=>Updating 'main' bucket...
#=> * 1596ee2d nodejs: Update to version 12.6.0                             29 minutes ago
#=> * 0bb23438 jx: Update to version 2.0.398                                29 minutes ago
#=>Scoop was updated successfully!

# アプリを指定して更新
scoop update vscode
#=>vscode: 1.35.1 -> 1.36.0
#=>Updating one outdated app:
#=>Updating 'vscode' (1.35.1 -> 1.36.0)
#=>Downloading new version
#=>...
#=>'vscode' (1.36.0) was installed successfully!
#=>Notes
#=>-----
#=>Add Visual Studio Code as a context menu option by running: "C:\Users\xxxxx\scoop\apps\vscode\current\vscode-install-context.reg"

また、updateコマンドでは以下のオプションも指定可能です。詳細は割愛します。

ショートオプション ロングオプション 説明
-g --global グローバルなパス(例えば、C:\Scoopなど)にScoopアプリをインストールする。
-i --independent 依存性があった場合、自動的に依存しているアプリもインストールしない
-k --no-cache インストールする際、キャッシュを使用せずに再度インストーラーをダウンロードしなおす
-s --skip ハッシュ値の検証をスキップする(実施する場合は、慎重に行うこと)
-f --force 新しいバージョンが更新されていなくても強制的に更新する。
-q --quiet 無関係なメッセージを非表示にする。

uninstall

Scoopアプリをアンインストールするコマンドです。

構文
scoop uninstall (<app> | <app> ...) [options]

使用感はinstallコマンドと同様です。

scoop uninstall php56
#=>Uninstalling 'php56' (5.6.40).
#=>WARN  Shim for 'php' is missing. Skipping.
#=>Unlinking ~\scoop\apps\php56\current
#=>'php56' was uninstalled.

また、updateコマンドでは以下のオプションも使用可能です。

ショートオプション ロングオプション 説明
-g --global グローバルにインストールされたScoopアプリを削除する。
-p --purge 永続化されたデータ(バージョン間で共有される設定ファイルなど)も全て削除する

おわりに

初回のコマンド解説は以上となります。

これまで紹介したコマンドが使えれば普段使いでScoopでのアプリ管理が十分可能だと思います。
「もっと使いこなしたい」や「もっと便利な方法を知りたい」などあれば、その2以降の記事もご覧ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした