2013年06月16日

Windows用パッケージ管理システムの「Chocolatey」が良い感じ

Windows用のパッケージ管理システム「Chocolatey」が結構良い感じだ。

パッケージ管理システムとは

UnixやLinuxといったOS(或いはそのディストリビューション)では、各種ソフトの導入や削除、更新に専用のソフトウェアを用いる。そのソフトウェアの事をパッケージ管理システムと呼ぶ。例えば、portsYumAPT等といった物が有名だ。

パッケージ管理システムから導入したソフトは、同システムを用いる事で一括更新する事が可能だ。わざわざ各ソフトの更新を自分で調べる必要はない。コマンド一つや4~5クリックぐらいの手間で、簡単に最新のソフトを導入する事が出来る。入手したいソフトが別のソフトに依存していた場合は、自動的にその依存先ソフトも導入してくれる。定期的に自動実行するようにしておけば、ソフトウェアの更新作業から完全に解放される事も夢ではない。

Windowsには多種多様なオンラインソフトが存在し、それこそがWindowsの価値となっているが、パッケージ管理システムは長らく存在しなかった(少なくともメジャーな存在としては)。

Chocolatey

ChocolateyはWindows用のパッケージ管理システムだ。主に開発用ツールが登録されているようだが、非開発者にも有用なソフトも多い。具体的にどのようなソフトが登録されているかは、"Chocolatey Gallery | Packages"で確認出来る。

インストール

Chocolateyを動かす為には、 Windows PowerShell が必要になる。先ずはPowerShell(と、それに必要な .NET Framework のランタイム)のインストールが必要になる。といっても、Wikipediaに拠ると Windows 7 或いは Windows Server 2008 以上には標準添付されているという。それ以外の環境では、恐らく Microsoft Update から入手するのが一番手っ取り早い。

PowerShellの用意が終わったら、いよいよChocolatey自身をインストールする。

先ず、コマンドプロンプト(いわゆる「黒い画面」)を起動する。 Windows 7 以前であれば、"スタート"メニューから"すべてのプログラム"→"アクセサリ"→ "コマンド プロンプト" と辿る。 Windows 8 ならば、アプリ用の検索チャームから探し出すのが一番早道だろう。

コマンドプロンプトのウィンドウが立ち上がったら、以下の内容を入力、或いはコピペEnterキーを押す。コマンドプロンプトへの貼り付けは、マウス右クリックか、Alt+Spaceキーで開いたウィンドウのショートカットメニューから"編集"→"貼り付け"と選ぶ。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "[System.Net.ServicePointManager]::ServerCertificateValidationCallback={$true}; iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

これで、そのコマンドプロンプトのウィンドウからChocolateyを利用する事が出来る。別のコマンドプロンプトのウィンドウでも利用出来るように、PATH環境変数へ"%systemdrive%chocolatey\bin"を追加しておくと良い。

使い方

コマンドプロンプト上で "chocolatey /?" と入力すれば使用方法が表示される。

"chocolatey install HOGE" で、HOGEという名のパッケージ(ほぼソフト自体の事と考えて良い)をインストールし、 "chocolatey list HOGE" で、パッケージ名、説明文、或いはタグに"HOGE"を含む物を検索する。

"chocolatey update HOGE" で"HOGE"パッケージを更新、全ての導入パッケージを更新したい時は "chocolatey update all"

"chocolatey uninstall HOGE" で、パッケージ"HOGE"を削除出来る。

"chocolatey ~"と入力するのは面倒なので、幾つか短縮名が存在する。

Chocolateyのコマンドと、その短縮名の一例
chocolatey installcinst
chocolatey uninstallcuninst
chocolatey updatecup
chocolatey updatecup
chocolatey listclist

導入しているセキュリティソフトに依っては、Chocolateyが上手く動作しない事があるようだ。例えば、 Comodo Internet Security 6.1.276867.2813 では、 Behavior Blocker を一時的にオフにしないと以下のようなエラーが発生する。

Get-WmiObject : RPC サーバーを利用できません。 (Exception from HRESULT: 0x800706BA)
At C:\Chocolatey\chocolateyinstall\helpers\functions\Get-ChocolateyWebFile.ps1:42 char:29
+   $processor = Get-WmiObject <<<<  Win32_Processor
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], COMException
    + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Get-WmiObject : RPC サーバーを利用できません。 (Exception from HRESULT: 0x800706BA)
At C:\Chocolatey\chocolateyinstall\helpers\functions\Get-ChocolateyWebFile.ps1:43 char:28
+   $procCount=(Get-WmiObject <<<<  Win32_ComputerSystem).NumberofProcessors
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], COMException
    + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Write-Error : git.install did not finish successfully. Boo to the chocolatey gods!
-----------------------
[ERROR] Cannot index into a null array.
-----------------------
At C:\Chocolatey\chocolateyinstall\helpers\functions\Write-ChocolateyFailure.ps1:29 char:13
+     Write-Error <<<<  $errorMessage
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Error

Write-Error : git.install did not finish successfully. Boo to the chocolatey gods!
-----------------------
[ERROR] Cannot index into a null array.
-----------------------
At C:\Chocolatey\chocolateyinstall\helpers\functions\Write-ChocolateyFailure.ps1:29 char:13
+     Write-Error <<<<  $errorMessage
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Error

Cannot index into a null array.
発生場所 C:\Chocolatey\chocolateyinstall\helpers\functions\Get-ChocolateyWebFile.ps1:48 文字:12
+ $processor[ <<<< 0].AddressWidth
    + CategoryInfo          : InvalidOperation: (0:Int32) []、ParentContainsErrorRecordException
    + FullyQualifiedErrorId : NullArray

必要があれば、権限昇格の為の処理を行うようだ。 Windows XP で制限ユーザーのアカウント上でパッケージのインストールを行おうとすると、自動的に"別のユーザーとして実行"ダイアログが表示された。ここで管理者権限をもつアカウントを指定すると、問題なくインストール処理が完了する。


全てのWindows用オンラインソフトを網羅しているわけでもないし、導入出来るのは(現在は)英語版のソフトばかりのようだ。インストールから利用まで全てコマンドプロンプト上での作業になるので、敷居が高いのも確かだ(一応、GUI(通常のWindowsアプリケーション風)で使う為のパッケージも存在するようだが)。しかし、その欠点を補って余りある利点が在るのではないか。ソフトの管理を簡単に行う事が出来る。特に、更新作業を一括で終わらせる事が出来るのは実に素晴らしい事ではないだろうか。

以下の内容を入力、或いはコピペ

Chocolateyのサイトに記述されている内容とは微妙に異なる。以下の内容のエラーが発生する為。

"1" 個の引数を指定して "DownloadString" を呼び出し中に例外が発生しました: "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."
発生場所 行:1 文字:47
+ iex ((new-object net.webclient).DownloadString <<<< ('https://chocolatey.org/install.ps1'))
    + CategoryInfo          : NotSpecified: (:) []、MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException
ラベル:tool Chocolatey
posted by 天井冴太 at 10:00| Comment(0) | TrackBack(0) | IT的つれづれ | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック