環境構築アレルギーすぎるので各環境の構築方法をとりあえず記事にしたい
環境構築ほんとつらくて、考えるのすらつらくて、何かしらのインストールコマンドを打つことを想像しただけで変な色した文字が大量に画面に出てきて「えっ・・・えっ・・・」となる未来に帰着してしまう。
それのなにがめんどくさいのか仮説を立てると、
- 適当にインストールコマンド打つ<->うまくいかなくてggる
このサイクルがいけないんじゃないか、と思い始めた。
もしかしたら最初に確実に上手くいく未来を予め想像しておけば、念じながらコマンドを打って、一発で成功して、その結果をDockerfileにでも固めて二度と環境構築からおさらば出来るかもしれないなと妄想できたので、事前準備として環境依存をネットサーフィンして集めてくることにした。
ゴールとしては
あたりが入れられればもう悩まず生きていけそう。いちばんこわいのはRails入れる時だったかに顔を出すnokogiri。こわい。
フロントのスタックはとりあえずnodeだけ。その後はいろいろ二転三転しそうなのでまだ考えないでおく。 ->めんどそうなので保留
あとなんとなくDebianを使う。この辺のOSの何をチョイスすべきか話はよくわからない。普通のサーバーにインストールするタイプのなんとなくならCentOSなんだろうけど、Docker imageという文脈上はDebianな気がしてしまった。この辺は詳しい人に聞かないと・・・。
Git
$ sudo apt-get install git-all
これだけ。
多分これ以外の方法を取ろうとするとソースコードからコンパイルになるが、そうする理由が今のところない
Ruby
OSのパッケージマネージャを使うかRubyのインストーラを使うかで話が変わってくる。
OSのパッケージマネージャ編
$ sudo apt-get install ruby-full
これだけ。 しかし
As of writing, the
ruby-full
package provides Ruby 2.3.1, which is an old stable release, on Debian and Ubuntu.
だそうで、どうやらOS上のパッケージマネージャがRuby言語をどれだけメンテする気があるかに依存しそうである。
Rubyのインストーラ編
ruby-build is a plugin for rbenv that allows you to compile and install different versions of Ruby into arbitrary directories. ruby-build can also be used as a standalone program without rbenv. It is available for OS X, Linux, and other UNIX-like operating systems.
rbenvはローカルにインストールする時によくお世話になるやつだが、そのプラグインであるruby-buildは単体で使えるらしい。将来的にDocker化する用途ならひとつのOSに複数バージョンのRubyを入れる必要は無さそうなので、ruby-buildだけで良さそう。
# As a standalone program
$ git clone https://github.com/rbenv/ruby-build.git
$ PREFIX=/usr/local ./ruby-build/install.sh
Readme見るに、これでruby-buildだけをインストール出来る。
Rubyを入れる時は
# As a standalone program
$ ruby-build --definitions # lists all available versions of Ruby
$ ruby-build 2.2.0 ~/local/ruby-2.2.0 # installs Ruby 2.2.0 to ~/local/ruby-2.2.0
こうするとよいらしい。
ruby-build does not check for system dependencies before downloading and attempting to compile the Ruby source. Please ensure that all requisite libraries are available on your system.
ruby-buildはRubyに依存しているプログラムを自動的にインストールしてくれないので、推奨されてる事前呪文みたいなものがあるらしく
$ apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
Home · rbenv/ruby-build Wiki · GitHub
Debianな人はこいつを事前に打っておけ、と書いてくれていた。ありがたい。
両方見た感じ圧倒的に簡単なのはOSのパッケージマネージャだがバージョンの柔軟性求めるとどうしてもインストーラを頼らざるをえず、それもそこそこめんどいという結論になりそう。
Bundler
$ gem install bundler
Bundler: The best way to manage a Ruby application's gems
普通のgemなのでこれでOK
MySQL
うー、こいつはかなりこわい。過去に色々やられた記憶が蘇る。
超消極的にいくなら
$ sudo apt-get install mysql-server
を打つだけ。OSのパッケージマネージャ頼りっきりパターン。
上記のページ的には下記もやっておいたほうがいいと書かれている。
$ sudo apt-get update
$ sudo apt-get upgrade
これ以外にtarballからインストールするというマッチョなやり方があって、本当はこちらのほうがいいと思うが、手を出す気にはなれない・・。
MySQLに関してはOracleが直接MySQLサーバー用のDockerfileを出していたりして、Dockerを使うならこちらを使ってコンテナを立てて、Railsなりが入った別のコンテナから通信させるのが得策な気がしている。
https://hub.docker.com/r/mysql/mysql-server/
Rails
これまでインストールしてきたのがRailsインストールのための伏線になっていた気がしていて、それらが問題なくインストール出来ていれば問題なくRailsもインストール出来るし、rails newしてbundle installも通ってアプリが立ち上げられるのではないかと考えている。まあこれまでと同様にコマンドを貼るなら
$ gem install rails
これだけ。
ひとまずこれらで難なくインストールいけるはず・・・ということで後日なんらかの動きを出来るはず。やってみます。
nodeまわりはまだあんまり詳しくないのでreactあたりのフロントスタックと一緒に関係性含めてまとめられたらいいなあ。
ひとまず環境構築アレルギー改善に向けて少しは動けた。あともう少し。