Scoop bucket を自作する
趣旨
- Scoop は PowerShell で実装された Windows 用ソフトウェア管理ツールです
- ちょっとした PowerShell スクリプトレットを作成するときはいろいろ参考になりそう
- PowerShell プロンプトから使うこともできるし Git Bash から使うこともできる
- インストール可能なソフトウェアのコレクションは bucket という仕組みで管理されています
- 最近は ScoopInstaller(GitHub Organizations) で公開されるようになったみたい
- マイグレーションの方法は見当たらない
- とりあえず
scoop bucket rm
してscoop bucket add
すればよい- 今のところどの
bucket
からインストールしたかの情報は管理されていないため
- 今のところどの
- 公開されている bucket に存在しないソフトウェアを使いたいときはいずれかの手段で対応します
bucket の作り方
bucket
フォルダに App Manifest と呼ばれる形式で記述した json ファイルを置くだけでした。
詳しくは Wiki の App Manifests で説明されています。
App Manifest の書き方
eksctl を使おうと思ったとき、公開されている bucket には存在しなかったので自作したのが次の App Manifest です。
architecture
要素の url
や hash
属性は scoop に同梱されたスクリプトで補完します。
// eksctl.json { "homepage": "https://github.com/weaveworks/eksctl/", "license": "https://raw.githubusercontent.com/weaveworks/eksctl/master/LICENSE", "version": "0.5.1", "architecture": { "64bit": { "url": "https://github.com/weaveworks/eksctl/releases/download/0.5.1/eksctl_Windows_amd64.zip", "hash": "10aa16faeab984c8b617a8ebf3bc352e113007b264d0761b11fe101201ca422e" } }, "bin": [ [ "eksctl.exe" ] ], "checkver": { "url": "https://github.com/weaveworks/eksctl/releases/tag/latest_release", "re": "eksctl (?<version>[\\d.]+)" }, "autoupdate": { "architecture": { "64bit": { "url": "https://github.com/weaveworks/eksctl/releases/download/$matchVersion/eksctl_Windows_amd64.zip" } } } }
最新バージョンがあるかどうかを確認します。
$ powershell ./scoop/bin/checkver.ps1 eksctl . eksctl: 0.11.1 (scoop version is 0.5.1) autoupdate available
最新バージョンに更新します。
$ powershell ./scoop/bin/checkver.ps1 -Update eksctl . eksctl: 0.11.1 (scoop version is 0.5.1) autoupdate available Autoupdating eksctl Downloading eksctl_Windows_amd64.zip to compute hashes! Loading eksctl_Windows_amd64.zip from cache Computed hash: 79ab60ca47cf204fb9115aa7e6d8840f5abe4dcacdd0474244895b329a648aa1 Writing updated eksctl manifest
App Manifest にダウンロード可能なアーカイブのURLとアーカイブのハッシュ値が反映されています。
// eksctl.json { "homepage": "https://github.com/weaveworks/eksctl/", "license": "https://raw.githubusercontent.com/weaveworks/eksctl/master/LICENSE", "version": "0.11.1", "architecture": { "64bit": { "url": "https://github.com/weaveworks/eksctl/releases/download/0.11.1/eksctl_Windows_amd64.zip", "hash": "79ab60ca47cf204fb9115aa7e6d8840f5abe4dcacdd0474244895b329a648aa1" } }, "bin": [ [ "eksctl.exe" ] ], "checkver": { "url": "https://github.com/weaveworks/eksctl/releases/tag/latest_release", "re": "eksctl (?<version>[\\d.]+)" }, "autoupdate": { "architecture": { "64bit": { "url": "https://github.com/weaveworks/eksctl/releases/download/$matchVersion/eksctl_Windows_amd64.zip" } } } }