BETA

[Windows]Windowsのgitをパッケージ管理ソフトScoopで管理する

投稿日:2020-06-27
最終更新:2020-06-28

Scoop

ScoopはWindows版のHomebrew、つまりパッケージ管理ソフトです。
通常WindowsのGUIでは実行ファイル(.exe)を使ってインストールしますが、CUIで各種アプリケーションのインストールが可能。

いちいち公式サイト行って自分のOSのバージョン見つけてダウンロード、実行してNextボタン連打してやっとインストール。
ましてMcAf○eやらなんちゃらツールバーやらと言ったいらんアプリも一緒にインストールする?なんて聞かれる。

そんな体験はもういりません、CUIでコマンド一発です。
そう、Scoopならね。

パッケージ管理ソフトを使う事で様々なアプリケーションを簡単に管理する事ができ、アップデートもコマンド一つでとっても簡単です。
エンジニアなら誰でも使うであろうgitをScoop管理に切り替えましょう。

また、詳細は後述しますが極一部のアプリケーションに限り擬似的にバージョン管理ソフトのような使い方も可能です。

前提

  • Windows 10 Pro v1909
  • Windows PowerShell v5.1.18362.752
  • .NET Framework v4.8(528040)
  • git(実行ファイル.exeでインストール済み)

Windows PowerShellと.NET FrameworkはScoopのインストールに必要です。
なおインストールさえできればその後の操作はコマンドプロンプトでも可能です。

Scoop公式サイト:Scoop
Scoop | GitHub

既存のgitのアンインストール

まず既に実行ファイル(.exe)でインストール済みのgitをアンインストールします。
コントロールパネル(設定)のアプリ一覧から削除が可能です。

//バージョンが返ってこない事を確認  
$ git --version  

Scoopのインストール

ScoopはWindows PowerShellを使ってインストールします。

//インストールコマンド  
$ Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')  

# 短縮コマンド  
$ iwr -useb get.scoop.sh | iex  

コマンドはどちらでもOK、手入力するなら短い短縮コマンドの方がいいでしょう。

//インストールされているか確認  
$ scoop help  

無事コマンド一覧が返ってくればインストール完了です!

gitのインストール

それではまずgitをインストールしてみましょう!

$ scoop install git  
Installing '7zip' (19.00) [64bit]  
~中略~  
'7zip' (19.00) was installed successfully!  
Installing 'git' (2.27.0.windows.1) [64bit]  
~中略~  
'git' (2.27.0.windows.1) was installed successfully!  

初回は7zipも一緒にインストールされます。

$ git --vesrion  
git version 2.27.0.windows.1  

gitのバージョンが返ってくれば無事インストール完了です!

gitの設定

通常gitをアンインストールしただけの場合は設定が引き継がれるんですが、念の為gitの設定を確認しておきましょう。

$ git config --global user.name  
$ git config --global user.email  

それぞれユーザーネームとパスワードが返ってくればOK。
もし返ってこなければ別途設定しておきましょう。

$ git config --global user.name "user.name"  
$ git config --global user.email "[email protected]"  

VSCodeのPathの変更

もし現在VSCodeでgitを使っている場合、Scoopでgitを管理する事でgitのPathが変更になります。
Scoopはアプリケーションを以下のディレクトリで管理しています(もちろん変更することも可能です)。
C:\Users\ユーザー名\scoop\apps\

そしてScoopは各アプリケーション直下にcurrentというジャンクション(シンボリックリンクみたいなもの)を作成しており、このcurrentディレクトリは最新バージョンを指しています。

つまりgitのPathは以下のように設定しておけば常に最新バージョンのgitを指す、という事になります。
C:\Users\ユーザー名\scoop\apps\git\current\bin\git.exe
今後gitのバージョンアップがあっても、currentディレクトリを指定しておけば自動的にバージョンが切り替わります(アップデートのタイミングでcurrentディレクトリのジャンクション先が切り替わる)。

VSCodeは以下の手順でPathの変更を行えます。

  1. Ctrl+,キーで設定を開く
  2. 設定の検索にgit.pathを入力
  3. settings.jsonで編集をクリック
  4. "git.path"にバックスラッシュを二重にして記述

