Intelligent Technology's Technical Blog

株式会社インテリジェントテクノロジーの技術情報ブログです。

Windowsでもパッケージ管理! Chocolateyの紹介

初めまして、津田です。

Windows上で開発を行っていると環境構築にもあれこれ手間がかかりますよね。

Macだとbrew install hogeLinuxならyum install hoge等で済んでしまうところが、Windowsでは

  1. 公式サイトにアクセス
  2. インストーラーを探してダウンロード
  3. インストーラーを実行

と多少手順が増えてしまいます。

チーム内でツールを統一しようと思ったらあれとこれとそれをどこそこからインストールしてと、手順書作成しろと言われることもあるでしょう。

Windowsだからしょうがないかと思っていた時期もありましたが、それChocolateyでできるよ!ということで、Windows用のパッケージマネージャChocolateyを触ってみたので、使い方を紹介したいと思います。

Chocolatey #とは

ChocolateyはWindows上で動作するソフトウェアをコマンドラインからインストール/アンインストール/アップデート/検索することができるパッケージマネージャーです。
Chocolateyのリポジトリに登録されているパッケージのインストールと依存するパッケージのインストールを行ってくれます。(例えばScalaをインストールしたらjreも一緒にインストールしてくれます。)

リポジトリに登録されているパッケージで個人的に目が行ったパッケージを抜粋すると

などがありました。
開発に使用しているアプリケーションが一通りそろっている印象です。

コマンドラインから一発でパッケージをインストールできるので、自分の開発環境をぱぱっと構築するのに便利そうです。
また、インストールするパッケージを書いたxml(packages.config)からインストールすることもできるので、プロジェクト内の開発環境を統一することにも使えそうです。(例えば、実行環境を仮想化して統一していても、Vagrantのバージョンが問題になって仮想環境構築に手間取るのはもったいないですよね。)

環境

動作確認はWindows8.1で動作確認を行っています。
Chocolateyの公式Wikiによれば、以下の環境で動作するそうです。

準備

コマンドプロンプト・もしくはPowerShellを管理者として実行を選択して起動します。
起動後、以下のコマンド(公式サイトのトップページに記載されているコマンドをコピペしたものです)を実行するだけでChocolateyがインストールされます。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

実行が完了したらC:\ProgramData\chocolateyにChocolatey本体が展開されているはずです。
また、コマンドラインからchocolateyコマンドが使用できるようになるので、以下のコマンドで正常にインストールできているか確認できます。

chocolatey version

また、chocoという短縮版のコマンドも存在します。

choco version

Chocolateyのバージョン情報が表示されたらインストール完了です。

Chocolateyの基本操作

引き続き先ほど起動したコマンドプロンプトPowerShellから実行していきます。

検索

パッケージをインストールするまえに、どんなパッケージが登録されているのか検索しましょう。
インストールできるパッケージは公式サイトのpackagesか、choco listコマンドを利用して検索します。

choco listコマンドを利用する場合は、コマンドラインから以下のコマンドを実行してください。

choco list

listの後にオプションでキーワードを指定することで、検索結果を絞り込むことができます

choco list {keyword}

また、-localonlyオプションをつけるとマシンにインストール済みのパッケージを表示できます

choco list -localonly
choco list {keyword} -localonly

インストール

インストールしたいパッケージが見つかったら、choco instll(もしくはcinst)コマンドで依存するパッケージを含めてインストールすることができます。

choco install {packageName}

特定のバージョンをインストールする場合は以下のようにVersionオプションを指定します

choco install {packageName} -Version {Verison}

また、下記のようなxmlをpackages.configという名前で用意しておき、パッケージ名を指定する代わりにpackages.configを指定すると、xmlに記述したパッケージをまとめてインストールすることができます。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="virtualbox" />
  <package id="vagrant" version="1.6.5" />
</packages>
  • コマンド
choco install packages.config

アップデート

Chocolateyを通じでインストールしたパッケージは以下のコマンドでアップデートできます。

choco update {packageName}

パッケージ名の代わりにallと指定することで、すべてのパッケージをアップデートします。

choco update all

また、以下のようにupdateの後にパッケージを指定しないとChocolatey自体のアップデートを行います。(choco update chocolateyと同義です)

choco update

アンインストール

Chocolateyを通じてインストールしたパッケージをアンインストールします。

choco uninstall {packageName}


ただし、アンインストールについてはパッケージ側で対応していない場合が多いようです。

choco uninstall vagrant

上記のコマンドを試してみたところ、Chocolateyのリストからは削除されたものの、Windowsにはインストールされたままになっていました。
理由についてはこちらのスライドをご覧ください。

終わりに

手軽で便利なChocolateyですが、結構自由にアップできるせいか、パッケージごとに品質や更新の頻度がまちまちです。
また、ものによっては類似のパッケージが存在することもあり、どれをインストールしたらいいかぱっと見て判断できない場合があります(特にjdkのパッケージ)。

とはいえ、いちいちブラウザから公式サイトにアクセス⇒ダウンロード⇒インストールという手順を踏まずに、コマンドラインから1発でインストールできる手軽は非常に魅力的です。


また、余談になりますがWindows 10(というかWindows Management Framework5.0)にはOneGetというMicrosoft謹製のパッケージマネージャーが導入されるようです。
OneGetではChocolateyのリポジトリに登録されているパッケージもインストール可能とのことです。
将来的にOneGetに取り込まれていく可能性が十分ありますが、Chocolateyは現時点でのWindows用パッケージマネージャのデファクトスタンダートとして扱われているといってよいでしょう。

ぜひ一度試してみてはいかがでしょうか。

※ OneGetについてはMSDNのブログのこのエントリが参考になります。