dockerで構築した環境でテストしたRubyのツールが、CentOS7の本番環境上でエラーになりました。
executor.rb:62:in `copy_stream': Operation not supported - copy_file_range (Errno::EOPNOTSUPP)
これはOSの問題でしょうか、Rubyのインストール方法の違いでしょうか。
Mac上のDockerで動作確認をしたときは、Software Collections(SCL)を使用しました。
Docker上ですから、(安心して)yum installが使えるためです。
root@94bf7bef77cf /]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) [root@94bf7bef77cf /]# uname -r # カーネルのリリース名 4.19.121-linuxkit [root@94bf7bef77cf /]# ruby -v ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux] # ruby インストール手順 [root@94bf7bef77cf ~]# yum install rh-ruby25 --enablerepo=centos-sclo-rh [root@94bf7bef77cf ~]# scl enable rh-ruby25 bash
本番環境でもyumは使えますが、使わないでもできるならシステムを変更(追加)しない方が良いと考えて、
rbenvを使用しました。こちらの環境では、同じようにツールを実行しても「Errno::EOPNOTSUPP」のエラーが表示されました。
違いとして気がついた点は、OSの違いとRubyの違いです。
Rubyが2.4以上で動作するツールでしたので、どちらの環境でも2.5.5をインストールして、ツールの実行環境を構築しました。
その際に「SCLかrbenvか」と「CentOSのカーネルの違い」があります。
$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.2 (Maipo) $ uname -r # カーネルのリリース名 3.10.0-1127.18.2.el7.x86_64 $ ruby -v ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux] ## rubyインストール手順 $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # 「~/.rbenv/bin」を環境変数に追加するための記述を「~/.bash_profile」に追記 $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile # rbenvを初期化する記述を「~/.bash_profile」に追記 $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ rbenv --version rbenv 1.1.2-44-gd604acb # rbenvを実行させるために必要なプラグイン「ruby-build」をインストール $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build # 2.5.5をインストールする$ rbenv install -v 2.5.5 $ rbenv global 2.5.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/26 00:52