バックスラッシュは二重にする必要があるので、以下のようになります。
C:\\Users\\ユーザー名\\scoop\\apps\\git\\current\\bin\\git.exe

bucket

ここではbucketの追加を解説します。
bucketはScoopのリポジトリみたいなもので、デフォルトの状態だとmainというbucketが使用できます。
このbucketを追加する事で更に様々なアプリケーションを管理できるようになります。

bucketの一覧はbucketコマンドで取得できるので見てみましょう。

$ scoop bucket known  

以下が各bucketの一覧と概要です。

bucket名 概要
main デフォルトのCUIアプリケーション
extras mainの基準に適合しない、主にGUIアプリケーション
versions 一部のアプリケーションのバージョン違い
nighlies Nighlies専用bucket
nirsoft 250のNirsoft専用bucket
php 様々なバージョンのPHP専用bucket
nerd-fonts フォント&アイコンフォントセットNerd Fonts用bucket
nonportable ポータブル版として使用できないアプリケーション
java 様々なバージョンのJavaと関連ツール用bucket
games オープンソース/フリーウェアのゲーム
jetbrains JetBrainsユーティリティとIDEの専用bucket

様々なbucketがありますが、よく使われるのはextrasとversions、該当エンジニアならPHPやJava辺りでしょうか。

extras bucketの追加

ここでは様々なGUIアプリケーションを管理できるextras bucketを追加してみましょう。
extras bucketは誰でもお馴染みのアプリケーションがたくさん揃っています。

  • Google Chrome
  • Firefox
  • Opera
  • Atom
  • Sublime Text
  • VSCode
  • PyCharm
  • SourceTree
  • TeraTerm
  • OpenOffice
  • Skype
  • Discord
  • Slack

などなど・・・数えだすとキリがないんですが、メジャーどころは揃っているような印象です。

$ scoop bucket add extras  
Checking repo... ok  
The extras bucket was added successfully.  

これでextras bucketを利用できるようになりました!
使い方はmain bucketと同じです、試しにVSCodeをインストールしてみます。

$ scoop install vscode  
~中略~  
'vscode' (1.46.1) was installed successfully!  

これでVSCodeがインストールできました!

Scoopコマンド解説

ここではよく使うScoopコマンドを解説します。

installコマンド

$ scoop install [アプリケーション名]  

//複数選択  
$ scoop install git 7zip  

何度か使った、アプリケーションをインストールする為のコマンドです。
半角スペース区切りで複数指定することも可能です。

uninstallコマンド

$ sccop uninstall [アプリケーション名]  

//設定ファイル等も一緒に削除  
$ scoop uninstall -p [アプリケーション名]  

installコマンドとほとんど同じ使い方が可能です。
-pオプションを使う事で不要な設定も同時に削除できるので、もう使わないというアプリケーションの場合は指定すると良いでしょう。

updateコマンド

$ scoop update [アプリケーション名]  

//Scoop自身のアップデート  
$ scoop update  

//全てアップデート  
$ scoop update *  

updateコマンドは2つの使い方があります。

  • Scoop自身のアップデート
  • Scoopで管理するアプリケーションのアップデート

後者に関してはアスタリスクを指定してScoopで管理する全てのアプリケーションのアップデートを同時に行うことも可能です。

hold/unholdコマンド

$ scoop hold [アプリケーション名]  
$ scoop unhold [アプリケーション名]  

hold指定する事で対象のアプリケーションをupdateの対象から外すことができます。
unholdで指定解除が可能です。

infoコマンド

$scoop info [アプリケーション名]  

インストールしたアプリケーションの詳細を確認する事が可能です。
バージョンやWebサイトのURLからライセンスの確認もOK。
特にインストールした場所を確認できるInstalled'やPathを確認できるBinaries、環境変数が確認できるEnvironment`辺りはいざという時に重宝します。

statusコマンド

$ scoop status  

