🧗
CentOS 7 で Ruby と Node.js を更新する
Ruby 編 (2.6.5 → 3.1.2)
rbenv install --list | grep 3.2.1
としても出てこないので git pull
してみるがフリーズ
cd $(rbenv root)/plugins/ruby-build
git pull
git:
を https:
に変更したら
git remote set-url origin https://github.com/sstephenson/ruby-build.git
git pull
動いた
rbenv install --list | grep 3.2.1
で、出てくるのを確認したら
rbenv install 3.2.1 -v
とするが失敗
Last 10 log lines:
rb_execution_context_t *ec = ruby_current_ec;
^
vm_core.h:1865:34: 備考: 未宣言の識別子は出現した各関数内で一回のみ報告されます
上の記事を参考に
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-11
scl enable devtoolset-11 "gcc -v"
source scl_source enable devtoolset-11
gcc -v
として新しい gcc を一時的に有効にする
毎回、一時的に有効にするのは面倒なので
を参考に
echo "source scl_source enable devtoolset-11" > /etc/profile.d/scl.sh
として再度ログインし
rbenv install 3.2.1 -v
を試すと
rbenv: cannot rehash: /usr/local/rbenv/shims/.rbenv-shim exists
のエラーが出るので
を参考に
rm -f /usr/local/rbenv/shims/.rbenv-shim
rbenv rehash
とする
.ruby-version
が効かないところで ruby コマンドを使ったりしているので
rbenv global 3.2.1
としておく
Node.js 編 (12.13.0 → 16.19.1)
19.8.1 を入れたかったので確認する
nodenv install --list | grep 19
が、入ってないので
nodenv update
とするもフリーズ
cd $(nodenv root)
git pull
としてもフリーズ
Ruby のときと同様に git:
を https:
にすると
cd $(nodenv root)
git remote set-url origin https://github.com/nodenv/nodenv.git
git pull
cd $(nodenv root)/plugins/node-build
git remote set-url origin https://github.com/nodenv/node-build.git
git pull
動いた
念のため
nodenv update
としておき
nodenv install --list | grep 19
として 19.8.1
があるのを確認したら
nodenv install 19.8.1
としてインストールしたら最後の rehash で失敗
を参考に
rm -f /usr/local/nodenv/shims/.nodenv-shim
nodenv rehash
とし、念のために node -v
で確認すると失敗
$ NODENV_VERSION=19.8.1 node -v
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
同様に困っている方が多いようだけど解決法はディストリビューションをアップグレードしろだと……? node のためだけに……?
そこで上の記事を参考にソースから GLIBC のビルドを試みるも
curl -LO https://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && sudo make install
configure
で失敗
These critical programs are missing or too old: gcc make
Ruby をビルドするために新しい gcc を有効にしたのが影響してんじゃないかといったん scl を切ると configure が通った
そして約20分かけてビルド&インストールしたものの、結果、変化なし
NODENV_VERSION=19.8.1 node -v
はエラーが出たままだった
結局妥協して 16.19.1
にした (敗北感)
nodenv install 16.19.1
NODENV_VERSION=16.19.1 node -v
Discussion