interprism's blog

インタープリズム株式会社の開発者ブログです。

WindowsマシンでChocolateyを使ってcapistranoをインストールする

こんにちわ、こんばんは、おはようございます、hiranoです。

お仕事では多数のサーバーを扱うことが多いのですが、各サーバーのapacheを再起動したりする際にcapistranoを使っています。 WindowsマシンにVMubuntuを起動してそこからcapistranoを使っているのですが、capistranoのためだけにVMを起動するのが無駄だなあと思ってたところ Windowsでもcapistrano使えますよ という情報を同僚のSさんから聞いたのでやってみることにしました。

紹介された[Rails][Caspitrano]Windows端末だけでCapistranoを使うの通りにすれば出来そうだなーというのは分かったのですが、Macのhomebrewとかnpmとかパッケージ管理が便利なのでWindowsでもないのかなと探し始めて…というのがこの記事の元です。

いきなり言い訳

前段の通り、本来の目的はcapistranoを使いたいだけです。ですので、本格的にパッケージ管理の仕組みを評価したりはしていません。この点については予めご了承ください。

Windows向けのパッケージマネージャー

ということでググって探してみたところメジャー(かどうかは分かりませんが)どころとして以下の3つが見つかりました。

  1. Chocolatey
  2. npackd
  3. nuget

nugetは.NETの開発環境向けのようなので除外してしまいます(適当)。

npackdとchocolateyはあまり違いが分かりませんが、サイトを見る限りだとchocolateyの方がナウくて分かりやすいのでchocolateyを使うことに決めました。

chocolateyの読み方を誰か教えてください…。

Chocolatey のインストール

サイトを見るとインストール方法として、

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

とあります。おそらくこれを叩けばインストールできるのでしょう。 ですが、諸事情により別ドライブのディレクトリにインストールしたいのでこれは使いません。 と、やり方を探したところこちらにありました。

https://github.com/chocolatey/chocolatey/wiki/Installation#before-you-install

  1. 環境変数 ChocolateyInstall にインストール先のディレクトリを指定 ユーザー変数の方に入れなきゃダメらしいです。これでハマりました。
  2. 1で指定したディレクトリを作る(当たり前ですが)
  3. コマンドプロンプトを起動
  4. 環境変数が反映されているかコマンドプロンプトWindows Powershell両方 で確認
    1. コマンドプロンプトecho %ChocolateyInstall% で出ればOK
    2. Windows Powershell$Env:ChocolateyInstall で出ればOK

と、ここまでは書いてあったのですが、肝心のインストールコマンドが見当たりません。 ということで適当にやってみました。

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

まさかの成功。

コマンドプロンプトchocolatey /? と打ったらちゃんと動いたので大丈夫っぽいです。

Ruby のインストール

capistranoを使うにはRubyが必要です。

ruby のバージョンを確認

> chocolatey version ruby

name : ruby
found : no version
latestCompare : 000000000002.000000000000.000000000000.000000035300
verMessage : A more recent version is available
latest : 2.0.0.35300
foundCompare :

最新は 2.1 だけどとりあえずインストールします。と、インストール先を指定したいので調べたらここにありました。

https://github.com/chocolatey/chocolatey/wiki/CommandsInstall#installarguments-optional---v09813

> chocolatey install ruby -ia '/dir=''D:\path\to\install'' '

Chocolatey (v0.9.8.23) is installing 'ruby' and dependencies. By installing you
accept the license for 'ruby' and each dependency you are installing.
______ ruby v2.0.0.35300 ______
Downloading ruby 32 bit (http://dl.bintray.com/oneclick/rubyinstaller/rubyinstal
ler-2.0.0-p353.exe?direct) to C:\Users\115080~1\AppData\Local\Temp\chocolatey\ru
by\rubyInstall.exe
Using this proxyserver: ********
Installing ruby...
Elevating Permissions and running C:\Users\******\AppData\Local\Temp\chocolate
y\ruby\rubyInstall.exe /verysilent /dir="C:\ruby200" /tasks="assocfiles,modpath"
. This may take awhile, depending on the statements.
ruby has been installed.
ruby has finished successfully! The chocolatey gods have answered your request!
Adding 'C:\ruby200\bin' to the local path
ruby has finished successfully! The chocolatey gods have answered your request!
Finished installing 'ruby' and dependencies - if errors not shown in console, no
ne detected. Check log for errors if unsure.
Reading environment variables from registry. Please wait... Done.

> echo %path% して、パスにインストール先が入っていなかったら追加します。 (もし入って入ればやる必要はありません)

> set path=%path%;D:\path\to\install\bin

で、確認

> ruby -v
ruby 2.0.0p353 (2013-11-22) [i386-mingw32]

capistranoのインストール

の前に gems を最新に

gem update --system

で、インストール(今回は2.x系)

gem install capistrano --version "2.15.5"

プロキシがある場合は以下のようにします。

gem install capistrano --version "2.15.5" --http-proxy http://プロキシー:ポート

動作確認

cap コマンドが使えるはずなので適当に実行して問題なければOKです。

あとがきというか補足というか

今回はじめてchocolateyを使ってみましたが、微妙な点がいくつかありました。

  1. インストールがインストーラーを起動するだけなので半自動でしかない homebrew や npm だと自前でソース持ってきてビルドして・・・となるのですが、chocolateyの場合はインストーラーをダウンロードして実行するという形のようなので、homebrewのように考えているとちょっと面食らいます。 ※おそらくWindowsの問題なんだとは思いますが。
  2. アンインストールがchocolateyだけでは出来ない 今回の試行錯誤中にインストールしたrubyをアンインストールしたのですが、chocolateyだけではアンインストールできず、以下の手順を踏む必要がありました。 ※方法はあるのかもしれませんが。
    1. コントロールパネルから プログラムと機能 を開いて ruby をアンインストール
    2. chocolatey のディレクトリの中の ruby を手動で削除

と、否定的なことを書いてしまいましたが chocolatey install プロダクト名 でインストールが出来るだけでも便利なので、使ってみてはいかがでしょうか。

PAGE TOP