Meteor のインストールで Unexpected EOF が出る
◆ ダウンロード完了後に Unexpected EOF エラー
◆ その後リトライは別の HTTP のエラーレスポンス
◆ ダウンロードは完了してるみたいなので ダウンロード済みファイルを使うようにインストーラを改造して対処
◆ Meteor は気軽にあれこれいじるのに向かなそう
◆ その後リトライは別の HTTP のエラーレスポンス
◆ ダウンロードは完了してるみたいなので ダウンロード済みファイルを使うようにインストーラを改造して対処
◆ Meteor は気軽にあれこれいじるのに向かなそう
Meteor のインストール
Meteor をインストールしようとしたらエラーでましたインストール方法は npm ではなく独自のインストーラのシェルスクリプトになります
他のフレームワークとは違って meteor というコマンドが 「/usr/local/bin」 以下にインストールされて このコマンドでプロジェクトを作ったり実行したりとちょっと特殊です
実行するコマンドはこれです
curl https://install.meteor.com/ | sh
実行してみると シェルスクリプト内部の処理で Meteor のファイルのダウンロードが始まります
170MB くらいあってけっこう時間がかかります
ダウンロードの curl でエラー
そしてやっと終わったと思ったらDownloading Meteor distribution
######################################################################## 100.0%
curl: (56) Unexpected EOF
Retrying download in 5 seconds...
######################################################################## 100.0%
curl: (22) The requested URL returned error: 416
Retrying download in 5 seconds...
######################################################################## 100.0%
curl: (22) The requested URL returned error: 416
Retrying download in 5 seconds...
curl のエラーがでました
100% になっているのに Unexpected EOF というエラーになってリトライをするのですが それ以降は 「416 Requested Range Not Satisfiable」 が返ってきてるみたいです
何度かやっても同じ結果で最初はダウンロードできて 100% まで行くのに Unexpected EOF というエラーです
この curl エラーはシェルスクリプトの内部で実行される Meteor のダウンロードなのでコマンドに打ってる 「https://install.meteor.com/」 のダウンロードとは違います
Meteor の Issues に行くとそれらしいものはあるのですが 2015 年とか 2016 年とかです
最近に絞ると何もでてこないです
ダウンロードしてるファイル
実行しているシェルスクリプトは https://install.meteor.com/ なので中を読むとダウンロードしてるファイルの URL はhttps://static-meteor.netdna-ssl.com/packages-bootstrap/1.6.1.1/meteor-bootstrap-os.linux.x86_64.tar.gz
でした
私の場合はこうなっていましたが URL の作成は
https://static-meteor.netdna-ssl.com/packages-bootstrap/${RELEASE}/meteor-bootstrap-${PLATFORM}.tar.gz
という文字列の変数を展開したものです
RELEASE は今の最新版で 「1.6.1.1」 になっていました
PLATFORM のほうは fedora だと 「os.linux.x86_64」になるようです
何度もエラーになるので このファイルが壊れてるのかと思い Windows でダウンロードしてみると普通に開けました
でも 直接 Linux 上で curl コマンドを使ってみると Unexpected EOF なのは変わりません
curl https://static-meteor.netdna-ssl.com/packages-bootstrap/1.6.1.1/meteor-bootstrap-os.linux.x86_64.tar.gz --output $HOME/.meteor-tarball-tmp
エラーにはなるものの 100% になってますし ファイルは残ってるので無理矢理このダウンロードしたファイルを使わせてみます
ダウンロード済みファイルを使う
上のコマンドで指定してる output の場所がインストーラが指定してる場所ですそこにすでにファイルがあるのでインストーラのダウンロードの部分を消してしまえばすでにダウンロード済みのものを使ってくれます
まずはインストーラをダウンロードします
curl https://install.meteor.com/ > meteor.sh
この meteor.sh を編集して
while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]
do
ATTEMPTS=$((ATTEMPTS + 1))
curl $VERBOSITY --fail --continue-at - \
"$TARBALL_URL" --output "$TARBALL_FILE"
if [ $? -eq 0 ]
then
break
fi
echo "Retrying download in $RETRY_DELAY_SECS seconds..."
sleep $RETRY_DELAY_SECS
done
の部分を消します
ここがダウンロードと失敗したら繰り返しをしてる部分です
ダウンロードの時間が長いので別にダウンロードしていたファイルを使う方法にしましたが まだダウンロードしたのがローカルにないならエラーチェックしないでそのままダウンロードしたのを使うというように書き換えてもいいと思います
またダウンロード済みを使う場合は
# Remove temporary files now in case they exist.
cleanUp
も消しておく必要があります
ダウンロード前に一時ファイルのパスをクリアしてるのでせっかくダウンロードしたのが削除されます
あとは
sh meteor.sh
で編集済み sh ファイルを実行すれば tar.gz ファイルを解凍してインストールしてくれます
100% にはなってたものなので 解凍でも問題なくインストールは成功しました
ファイルに問題ないなら curl のエラーはいったいどうして起きるのでしょうね
使った感じ
インストールもできたしと使ってみましたが 思った以上に使いづらいですサーバもクライアントもまとまったタイプのフレームワークですし 他とは違うものとは思ってましたけどここまでとは思いませんでした
最初からいろいろ設定されててこうすればいい みたいなチュートリアルはあるものの 自分がこうしたいというのをやる方法が見つけづらい感じです
もっとシンプルなサンプルがいっぱいあるといいのですけどね
フレームワーク自体がシンプルな作りなら 自分でコードみたりして仕組みを把握できればいろいろ勝手が効くのですが Meteor は内部でいろいろ複雑なことしてそうで 単純なコマンドで作ったり実行はできるようになってるもののカスタマイズは慣れるまでは大変そうです
npm じゃない独自のパッケージマネージャとかあるくらいですしね
https://atmospherejs.com/
さらには npm のパッケージ入れるには npm コマンドじゃなくて meteor コマンドの中で npm サブコマンドを使うという方法だったりします
プロジェクトを作ったり実行するときにも 1 分近くロードで待たされてる感じで内部でビルドとかすごくいろいろやってそうです
サンプルで作ってくれるデフォルトのプロジェクトは時間の割に中身がほとんどない と思ったら .meteor フォルダ以下にいろいろありました
node_modules 以下はシンプルで .meteor 以下がメインのようです
ちなみに実行時にシンボリックリンク作成が必要みたいで cifs マウント環境だと実行ができなかったです
※ (追記) こっちの記事で cifs マウント環境でも実行できるようにする方法を書いてます
気軽にちょっと使ってみるというのは大変そうなのでまた暇な時にでも使って見るかもです