{{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