UbuntuにRubyとRailsのインストール
長らくrubyを使っておらずすっかり忘れていて少し時間がかかってしまったのでメモ。
環境
Ubuntu18.04
インストールするもの
Ruby2.4.5 Ruby on Rails 4.2.8
方法
Ruby
ビルドに必要なライブラリをインストールする。
$ sudo apt-get install git gcc build-essential libreadline-dev zlib1g-dev $ sudo apt-get install libssl-dev # Ruby 2.3以下をインストールしたい場合、「libssl-dev」ではなく「libssl1.0-dev」をインストールする必要があるらしい
rbenvのインストールと設定
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc $ source ~/.bashrc
rbenvを使ってruby2.4.5をインストールしてデフォルトでそのバージョンを使うように設定
$ rbenv install 2.4.5 $ rbenv global 2.4.5
$ ruby --version
でバージョンを確認するとよい。
Rails
gemを使ってインストールしていく。(gemはデフォルトで使えるっぽかったので何もせずに使った)
$ sudo gem i -v 4.2.8 rails --no-document
はじめ、次のようなエラーに遭遇したので対処した。
Building native extensions. This could take a while... ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.5.0/gems/nokogiri-1.10.1/ext/nokogiri /usr/bin/ruby2.5 -r ./siteconf20190221-8653-16v0um0.rb extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h extconf failed, exit code 1 Gem files will remain installed in /var/lib/gems/2.5.0/gems/nokogiri-1.10.1 for inspection. Results logged to /var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/nokogiri-1.10.1/gem_make.out
ruby-devをインストールすればよい。
$ sudo apt install ruby-dev
これでいけるはず。
$ sudo gem i -v 4.2.8 rails --no-document
$ rails -v
で望みどおりのバージョンがインストールされていればok。
※railsをインストールする際、「Installing ri documentation」に非常に時間がかかるので「--no-document 」を引数に渡しておくと早くてうれしい
考察
Scalaを使うときにsbtを、Pythonを使うときはpyenvを使って管理しているのだけれど、rbenvは同様に必須だと感じた。
参考
Jupyter notebookでRを使う
以前Jupyter notebookでScalaを使えるようにしたが、最近Rも使えることを知り、Rも使えるようにしました。ちなみにJupyter notebookはC++も使えて、私の環境だとC++11とC++17も使えるようになっています。やり方はおそらく調べればすぐに出てくると思います。
Rを使えるようにするのは非常に簡単で、まずはinstall.packagesで必要なパッケージをインストールし、続いてdevtoolを使ってIRkernelをインストールするだけです。環境はUbuntu18.04でやっていますが、ここではOSは関係ないはずです。
$R > install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest')) > devtools::install_github('IRkernel/IRkernel') > IRkernel::installspec()
これでJupyter notebookを起ち上げて新しくファイルを作るときにRが選択肢に入っているのでそれを選べばokです。
Jupyter NoterbookでScalaを使う
簡単に出来たのでメモ.
現在は違うやりかたで行うことが一般的なようです。(2019年4月15日追記)
以下のシェルスクリプトjupyter-scala
を実行.(実際には公式からDLしてきたものを実行することを強くおすすめします)
#!/bin/bash set -e VERSION=0.4.2 AMMONIUM_VERSION=0.8.3-1 SCALA_VERSION=2.11.11 # Set to 2.12.2 for Scala 2.12 TYPELEVEL_SCALA=false # If true, set SCALA_VERSION above to a both ammonium + TLS available version (e.g. 2.11.8) EXTRA_OPTS=() if which coursier >/dev/null; then GLOBAL_COURSIER=true COURSIER=coursier else GLOBAL_COURSIER=false COURSIER="$(mktemp -t coursier.XXXXXXXX)" trap "{ rm -f \"$COURSIER\"; }" EXIT echo "Getting coursier launcher..." 2>&1 curl -s -L -o "$COURSIER" https://github.com/coursier/coursier/raw/v1.0.0-RC1/coursier echo "Done" 2>&1 chmod +x "$COURSIER" fi if [ "$TYPELEVEL_SCALA" = true ]; then EXTRA_OPTS+=( -E org.scala-lang:scala-compiler \ -E org.scala-lang:scala-library \ -E org.scala-lang:scala-reflect \ -I ammonite:org.typelevel:scala-compiler:$SCALA_VERSION \ -I ammonite:org.typelevel:scala-library:$SCALA_VERSION \ -I ammonite:org.typelevel:scala-reflect:$SCALA_VERSION \ ) fi "$COURSIER" launch \ -r sonatype:releases -r sonatype:snapshots \ -i ammonite \ -I ammonite:org.jupyter-scala:ammonite-runtime_$SCALA_VERSION:$AMMONIUM_VERSION \ -I ammonite:org.jupyter-scala:scala-api_$SCALA_VERSION:$VERSION \ ${EXTRA_OPTS[@]} \ org.jupyter-scala:scala-cli_$SCALA_VERSION:$VERSION \ -- \ --id scala \. --name "Scala" \ "$@" if [ "$GLOBAL_COURSIER" = false ]; then rm -f "$COURSIER" fi
これでjupyter(ipython notebook)を立ち上げた時に以下のように「New」->「Scala」が追加されているはず.
ipyhon notebook(jupyter)でサーバ起動時にブラウザが勝手に起動しないようにした
/home/[user]/.jupyter/jupyter_notebook_config.pyを書き換える.
なお,設定ファイルがない場合は以下で作成.
$ipython3 notebook --generate-config
因みに,諸事情があって$ipython3 notebook
としているが$jupyter notebook
を使うのが一般的だと思われる.
設定ファイルが存在する場合は以下のとおり.jupyter_notebook_config.pyの中で
#c.NotebookApp.open_browser = True
となっている箇所を以下のように'#‘を削除して'True'を'False'に書き換えればok.
c.NotebookApp.open_browser = False
とする.これでサーバを起動する度にブラウザが起ち上がることはない.
なお,設定ファイル内の
#c.NotebookApp.browser = ''
を例えば
c.NotebookApp.browser = '/usr/bin/chromium-browser'
と書き換えればデフォルトのブラウザを設定できる(らしい).ブラウザの実行ファイルの場所はwhichとかで調べればok.
hello world
テスト
def main(): print("hoge")