{{tag>mastodon ruby linux}}
# mastodon の ruby を 2.4.2 に上げたいと思う人生だった
結論から言うと、現状の最新版である mastodon v1.6.1 をタグリリースのまま運用している場合には `.ruby-version` の縛りが効いているので ruby 2.4.2-p198 は適用されなかったです。ただ、master の `.ruby-version` は既に 2.4.2 になっているため、まぁ次のタグリリースの準備をしときましょうね、というオハナシ。
## うちの環境
gentoo linux 上で動いている非docker な mastodon v1.6.1 です。
## ディスク容量の確認
そこそこ余裕を見た容量を確保しておかないと ruby 2.4.2 のインストール時にコケます。
:
:
installing rdoc: /home/mastodon/.rbenv/versions/2.4.2/share/ri/2.4.0/system
/var/tmp/ruby-build.20170923120839.2253/ruby-2.4.2/lib/fileutils.rb:1290:in `initialize': No space left on device @ rb_sysopen - /home/mastodon/.rbenv/versions/2.4.2/share/ri/2.4.0/system/IRB/Notifier/LeveledNotifier/new-c.ri (Errno::ENOSPC)
とりあえずこんくらいあれば大丈夫っぽい。
$ df -h /home/mastodon
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg001-lv002 3.9G 2.1G 1.6G 58% /home/mastodon
## rbenv と ruby-build の更新
まず rbenv 自体を更新。
$ cd ~/.rbenv
$ git pull
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 18 (delta 7), reused 9 (delta 7), pack-reused 8
Unpacking objects: 100% (18/18), done.
From https://github.com/rbenv/rbenv
755c820..2d7cefe master -> origin/master
* [new tag] v1.1.1 -> v1.1.1
Updating 755c820..2d7cefe
Fast-forward
README.md | 122 ++++++++++++++++++++++++++++++------------------
libexec/rbenv---version | 2 +-
src/configure | 6 +--
3 files changed, 80 insertions(+), 50 deletions(-)
次に ruby-build を更新します。これやらないと ruby 2.4.2 の情報が入ってこないため `rbenv install 2.4.2` が通りません。
$ cd ~/.rbenv/plugins/ruby-build/
$ git pull
remote: Counting objects: 201, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 201 (delta 110), reused 124 (delta 108), pack-reused 73
Receiving objects: 100% (201/201), 101.81 KiB | 861.00 KiB/s, done.
Resolving deltas: 100% (124/124), completed with 44 local objects.
From https://github.com/rbenv/ruby-build
ccfd27f..ae1f285 master -> origin/master
d74b77e..7884e92 end-to-support-old-rbx -> origin/end-to-support-old-rbx
* [new tag] v20170914 -> v20170914
* [new tag] v20170726 -> v20170726
Updating ccfd27f..ae1f285
Fast-forward
:
~以下略~
## ruby 2.4.2 をビルドする
うちの環境限定ですが、ちょいちょいオマジナイを含めてます。`rbenv install 2.4.2` がすんなり通って問題ないならこの環境変数の設定は不要です。
export TMPDIR="/var/tmp"
export RUBY_CFLAGS="-march=sandybridge -O2 -pipe"
export MAKE_OPTS="-j5"
そんなわけで。
$ 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/mastodon/.rbenv/versions/2.4.2
この時の細かい進捗状況は `${TMPDIR}/ruby-build.YYYYMMDDHHMMSS.NNN.log` とかを `tail -f` しておくと確認できますね。
ちなみにうちの環境では、前述の `TMPDIR` を設定してあげないと、こんなエラーが出ます。
ruby-build: TMPDIR=/tmp cannot hold executables (partition possibly mounted with `noexec`)
## デフォルトで使う ruby のバージョンを変更しておく
まず現状。
$ cd ~
$ rbenv versions
* 2.4.1 (set by /home/mastodon/.rbenv/version)
2.4.2
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
rbenv に 2.4.2 環境はできているものの、まだ使用するバージョンは 2.4.1 になってます。これを変更します。
$ rbenv global 2.4.2
そうすると……
$ rbenv versions
2.4.1
* 2.4.2 (set by /home/mastodon/.rbenv/version)
$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
ちゃんと変更されてますね。 ただし……
$ cd ~/live
$ rbenv versions
* 2.4.1 (set by /home/mastodon/live/.ruby-version)
2.4.2
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
……てな感じで mastodon のリポジトリに移動するとあいかわらず 2.4.1 がデフォルトになってます。これは `rbenv versions` のメッセージにもあるとおり `.ruby-version` が効いているからですね。
$ cat ~/live/.ruby-version
2.4.1
## タグリリースを待つ
あとは次の mastodon のタグリリースを待ちましょう……別に master者になっても構いませんがw