PowerShellのPackageManagementでChocolateyGetを使う

Linuxユーザの方には馴染み深いであろうパッケージ管理ですが、Windowsにも結構前からChocolateyというのがあってまぁこれが便利なわけですよ
ただしPowerShellユーザにとっては choco コマンドを叩くとかわりと苦痛でしかないわけで
でも大丈夫、PackageManagementがChocolateyを内包してくれるんだ

ChocolateyGetとはなんだ

GitHub – jianyunt/ChocolateyGet: ChocolateyGet provider allows to download packages from Chocolatey.org repository via OneGet
PackageManagementのプロバイダのひとつでうまいことChocolateyしてくれるというやつです

もともとPackageManagementではChocolateyプロバイダが使えるようになってるんですが、ChocolateyGetはこれとは別物です
じゃあなぜ最初から使えるChocolateyプロバイダではなくChocolateyGetを使うの?と、思うじゃん
それはあれよ、Chocolateyプロバイダがあまりよろしくないからです
何度コマンド叩いてもパッケージのインストールできないとか、わりと致命的にだめだからです

ChocolateyGetを導入する

先程のリンク先を見ると導入方法も書いてあるんですが一応ここにも書いておきましょう

PS> Find-PackageProvider ChocolateyGet

Find-PackageProvider は名前の通りパッケージプロバイダを探してくるCmdletです
とくに問題がなければChocolateyGetがだいたいちゃんと見つかります
(2017/09/11時点で1.0.0.1が公開されてます)

続いてインストール

PS> Install-PackageProvider ChocolateyGet

まんまですね
そしてもちろんPowerShellなので

PS> Find-PackageProvider ChocolateyGet | Install-PackageProvider

とパイプで渡すこともできます

ChocolateyGetを使ってみる

先ずはパッケージの検索です
google chromeっぽいものを探してみましょう

PS> Find-Package -Name *chrome* -Provider ChocolateyGet

-Provider ChocolateyGet の部分はChocolateyGetプロバイダを使ってね、という意味です
はじめてChocolateyGetを使う場合は choco.exe をインストールしなきゃならんよ、とういような内容のプロンプトが出てくるので、よく読んで問題ないと思ったら Yes してください
ここは同意しないと以後ChocolateyGetが使えないわけだけど、念のためこの手のプロンプトはちゃんと読もうな

-Name *chrome* で名前にchromeと付くパッケージを検索させます
* はワイルドカードです、ChocolateyGetではワイルドカードが使えます
(-Nameプロパティはプロバイダによって挙動がちょっと違うっぽいので注意してね)

こうするとChocolateyGetを使ってChocolateyのリポジトリから検索条件に合ったパッケージの一覧が出力されます
GoogleChromeがそれっぽいのでインストールしてみましょう

PS> Install-Package -Name GoogleChrome -Provider ChocolateyGet

こんだけ
簡単ですね

もちろんパイプしてもいい

# 例えば名前決め打ちでFind-Package、見つからなかったらインストールが走らない
PS> Find-Package -Name GoogleChrome -Provider ChocolateyGet | Install-Package
# whereしてもいいね、いいよ
PS> Find-Package -Name *chrome* -Provider ChocolateyGet | ? Name -EQ GoogleChrome | Install-Package

おまけ

ChocolateyGetというよりPackageManagementのはなしだこれ

プロバイダ名の指定はtab補完できるよ

PS> Find-Package -Provider choco # tabキー押す

-Provider はtab補完が効くので安心です
ただなぜか知らんがおっそいけど
あとChocolateyプロバイダが先に出てくるけど

毎回ChocolateyGet指定したくないんだけど?

PS> Find-Package -Name *hoge* -Provider ChocolateyGet

補完が効くとは言えいちいちプロバイダ指定するのめんどくさい!
というひと
プロバイダを明示しない場合は今使えるプロバイダ総なめする(っぽい)ので

PS> Find-Package -Name *hoge*

としてもChocolateyGetで(も)検索されます

ただ過去にChocolateyプロバイダを使ったことのあるひとは注意
一度でもChocolateyプロバイダを指定して *-Package してるとChocolateyプロバイダが有効になります
その状態で -Provider 指定がないとChocolateyプロバイダも使われちゃうのでその場合はちゃんと指定しようね

ちなみに Uninstall-PackageProvider とか Disable-PackageProvider 的なものはないので、不要なプロバイダを使えないようにする手段は今のところないです
ないのです

一度にいろいろインストールしたい

できるよ

PS> Find-Package -Provider ChocolateyGet -Name googlechrome,firefox | Install-Package
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中