CygwinからNode.jsを利用する
anyenvで入れてみる
前回と同様、anyenvを利用して入れてみる。
$ anyenv install ndenv $ exec $SHELL -l
利用可能なバージョンを一覧表示して、選んだ一つをインストール
$ ndenv install --list ..利用できる一覧がでる $ ndenv install v0.11.11
特に何も出力されずに終わった...?????
$ cat /tmp/node.build-XXXXXXXXXXXXXXX.XXXX.log ..特になにも出力されず
特にログも出てない....!!!!???? 試しにanyenvではなく、ndenvを利用してもダメだった。。 何が悪いんだろう。。 時間がとれたときにまた調査してみることに。
ええい、もうWindows版をいれてCygwinから利用してみる
node.jsからWindows(.msi)の32-bit版をダウンロードして、インストールした(特に変わったことはしてない)。
$ node -v v0.10.26 $ npm -v 1.4.3
あるjavascriptのアプリを動かしてみようとしたところ、 expressが無いと。
$ node server.js module.js:340 throw err; ^ Error: Cannot find module 'express' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (D:\software\cygwin\tmp\d3AngularIntegration\server.js:4:13) at Object.<anonymous> (D:\software\cygwin\tmp\d3AngularIntegration\server.js:14:4) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12)
expressをグローバル(どこからでも利用できる形式)で入れる。 何か怒られた。
$ npm install -g express /cygdrive/d/software/nodejs/npm: line 2: $'\r': コマンドが見つかりません /cygdrive/d/software/nodejs/npm: line 4: $'\r': コマンドが見つかりません /cygdrive/d/software/nodejs/npm: line 5: 期待してない token `$'in\r'' のあたりにシンタックスエラー 'cygdrive/d/software/nodejs/npm: line 5: `case `uname` in
Node.jsをWindowsインストーラで入れたら、Cygwinのシェルでnpmがエラーになる - 死ぬまでの暇潰しによると改行コードがCR+LFが認識できないみたい。
改行コードが CR+LF のシェルスクリプトを Cygwin で実行 - ◆ICT備忘録で紹介されているように.bashrcに以下を書いてあげるとCR+LFが認識される。
export SHELLOPTS set -o igncr
これでexpressは入ったが、まだCan't findだと。 expressのパスをwhichで見て、NODE_PATHに追加してやる。
$ export NODE_PATH=$NODE_PATH:(expressのパス) >> ~/.bashrc
それでもCan't find。。もうローカルでいいや。
$ npm install express $ node server.js
ま、これはできました。 node.jsのパッケージの探し方は調査しないとなぁ。
Rdenvを使ってrubyをインストール
開発環境を作るときの問題点
Rdenvインストール
インストール後に気づきましたが、riywo/anyenv · GitHubを利用した方が.bash_profileでの記述等を鑑みて、良かったと後悔...。
入れたもののサマリをしたの表にまとめておく。
パッケージ名 | URL | 説明 |
---|---|---|
rdenv | https://github.com/sstephenson/rbenv | rdenvの本体 |
ruby-build | https://github.com/sstephenson/ruby-build.git | rdenvでinstallコマンドを使うためのプラグイン |
- rdenvのインストール
git cloneするときにgit://だと名前解決できないよと怒られた。 間違いなく自分のPCに原因あるな...。
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv $ echo 'export PATH="$PATH:$HOME/.rbenv/bin"' >> ~/.bashrc $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc $ source ~/.bashrc
- ruby-buildのインストール
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rucby-build
Rubyのインストール
$ rbenv install -l .. インストールするバージョンを選択 $ rvbenv install 2.1.0-rc1 .. 結構長いので放置して帰宅 $ rbenv rehash $ rbenv global 2.1.0-rc1
インストールできたか確認
$ which ruby /cygdrive/c/Users/Owner/.rbenv/shims/ruby $ ruby -v ruby 2.1.0dev (2013-12-20 trunk 44301) [i386-cygwin] $ gem -v 2.2.0.rc.1
anyenvを利用する
あとから見てやっぱりこっちを入れておけばよかったと後悔。。 以下のものが利用可能
- rdenv ; ruby
- plenv ; perl
- pyenv ; python
- phpenv ; php
- ndenv ; node.js
- denv ; D
- jenv ; java
- luaenv ; lua
上記と同じことをしてみる。
$ git clone https://github.com/riywo/anyenv ~/.anyenv $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(anyenv init -)"' >> ~/.bashrc $ exec $SHELL -l
rdenvをインストールする
$ anyenv install rdenv $ exec $SHELL -l
あとは同じ
$ rdenv install (ほしいrubyのバージョン)
[トラブルシューティング] "checking whether the C compiler works... no"
rdenv install中に以下のようなエラーが出た。
checking whether the C compiler works... no configure: error: in `/tmp/ruby-build.20140217161432.7816/yaml-0.1.5': configure: error: C compiler cannot create executables See `config.log' for more details
指示に従って、/tmp/ruby-build.XXXXXXXXXXXXXXX.XXXX/yaml-0.1.5/config.logを見てみたけど、 さっぱり。
gcc: error: unrecognized command line option '-V' gcc: fatal error: no input files compilation terminated. configure:3098: $? = 1 configure:3087: gcc -qversion >&5 gcc: error: unrecognized command line option '-qversion' gcc: fatal error: no input files compilation terminated. configure:3098: $? = 1 configure:3118: checking whether the C compiler works configure:3140: gcc -I/cygdrive/c/Users/Owner/.rbenv/versions/2.1.0-rc1/include -L/cygdrive/c/Users/Owner/.rbenv/versions/2.1.0-rc1/lib conftest.c >&5 /usr/lib/gcc/i686-pc-cygwin/4.8.2/cc1.exe: error while loading shared libraries: cygmpc-3.dll: cannot open shared object file: No such file or directory configure:3144: $? = 1 configure:3182: result: no configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "yaml" | #define PACKAGE_TARNAME "yaml" | #define PACKAGE_VERSION "0.1.5" | #define PACKAGE_STRING "yaml 0.1.5" | #define PACKAGE_BUGREPORT "http://pyyaml.org/newticket?component=libyaml" | #define PACKAGE_URL "" | #define PACKAGE "yaml" | #define VERSION "0.1.5" | #define YAML_VERSION_MAJOR 0 | #define YAML_VERSION_MINOR 1 | #define YAML_VERSION_PATCH 5 | #define YAML_VERSION_STRING "0.1.5" | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; | } configure:3187: error: in `/tmp/ruby-build.20140217185557.8052/yaml-0.1.5': configure:3189: error: C compiler cannot create executables
gccがちゃんとインストールされていないかも。。と思い、再インストールしたら今度はうまくインストールできた。
$ apt-cyg remove gcc-core $ apt-cyg install gcc-core
Cygwin(v2.831)事始め
インストール環境
インストールした環境は、Windows 7 Professional SP1です。 社内で実施したので、Proxyサーバのうらからインストールしました。
参考にした情報
以下の情報を参考にさせて頂きました。 すばらしくまとまっています。
Cygwin で RubyとGitをコンパイルして使おう - Qiita
Cygwin インストール
Cygwin Installationから最新版のCygwinをダウンロードしてくる。ダウンロードしてきたsetup-x86.exeを右クリックし、[管理者として実行]を選択する(たぶん不必要)。
[1] [次へ]を押下
[2] "Install from Internet"を選択
[3] C:ドライブがかつかつなので、"Root Directory"として、D:\software\cygwinと入力
[4] インストールしたものが格納される場所を選択。同様にD:\software\Downloadsと入力
[5] ディレクトリが存在しないので、新たに作るとさ
[6] Proxyサーバの背後にいるので、Proxyサーバを指定する。Google chromeと同じでIEの設定を見に行くを選択すれば良い(ID, パスワードを設定している場合、この後の画面で入力が求められる)。
[7] "Download Site"は国内(*.jp)を選択しておくことが無難。ここではftp://ftp.jaist.ac.jpを選択
[8] あとあとapt-cygでインストールするため、ここでは最低限のやつのみ入れておく。
[9] インストールのサマリが表示されるので、[次へ]ボタンを押下
[10] インストールされ、これでCygwinのインストールが完了となります。
パッケージマネージャapt-cygをインストール
Cygwinでdebian likeなパッケージ管理ができるapt-cygが便利です(setup.exeをいちいち起動せずにコマンドラインでインストール操作が実行できます)。ただ、apt-cyg - PIB - Seesaa Wiki(ウィキ)を見るといくつか亜流ができているようで^^;
いくつかの情報で言及されているhttp://apt-cyg.googlecode.com/svn/trunk/からインストールしてしまうと、リポジトリのパスが変更になった(ftp://ftp.jaist.ac.jp/pub/cygwin/配下がアーキテクチャで別れた)ため、動きません。なので先ほどのリンク先のものを利用します。
$ mkdir /tmp/apt-cyg $ cd /tmp/apt-cyg $ git clone https://github.com/koulokada/apt-cyg . $ chmod +x apt-cyg $ mv apt-cyg /bin/ $ apt-cyg —use-setprc <= setup-x86.exeのcache, mirrorの情報を引き継ぎ $ apt-cyg update
[追記] 2014.02.21
もしパッケージが足りない場合、apt-cygすると以下のようなメッセージが出力されます。 「wget, tar, gawk, bzip2いれてね。」と。
$ apt-cyg install inetutils You must install wget, tar, gawk and bzip2 to use apt-cyg.
Proxy環境でapt-cygを利用する
[追記] 2014.02.21
大事なことを忘れていました。Proxy環境から利用するため、 Proxyサーバを指定する必要があります。 設定するところは、なぜかwget。たぶんダウンロードするためにwget使っているからかな。 /etc/wgetrcに記述します。proxyで検索すると記述例があるので、それに従い記述します。
$ vi /etc/wgetrc ...(省略)... http_proxy = http://proxy.example.co.jp/ https_proxy = http://proxy.example.co.jp/ ftp_proxy = http://proxy.example.co.jp/ ...(省略)...
コンパイラやライブラリをインストール
あとは開発環境を整備するための環境を入れておきます。
$ apt-cyg install gnupg -X $ apt-cyg install gcc-core $ apt-cyg install make patch $ apt-cyg emacs emacs-el $ apt-cyg install libncurses-devel openssl-devel readline libsqlite3-devel libxml2-devel libxslt-devel
次回は、rdenvでrubyの環境を整備します。