倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

裏バレンタインデーに chocolatey はいかが?

本日8月14日は前回のバレンタインデーから半年が過ぎ、次のバレンタインデーまで半年となった裏バレンタインデー。 というのはこじつけですが、Windows でいろいろなツールをダウンロード & インストールしてくれるツールChocolatey を試してみました。

参考

Chocolatey のインストール

Chocolatey はいろいろなツールを簡単にダウンロード & インストールできるツールですが、このツール自体のインストールが面倒と意味がないとまでは言わないまでも、使うのにハードルが上がってしまいます。 幸い、Chocolatey のインストールは超簡単。 コマンド・プロンプトから行う方法と、昨今話題(もうほとぼり過ぎた?)の PowerShell から行う方法があります。

コマンド・プロンプトからインストール
コマンド・プロンプトを開き、Chocolatey のサイトにある C:\> に続く「@powershell」で始まるコマンドをコピペして実行します。 こんな感じのコマンド(リンク先は実質1行ですが):

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

実際の実行は PowerShell に任せているので PowerShell がインストールされてないと動かないと思いますが、さすがにいまどき XP 使ってる人はいないだろうし、Windows 7 以降はデフォルトで PowerShell がインストールされているので問題ないと思います*1。 まぁ、コマンドの詳細は知ってる必要ありませんが

  • @powershell ・・・ PowerShell 呼び出し
  • -NoProfile ・・・ プロファイル(予備設定?)なし
  • -ExecutionPolicy unrestricted ・・・ 実行ポリシー制限無し*2
  • Command "..." ・・・ 直後のコマンドを実行
  • SET PATH= ... ・・・ 環境変数 PATH を再定義

みたいな感じです

PowerShell からインストール
昨今注目を浴びている PowerShell からのインストールする方法。 ちなみに PowerShell

スタートメニュー
  → すべてのプログラム
  → アクセサリ
  → Windows PowerShell
  → Windows PowerShell

から開くか、もしくはコマンド・プロンプト上で以下のコマンド

powershell

を実行します。 PowerShell を開いたら、ちょっと設定*3。 まず

Run as Administrator

で「管理者として実行」モードにして、

Set-ExecutionPolicy RemoteSigned

として実行ポリシーを「RemoteSigned」にします。

実行ポリシーの設定ができたら、Chocolatey のサイトにある PS:\> に続く「iex」で始まるコマンドをコピペ(PowerShell 上への貼り付けは右クリックだけでできます)して実行します。

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

このコマンドの実行に管理者権限が必要なのか分かりませんが、普通に実行して無理なら管理者権限でやってみて下さい。

Chocolatey によるツールのインストール

Chocolatey がインストールできたら、いろいろなツールを簡単なコマンド実行で & インストールできます。 どんなツールがインストールできるかは、Chocolatey のサイト右上にある「Serch Packages」から検索するか、タイトル下のグローバルナビゲーション「Packages」から探せます。 2014年8月14日現在で2,000ちょっとのパッケージ(ツール)が登録されてるようで。

Chocolatey を使ってツールをインストールするには、「choco install 《パッケージ名》」とします*4。 《パッケージ名》の部分は Chocolatey のサイトで検索して下さい。 例えば Haskell をインストールするにはコマンド・プロンプトもしくは PowerShell 上で

choco install HaskellPlatform

と実行します。 ツールのダウンロードとインストーラの実行は自動でやってくれます。 ツールによっては途中でダイアログが現れたりするので適宜進めて下さい。 PowerShell 上でうまく動かない場合は「管理者として実行」モード(「Run as Administrator」コマンドを実行)で試してみてください。

ちなみに

とかなので、以前あった IE がセキュリティ的に動かせない!なんてときにもブラウザなしで他のブラウザをインストールできます(.NET フレームワークセキュリティホールとかだとまずそうだが)。 ちなみに IE 自体も Chocolatey でインストールできるそうで。

  • IE11 ・・・ 「choco install ie11」

ツールのアンインストールはたぶん「choco uninstall 《ツール名》」でできます。 コントロールパネルの「プログラムと機能」あたりからもアンインストールできるかと思いますが、ダウンロードしたアーカイブや Chocolatey が設定した環境変数の削除は自分で行う必要がありそうです。

Chocolatey の構成とアンインストール

以下は別に知らなくてよい話です。

Chocoletey のインストールや実行に関係するディレクトリは、デフォルト設定で以下のようになってます(Windows 7):

  • C:
    • ProgramData
      • chocolatey
        • bin
        • chocolateyinstall
        • lib
    • bin
  • 《ユーザーホーム》
    • AppData
      • Local
        • NuGet
      • Roaming
        • NuGet

Chocolatey のインストール・ディレクトリは Windows のバージョンによると思いますが、Windows 7 では 

C:\ProgramData\chocolatey

でした。 このパスは環境変数

  • ChocolateyInstall

に自動的に設定されます。 逆に、Chocolatey をインストールする前にこの環境変数を設定しておくと、そのディレクトリへ Chocolatey のインストールが行われるようです。 %ChocolateyInstall%\bin ディレクトリには「choco」コマンドのような Chocolatey で使えるコマンドがあります。

C: 直下のディレクトリは、「Program Files」にインストールされないツールが配置されるようです(たぶん)。 このディレクトリが自動生成されると、以下の2つの環境変数

  • chocolatey_bin_root
  • ChocolateyBinRoot

も生成されるようです。

Chocolatey を手動でアンインストールする場合は、上記の太字にしているディレクトリを削除する必要があります。 ただし、C: 直下の bin ディレクトリはないかもしれません。 また、自動的に設定された上記の環境変数も削除しておきましょう。 また、ツールによってはユーザー環境変数以外に、 システム環境変数を書き換えるものもよくあるようなので、Chocolatey をアンインストールする場合には、事前に Chocolatey 経由でインストールしたツールをアンインストール(この場合、システム環境変数も書き換えてくれる)しておいた方がよいかと思います。

前から(簡単には)書こうと思ってた記事でしたが、本日がちょうどバレンタインデーから半年後(半年前?)だったので衝動で書いてみましたが間違いがあったらすいません。 Chocolatey はおろか、PowerShell も大して使えないヤツでして。 と、男のくせにウジウジ言い訳してみたりして。

【改訂新版】 Windows PowerShell ポケットリファレンス

【改訂新版】 Windows PowerShell ポケットリファレンス

Windows PowerShellクックブック

Windows PowerShellクックブック

*1:拙者はバージョンを 4.0 にしてから実行したので、もしかしたら Windows 7 のデフォルトである 2.0 とかだと動かなかったりして。 試してないので分かりません。

*2:実際には unrestricted ではなく RemoteSigned で充分だそうです

*3:Windows 8.1 では実行ポリシーのデフォルトが RemoteSigned になってるので、以下の設定は必要ないかも知れません。

*4:ちょっと前までは「cinst」コマンドでしたが、現在は「choco」コマンドに「install」を指定して実行するようになったもよう。 「cinst」も使えるみたいですが。