Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
19
Help us understand the problem. What is going on with this article?
@nimzo6689

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

はじめに

全Scoopコマンド解説の最終回です。

今までの記事で紹介したコマンドと比べると使用頻度は少ないですが、
使えるようになるとScoop使いこなしてる感が出て面白いです。

# 記事リンク 使用頻度 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

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

config

Scoop内部で保持する設定情報を取得、削除するコマンドです。

構文
scoop config name <value>
scoop config rm name

利用できる設定項目については以下のようになっています。
※本当はもう少しありますが、ほぼ使用する機会がないと思ったので割愛しました。

設定項目名 設定値 デフォルト値 説明
SCOOP_REPO Scoop本体のGitリポジトリURL https://github.com/lukesampson/scoop ローカルで使用中のScoopのリポジトリを設定
SCOOP_BRANCH SCOOP_REPO内のGitブランチ名 master SCOOP_REPOのブランチを設定
proxy [username:password@]host:port default Scoopが使用するProxyを設定

社内で認証付きのProxyへ接続する必要がある場合、こちらを設定します。
認証不要のProxyであればインターネットオプション(inetcpl.cpl)から指定するだけでOK。
逆にインターネットオプションで設定されたProxyを使用したくない場合は、こちらの設定値を他のProxyに上書きしておくか、noneとすればProxyなしで使用可能。
virustotal_api_key VirusTotalのAPIキー - 詳細はvirustotalコマンドの解説をご参照ください
aria2-enabled true or false false aria2による複数コネクションによる並列ダウンロードを有効/無効に切り替える
aria2-retry-wait 0以上の整数(秒単位) 2 aria2使用時のリトライ通信をするまでの待ち時間を設定
aria2-split 0以上の整数 5 aria2使用時の一つのScoopアプリのダウンロードにつき、いくつのコネクションを使用するかを設定
aria2-max-connection-per-server 0以上の整数 5 aria2使用時の一つのサーバーにつき、同時に接続できるコネクション数の最大値を設定
aria2-min-split-size 1M - 1024M 5M aria2使用時の分割ダウンロード時における最小ファイルサイズを設定

ちなみにscoop configで設定した情報は~\.config\scoop\config.jsonに保存されます。
そのため、PC移行する場合はこちらのファイルもバックアップに取っておくことで設定の引継ぎが可能です。

以下、使用例としてaria2を有効にする手順と無効にする手順を記載しておきます。
install、または、updateコマンド時にaria2を使用してファイルをダウンロードできるようになります。

# aria2を有効化する
scoop install aria2
scoop config aria2-enabled true
#=>'aria2-enabled' has been set to 'true'

# aria2の有効になっているかを確認
scoop config aria2-enabled
#=>True

# aria2を無効化する(falseで再設定するのでも可能)
scoop config rm aria2-enabled
#=>'aria2-enabled' has been removed

scoop config aria2-enabled
#=>'aria2-enabled' is not set

alias

Scoopコマンド用のエイリアスを作成、一覧表示、削除するためのコマンドです。

構文
scoop alias add <name> <command> <description>
scoop alias list [-v|--verbose]
scoop alias rm <name>

ailiasコマンドを使うことによりscoop uninstall <app>scoop remove <app>でも実行できるようにしたり、
scoop uninstall <app>; scoop install <app>scoop reinstall <app>をするだけで実行できるようにしたりできます。

また、新しくPowerShellスクリプトファイルを作成してユーザ定義のサブコマンドを追加することもできます。
こちらの方法は長くなるため、別記事に書きました。
https://qiita.com/nimzo6689/items/fcf07a74877d2171ac37

以下、主に作成されそうなaliasを作成するサンプルです。

# ---- 既存のコマンドを別名で実行する系 -------------------------
# 更新可能な全Scoopアプリを一括更新する。
scoop alias add upgrade 'scoop update *' 'Update all apps.'
# uninstallコマンドの別名を定義。
scoop alias add remove 'uninstall $args[0]' 'Remove Scoop apps.'

# ---- デフォルトでオプションを付加する系 -------------------------
# cleanup時にcacheも合わせて削除する。
# 既存のコマンド名と同名にしてしまうと既存のコマンドが実行されてしまうため、別名を付ける必要があります。
scoop alias add xcleanup 'scoop cleanup $args[0] --cache' 'Clean Scoop apps by removing old versions and caches.'

# ---- 複数のコマンドをまとめて実行する系 -------------------------
# 全Scoopアプリの最新情報を更新してからScoopのstatusを表示する。
scoop alias add outdated 'scoop update; scoop status' 'Show all outdated Scoop apps.'
# Scoopアプリの再インストールを行う。
scoop alias add reinstall 'scoop uninstall $args[0]; scoop install $args[0]' 'Uninstall and then install app'

# 作成したaliasを確認する。
scoop alias list

# エイリアスの説明も見たい場合は-v or -verboseオプションを付けることで表形式で参照できます。
scoop alias list -v

# 作成したエイリアスを削除する。
scoop alias rm outdated

create

Scoopアプリのメタ情報となるマニフェストファイルを作成するためのコマンドです。

構文
scoop create <url>

自身で作成したマニフェストファイルを使ってアプリをインストールできる準備をするためのコマンドです。
これがあることで、Scoopに登録されていないアプリでもScoop管理の対象に入れてインストールすることができます。

アプリによっては作成が難しいものもありますが、GitHubのReleaseページにzipでダウンロードできるアプリであれば割と簡単に作成が可能です。

