phonegapのインストールを試す

PhoneGap というのを使うと、iPhone のアプリを JavaScript と HTML とCSS で書けるというのでインストールしてみた。(同じソースで Android のアプリも作れてしまうらしい。それぞれにアプリの作法の違いもあるから同じに作れてもそれでは好ましくないということもあるだろうけど、できるということは便利なことだ。)

インストールにあたって npm を使うので、そのためにまず node.js をインストールする。
node.js はインストーラーがあるので、起動して、質問に答えていけば無事に終わった。

それから、phonegap自体を

sudo npm install -g phonegap

Windows の場合は sudo なし。 Mac の場合は root 権限で実行するために sudo ではじめることが必要。)

コマンドラインで実行すればいいらしかったけど、
ECONNRESET というエラーが起きて失敗した。

KIMURA-no-MacBook-Pro:~ kimurashinichi$ sudo npm install -g phonegap

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:
npm WARN deprecated deflate-crc32-stream@0.1.2: module has been merged into crc32-stream
npm ERR! Darwin 14.1.1
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "phonegap"
npm ERR! node v0.12.2
npm ERR! npm  v2.7.4
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read

npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
npm ERR! Darwin 14.1.1
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "phonegap"
npm ERR! node v0.12.2
npm ERR! npm  v2.7.4
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read

npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
npm ERR! Darwin 14.1.1
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "phonegap"
npm ERR! node v0.12.2
npm ERR! npm  v2.7.4
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read

検索すると、プロキシを使ってるのにプロキシの設定がしてないと出る、なんて書いてあったりしたものの、結局は、 npm の registry の設定をするとうまくいった。

sudo npm -g config set registry http://registry.nodejs.org/

npm の設定に registry 項目が追加されてる。

KIMURA-no-MacBook-Pro:~ kimurashinichi$ sudo npm -g config list
; cli configs
global = true
user-agent = "npm/2.7.4 node/v0.12.2 darwin x64"

; globalconfig /usr/local/etc/npmrc
registry = "http://registry.npmjs.org/"

; node bin location = /usr/local/bin/node
; cwd = /Users/kimurashinichi
; HOME = /Users/kimurashinichi
; 'npm config ls -l' to show all defaults.

これでうまくいった。

KIMURA-no-MacBook-Pro:~ kimurashinichi$ sudo npm install -g phonegap
npm WARN engine npm@1.4.28: wanted: {"node":">=0.8","npm":"1"} (current: {"node":"0.12.2","npm":"2.7.4"})
npm WARN engine cordova-js@3.7.3: wanted: {"node":"~0.10.x"} (current: {"node":"0.12.2","npm":"2.7.4"})
npm WARN engine xmlbuilder@2.2.1: wanted: {"node":"0.8.x || 0.10.x"} (current: {"node":"0.12.2","npm":"2.7.4"})
npm WARN deprecated deflate-crc32-stream@0.1.2: module has been merged into crc32-stream
 
> ws@0.4.31 install /usr/local/lib/node_modules/phonegap/node_modules/connect-phonegap/node_modules/socket.io/node_modules/engine.io/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o

> ws@0.4.31 install /usr/local/lib/node_modules/phonegap/node_modules/connect-phonegap/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
/usr/local/bin/phonegap -> /usr/local/lib/node_modules/phonegap/bin/phonegap.js
phonegap@4.2.0-0.25.0 /usr/local/lib/node_modules/phonegap
├── pluralize@0.0.4
├── colors@0.6.0-1
├── semver@1.1.0
├── minimist@0.1.0
├── qrcode-terminal@0.9.4
├── shelljs@0.1.4
├── phonegap-build@0.9.1 (colors@0.6.2, qrcode-terminal@0.8.0, optimist@0.3.7, shelljs@0.0.9, phonegap-build-api@0.3.3)
├── prompt@0.2.11 (revalidator@0.1.8, pkginfo@0.3.0, read@1.0.5, winston@0.6.2, utile@0.2.1)
├── cordova@4.2.0 (underscore@1.7.0, q@1.0.1, nopt@3.0.1, cordova-lib@4.2.0)
└── connect-phonegap@0.15.0 (home-dir@0.1.2, connect-inject@0.3.2, ip@0.3.1, ncp@0.6.0, findit@2.0.0, shelljs@0.2.6, request-progress@0.3.1, tar@0.1.19, http-proxy@1.8.1, node-static@0.7.0, gaze@0.4.3, archiver@0.10.1, localtunnel@1.3.0, useragent@2.0.8, request@2.33.0, connect@2.12.0, socket.io@1.0.4)
KIMURA-no-MacBook-Pro:~ kimurashinichi$ 

PhoneGap は Apache Cordova という名前のプロジェクトにもなっているそうだけど、なるほど、無事インストールが終わると、cordovaもインストールされるんだ。cordova フォルダができてるね。