!注意
http://passingloop.tumblr.com/post/10512902196/difference-between-rbenv-and-rvm
あとで、この記事を読んでrvmやめてrbenvにしたほうが良いと思いました。あとでやり直そう
まだやってないけどこの手順が使えそう
http://d.hatena.ne.jp/sandmark/20121122/1353625485
!なんでこんなことをやるのか
rubyやnodeの新しいやつを入れたい -> rbenv, bundler
ruby,nodeのパッケージをアプリケーションごとに違うものにしたい -> nvm, npm
!サーバにrubyを入れる話
うちのサーバはDebianなのですが果たして無事入るのか?
rubyを普通に入れようとするとruby1.9.1がはいるらしい
いまは2.1.2が超最新っぽい
1.9.3も指定すれば入ることは入るのだが、、、 なんか心配だな
ということでrvmみたいなものを使おう
http://blog.notsobad.jp/post/36074353102/debian-rvm-ruby-rails
>> code bash
$ curl -L https://get.rvm.io | bash -s stable
$ source ~/.rvm/scripts/rvm
<<
>> code bash
ina@necserver:~/sandbox$ rvm -v
rvm 1.25.27 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
<<
はいったっぽい
>> code bash
$ rvm install 1.9.2
<<
うぉ、、apt-getを起動した すごい!
そしてコンパイルが始まる
すごいぞ(おそいけど)
さて、今回使いたいソフトのbundleをいれよう
>> code bash
$ bundle
<<
あれ?これどこに入ったんだ?
うあ
>>
$ bundle install --path vendor/bundle
<<
こうすべきだったのか、、、
rvmで指定しているrubyのどこかに入ったぞ、、
/home/<HOME>/.rvm/gems/ruby-2.1.2/gems
ココに入ったっぽい、、
うぇー
まぁ/以下に入ってないだけ良いが、、、
またbundleの最中にlibpq-devがなくてconfigureでコケているエラーが出たのでaptitudeで入れることに
>> code bash
$ sudo aptitude install libpq-dev
<<
もうこのへんも知らないと出来ないし、、やだなぁ
!!!期待する挙動
- bundleはローカル(Gemfileの近く)にgemsをいれてほしい
- OSのパッケージがなくてビルドできない場合はなんかケアして欲しい
-- もしくはaptitudeとgemsが上手く連携して欲しい、両方を別々に管理は本当はしたくない
!サーバにnodeを入れる話
ついでにnodeも入れよう
https://hirooka.pro/?p=990
>> code bash
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm install 0.10.29
<<
nodeは今回まだ使いたいソフトがないのでこのまま
npm installはローカルに入れてくるはずなのでrubyみたいなことはないはず
!ソフトウェアスタックが深すぎる話
- ゲストOS
- vagrant
- ホストOS
- ホストOSパッケージシステム(aptitude)
- nvm (node)
- npm
- grunt
!!うちの場合
うちは実機サーバでやってるので
|OS|新しいバージョンが出たら上げる。ドライバ周りとか
|OSパッケージシステム|言語系以外のパッケージ。言語系の依存関係で入るバイナリビルドに必要なライブラリヘッダ
|nvm|nodeのバージョン管理
|npm|nodeのパッケージの管理(OSパッケージシステムにも同様のものがある場合があるがそちらは使うべきではない)
|grunt|node版makeみたいなもん
OSパッケージシステム、nvm、npmがなんかこう似たようなことをやってる気がしてならない
たぶんnvmはdebianならalternativeみたいな仕組みがあったきがするし、apt-getとかがnpmをwrapしてくれれば良いような気もする、、 がnpmの扱っているライブラリはプロジェクトごとに固定したいこともあるしむずかしいかなぁ、、全部dockerみたいなのでやるということにしてグローバルに突っ込んじゃえって考えなら全部apt-getの層に寄せられるかな
5643382
wiki
1403975276