Ruby
Ubuntu
tips
rbenv
apt

Ubuntuにrbenvを導入しようとしてちょっと躓いた話

More than 1 year has passed since last update.

(備忘録、あとで修正・追記するかも)

以下の記事に従って、rbenvを導入しようとしたところ、ちょっと躓きました。。
rbenv で ruby の環境を整える - Qiita
一応解決済みです。
多分自分の環境に特有の問題なのだと思いますが、
誰かのためにメモを残しておきます。

自分のLinux環境
 Ubuntu 14.04.05 LTS
 (VMware Workstatin 12 Playerを使ってWindows10上で動かしている)

build-essentialがインストールできない

元記事から引用

    git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

git clone は問題なし。
apt-get でエラーが出てインストールが止まりました。
メッセージを見ると

    The following packages have unmet dependencies:
     build-essential : Depends: dpkg-dev (>= 1.13.5) but it is not going to be installed
    E: Unable to correct problems, you have held broken packages.

とのこと。
それでは、と dpkg-devとやらを入れようとしたところ、今度は

$ sudo apt-get install dpkg-dev
The following packages have unmet dependencies:
 dpkg-dev : Depends: libdpkg-perl (= 1.17.5ubuntu5.6) but 1.17.5ubuntu5.7 is to be installed
            Recommends: build-essential but it is not going to be installed
            Recommends: fakeroot
            Recommends: libalgorithm-merge-perl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

ということでインストールできませんでした。
perlのパッケージのダウングレードが必要ということでしょうか?
一筋縄では行かない気配を感じます。

apt-get で直接 rbenvをインストール

元記事では「apt-getを使って rbenv をインストールすることもできる」
と書いてありましたので、そちらの方法をとることにしました。
その前に、gitで作った ~/.rbenv/ はバックアップを取っておきます。

~$ mv .rbenv/ dot_rbenv_backup/

apt-getによるrbenvのインストールは滞りなく済みました。

~$ sudo apt-get install rbenv
(略)
Setting up rbenv (0.4.0+debian1-2) ...

すぐには動かなかったので微調整

rbenvのバージョンを確認しようとすると

$ rbenv -v
/usr/lib/rbenv/libexec/rbenv---version: line 17: cd: /home/USERNAME/.rbenv: No such file or directory

となりました
「aptって色々な依存関係とかを全部何とかしてくれるのでは?」
と首を捻りつつ、さきほどバックアップをとった 
~/dot_rbenv_backup/(git からクローンしてきたもの)
の名前を ~/.rbenv に戻して再度実行してみると

~$ mv dot_rbenv_backup/ .rbenv/
$ rbenv -v
rbenv 1.1.1-25-g6aa70b6

となりました。
このまま進んでいいのか不安になりつつも、
適当なバージョンのrubyのインストールをしてみます。

$ rbenv install -l | grep 2.4.2
  2.4.2
$ rbenv install 2.4.2
Downloading ruby-2.4.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2
Installing ruby-2.4.2...

BUILD FAILED (Ubuntu 14.04 using ruby-build 20170914-17-g331a408)

Inspect or clean up the working tree at /tmp/ruby-build.20171202170107.31978
Results logged to /tmp/ruby-build.20171202170107.31978.log

Last 10 log lines:
installing rdoc:              /home/USERNAME/.rbenv/versions/2.4.2/share/ri/2.4.0/system
installing capi-docs:         /home/USERNAME/.rbenv/versions/2.4.2/share/doc/ruby
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `apt-get install -y libreadline-dev` to fetch missing dependencies.

Configure options used:
  --prefix=/home/USERNAME/.rbenv/versions/2.4.2
  LDFLAGS=-L/home/USERNAME/.rbenv/versions/2.4.2/lib 
  CPPFLAGS=-I/home/USERNAME/.rbenv/versions/2.4.2/include 

「libreadline-devというのを入れてみなさい」と書いてありますので、
指示に従ってから再び ruby のインストールに挑戦します。

$ sudo apt-get install -y libreadline-dev
(略)
Setting up libreadline-dev:amd64 (6.3-4ubuntu2) ...

$ rbenv install 2.4.2
Downloading ruby-2.4.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2
Installing ruby-2.4.2...
Installed ruby-2.4.2 to /home/USERNAME/.rbenv/versions/2.4.2

今度はインストールできました。
この後、$ which ruby などを確認してパスが通ってないことに気づき、
元記事に従って .bashrc を書き換えたところ、
rbenv local なども使うことができました。

あとがき

とりあえず何とか使えるようになりました。
今後安定して動作するのか心配ですが、
不具合があれば追記などで報告します。