Scoopのステータス表示が可能です。
最新バージョンが出ている場合更新できるアプリケーションが分かったり、インストールに失敗したアプリケーションが表示されます。
定期的に実行して状況を把握ると便利です。

bucketコマンド

//bucketを追加  
$ scoop bucket add [bucket名]  

//登録済みbucketの一覧  
$ scoop bucket list  

//未登録も含めたbucketの一覧  
$ scoop bucket known  

//登録済みbucketの削除  
$ scoop bucket rm [bucket名]  

bucketの追加や削除等が行えるコマンドです。
bucketはknownで表示される以外にもユーザーが独自に作成可能で、その場合は[bucket名 GitHubリポジトリのURL]で指定可能。
もちろんbucketを自作することもできます。

searchコマンド

$ scoop search '正規表現'  

$ scoop search ^p    //pで始まるアプリケーション  
$ scoop search p$    //pで終わるアプリケーション  
$ scoop search 'git|vscode'  

登録済みのbucketから条件に一致するアプリケーションを検索することができます。
$ scoop search単体で使用すると、登録済みのbucket内のアプリ全てを表示します。

listコマンド

$ scoop list '正規表現'  

$ scoop list ^p    //pで始まるアプリケーション  
$ scoop list p$    //pで終わるアプリケーション  
$ scoop list 'git|vscode'  

インストール済みのアプリケーションを表示できます。
使い方はほぼsearchと同様です。

cacheコマンド

//キャッシュの表示  
$ scoop cache show  

//個別のアプリケーションのキャッシュ削除  
$ scoop cache rm [アプリケーション名]  

//全てのキャッシュ削除  
$ scoop cache rm *  

インストール時に使用されたファイルの削除が行なえます。
削除されるのはあくまでキャッシュ、既にインストール済みのアプリケーションには影響がありません。
たまに確認して容量が肥大化していたら削除すれば良いと思います。

cleanupコマンド

//個別のアプリケーションの古いバージョンを削除  
$ scoop cleanup [アプリケーション名]  

//全てのアプリケーションの古いバージョンを削除  
$ scoop cleanup *  

アプリケーションがupdateされた後、古いまま残っているアプリケーションを削除する事ができます。
例えばgitは常に最新版がインストールされるので、古い物は使用しません。
アップデートが走って特段バグ等が無さそうであれば削除してリソースを有効活用しましょう。

resetコマンド

$ scoop reset [アプリケーション名]  

resetコマンドはPathや環境変数をインストール時と同じように設定するコマンドです。
例えば誤って環境変数を書き換えてしまった!みたいな時に便利ですが、実はそれ以上に便利な使い方が存在します。
冒頭に「擬似的にバージョン管理ソフトのような使い方も可能」と書きました、それを担うのがこのresetコマンドです。

つまり別のバージョンをそれぞれインストールしておいて、使いたいバージョンでresetする事で実質的にバージョンを切り替える事ができます。
3系になった今でも2系の保守が必要なPythonで実験してみましょう。

//version bucketを追加  
$ scoop bucket add version  

//インストールできるPythonを確認  
$ scoop search python  
~中略~  
'versions bucket:  
    python27 (2.7.18)  
    python37 (3.7.7)  

//Python2系をインストール  
$ scoop install python27  
~中略~  
'python27' (2.7.18) was installed successfully!  

//Pythonのバージョン確認  
$ python --version  
Python 2.7.18  

//Python3系をインストール  
$ scoop install python37  
~中略~  
'python37' (3.7.7) was installed successfully!  

//Pythonのバージョン確認  
$ python --version  
Python 3.7.7  

//resetコマンドでPython2系を指定  
$ scoop reset python27  

//Pythonのバージョン確認  
$ python --version  
Python 2.7.18  

このようにresetコマンドで再定義するだけで何度でもバージョン変更が可能になります。
ただしこれができるのは限られた極一部のアプリケーションのみ。
あくまで擬似的に行えるという点だけは覚えておいて下さい。

helpコマンド

$ scoop help  

//個別のコマンドの詳細  
$ scoop help [コマンド名]  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@braveryk7の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう