こんにちわ、こんばんは、おはようございます、hiranoです。
お仕事では多数のサーバーを扱うことが多いのですが、各サーバーのapacheを再起動したりする際にcapistranoを使っています。 WindowsマシンにVMでubuntuを起動してそこからcapistranoを使っているのですが、capistranoのためだけにVMを起動するのが無駄だなあと思ってたところ Windowsでもcapistrano使えますよ という情報を同僚のSさんから聞いたのでやってみることにしました。
紹介された[Rails][Caspitrano]Windows端末だけでCapistranoを使うの通りにすれば出来そうだなーというのは分かったのですが、Macのhomebrewとかnpmとかパッケージ管理が便利なのでWindowsでもないのかなと探し始めて…というのがこの記事の元です。
いきなり言い訳
前段の通り、本来の目的はcapistranoを使いたいだけです。ですので、本格的にパッケージ管理の仕組みを評価したりはしていません。この点については予めご了承ください。
Windows向けのパッケージマネージャー
ということでググって探してみたところメジャー(かどうかは分かりませんが)どころとして以下の3つが見つかりました。
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
- 環境変数
ChocolateyInstall
にインストール先のディレクトリを指定 ユーザー変数の方に入れなきゃダメらしいです。これでハマりました。 - 1で指定したディレクトリを作る(当たり前ですが)
- コマンドプロンプトを起動
- 環境変数が反映されているかコマンドプロンプトとWindows Powershellの 両方 で確認
- コマンドプロンプトで
echo %ChocolateyInstall%
で出ればOK - 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を使ってみましたが、微妙な点がいくつかありました。
- インストールがインストーラーを起動するだけなので半自動でしかない homebrew や npm だと自前でソース持ってきてビルドして・・・となるのですが、chocolateyの場合はインストーラーをダウンロードして実行するという形のようなので、homebrewのように考えているとちょっと面食らいます。 ※おそらくWindowsの問題なんだとは思いますが。
- アンインストールがchocolateyだけでは出来ない 今回の試行錯誤中にインストールしたrubyをアンインストールしたのですが、chocolateyだけではアンインストールできず、以下の手順を踏む必要がありました。 ※方法はあるのかもしれませんが。
と、否定的なことを書いてしまいましたが chocolatey install プロダクト名
でインストールが出来るだけでも便利なので、使ってみてはいかがでしょうか。