マニフェストファイルは作成する前に誰か既に作っている人がいないか確認しておきましょう。
scoop searchでは検索に引っ掛からないことも多いので、
こちらのページから検索することをおススメします。
https://github.com/rasa/scoop-directory/blob/master/by-apps.md

マニフェストファイルの作り方の詳細は省略しますが、以下の記事が丁寧に解説されているのでこちらご参照ください。
Scoopを使ったWindows環境構築のススメ - Super!!

depends

ScoopアプリがどのScoopアプリに依存しているかを確認するためのコマンドです。

構文
scoop depends <app>

使用用途がいまいち思いつきにくいですが、installする際に依存しているアプリのインストールをスキップするオプションがあるくらいなので、
何かしらのトラブル時に使用する機会があるのかもしれません。

# tarに依存しているアプリを確認
scoop depends tar
#=>gzip

export

インストール済みのScoopアプリをエクスポートするコマンドです。

構文
scoop export > filename

Python界でいうpip freeze > requirements.txtと同じ意味となります。
ただし、肝心のimportコマンドがまだリリースされていない状況なので、
実際はまだ使用することができません。(実行しても意味がないため)

以下のプルリクで対応中とのことですが、進捗もちょっと微妙なので
個人でimportするPowerShellスクリプトを作成するのが無難なようです。
https://github.com/lukesampson/scoop/pull/2105

こちらに関しては後日別の記事にて対応方法記載したいと思います。

prefix

Scoopアプリがインストールされているフォルダまでのパスを取得するためのコマンドです。

構文
scoop prefix <app>

やっていることは単純でScoopアプリのインストール先のフルパスを表示するだけです。
グローバルインストールやScoopルートのカスタマイズなどしない限り、出力されるパスは以下となるため、
通常ケースでは特に使用されるコマンドではありません。

C:\Users\${user_name}\scoop\apps\${scoop_app_name}\current

では、どういうときに使うかというと、
ライブラリのみ提供するScoopアプリ(scoop whichで出てこない場合)や
scoop resetせずに特定のScoopアプリの実行ファイルを使用したい場合などに使えます。

# lessのインストール先を表示
scoop prefix less
#=>C:\Users\xxxxx\scoop\apps\less\current

# resetせずにPHP7.3系を実行したい場合
& "$(scoop prefix php73)\php.exe" --version
#=>PHP 7.3.7 (cli) (built: Jul  3 2019 14:34:10) ( ZTS MSVC15 (Visual C++ 2017) x64 )
#=>...

virustotal

VirusTotalを使ってScoopアプリのマルウェア検知を行うコマンドです。

scoop virustotal (* | <app> | <app> ...) [options]

VirusTotalというのはオンラインでマルウェア検知を行うサービスのことで
今はGoogle傘下の企業から提供されています。
検知したいファイルをアップロードするだけで50種類以上のアンチウイルスソフトにより検査されるため、
セキュリティソフトのセカンドオピニオン的ツールとして使用されています。

ScoopではScoopでインストールしたアプリにセキュリティ的な問題がないかを
VirusTotalで確認するためのコマンドが用意されており、
それが最後に紹介するvirustotalサブコマンドというわけです。

具体的な処理の流れですが、まずScoopのマニフェストファイル内に書かれている
ハッシュ値をVirusTotalにリクエストし、VirusTotalが過去に検査したことのあるファイルだと判断されれば、
当時検査で出た結果が表示されます。

既にVirusTotalが把握済みのケースまでであれば、特にVirusTotalのAPIキーの設定は不要ですが、
もしVirusTotalが検知したことのないハッシュ値が送信された場合は
Scoopアプリのダウンロード元のリンクをVirusTotalにリクエストすることになっています。

ここで始めてVirusTotalのAPIキーが必要となるため、検知試行率を上げたい人は設定しておくとよいでしょう。1

ショートオプション ロングオプション 説明
-a --arch <32bit or 64bit> アーキテクチャを指定してインストールを行う。

※Scoopアプリがアーキテクチャごとのインストールをサポートしていた場合のみ有効
-s --scan VirusTotalがまだ検知したことないハッシュ値のファイルであった場合、
Scoopアプリのダウンロードリンクを送信して分析を行う。
※VirusTotalのAPIキーをscoop config virustotal_api_key xxxxxでAPIキーを設定しておく必要あり
-n --no-depends 依存しているアプリは検知対象外にする。

おわりに

以上でScoop全24個のコマンド解説は終了です。

今回、記事を書くにあたりソースコードやGitHubのIssues、Wikiをほぼ横断的に見てましてが、
Issuesで面白い投稿を発見しました。

Thanks #2549

見ていて和みますね。

私自身もここ数年、Scoopを導入したことにより、各アプリが常に最新版に維持できるようになり、
環境構築の手間も省け、新しいツールを知る機会も得られました。

まだ各ソフトウェアのサイトに行ってダウンロードするやり方を取っている人は
ぜひ一度Scoopの快適さを味わってほしいと思ってます。


  1. VirusTotalはアップロードされたファイルを第3者(主にセキュリティ会社)に提供するビジネスをしているため、よく機密情報の漏洩に繋がると言及されていますが、Scoop自体はVirusTotalに対してマニフェストファイルに記載されているハッシュ値とファイルのダウンロードURLしか送信していないため、機密情報の漏洩に繋がることはないかと思います。(あくまで責任は取れませんが) 

19
Help us understand the problem. What is going on with this article?
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
nimzo6689
東京でJavaEEを扱う6年目エンジニアです。
jcsc
「未知なる可能性への挑戦」がモットー。愛媛生まれのエンジニア集団。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
19
Help us understand the problem. What is going on with this article?