GIG

赴くままに技術を。

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を利用する

あとから見てやっぱりこっちを入れておけばよかったと後悔。。 以下のものが利用可能

上記と同じことをしてみる。

    $ 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] [次へ]を押下

f:id:hermesian:20140220123541p:plain

[2] "Install from Internet"を選択

f:id:hermesian:20140220123546p:plain

[3] C:ドライブがかつかつなので、"Root Directory"として、D:\software\cygwinと入力

f:id:hermesian:20140220123543p:plain

[4] インストールしたものが格納される場所を選択。同様にD:\software\Downloadsと入力

f:id:hermesian:20140220123544p:plain

[5] ディレクトリが存在しないので、新たに作るとさ

f:id:hermesian:20140220123545p:plain

[6] Proxyサーバの背後にいるので、Proxyサーバを指定する。Google chromeと同じでIEの設定を見に行くを選択すれば良い(ID, パスワードを設定している場合、この後の画面で入力が求められる)。

f:id:hermesian:20140220123546p:plain

[7] "Download Site"は国内(*.jp)を選択しておくことが無難。ここではftp://ftp.jaist.ac.jpを選択

f:id:hermesian:20140220123547p:plain

[8] あとあとapt-cygでインストールするため、ここでは最低限のやつのみ入れておく。

[9] インストールのサマリが表示されるので、[次へ]ボタンを押下

f:id:hermesian:20140220123551p:plain

[10] インストールされ、これでCygwinのインストールが完了となります。

f:id:hermesian:20140220123552p:plain

パッケージマネージャapt-cygをインストール

Cygwindebian 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の環境を整備します。