银河麒麟系统搭建Ruby开发环境有yum安装默认版和rbenv安装指定版本两种方式:前者快捷稳定但版本较旧,后者轻量灵活支持多版本切换;需解决未预装、版本低或缺少ruby-devel等头文件问题,完整安装依赖才能确保C扩展gem正常编译。

在银河麒麟系统上搭建Ruby开发环境,必须解决默认未预装Ruby、版本过低或缺少ruby-devel等关键头文件的问题。直接运行ruby --version报错或提示“command not found”,说明基础运行时缺失;执行gem install失败则大概率因未安装openssl-devel、readline-devel等编译依赖。
用yum安装系统默认Ruby及完整开发套件
该方法适用于快速启用基础开发能力,不追求最新Ruby版本,但能确保与麒麟OS内核、glibc和系统工具链完全兼容。
第一步:打开终端,执行系统更新以拉取最新软件源索引:sudo yum update -y
第二步:启用EPEL扩展源(银河麒麟V10 SP1/SP2默认未启用,跳过此步将无法找到ruby-devel):sudo yum install epel-release -y
第三步:一次性安装Ruby运行时、RubyGems包管理器、全部开发头文件及构建工具:sudo yum install ruby ruby-devel rubygems gcc make openssl-devel libyaml-devel readline-devel zlib-devel ncurses-devel libffi-devel gdbm-devel -y
这一步必须完整执行,【缺任何一个-devel包,后续安装Nokogiri、pg等C扩展gem都会失败】。例如缺少libyaml-devel会导致bundle install卡在psych编译阶段。
第四步:验证安装结果——分别运行ruby --version和gem --version,输出应显示Ruby 2.7.x或3.0.x(取决于当前仓库版本),且gem list能正常列出预装gem。
用rbenv安装指定新版Ruby并隔离管理
当项目明确要求Ruby 3.2+或需同时维护多个版本(如Rails 7.2要求≥3.1,而旧项目仍用2.7)时,必须使用rbenv。系统自带Ruby不可卸载,rbenv能安全共存且不污染全局环境。
方法一:安装rbenv及ruby-build
先装编译依赖:sudo yum install git curl autoconf bison gcc make openssl-devel libyaml-devel readline-devel zlib-devel ncurses-devel libffi-devel gdbm-devel -y
克隆rbenv到用户目录:git clone https://github.com/rbenv/rbenv.git ~/.rbenv
写入bash配置:echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && echo 'eval "$(rbenv init -)"' >> ~/.bashrc
重载配置:source ~/.bashrc
安装ruby-build插件:git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
方法二:安装并激活指定版本
更新ruby-build版本列表:cd ~/.rbenv/plugins/ruby-build && git pull && cd -
查看可用版本:rbenv install --list | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$"
安装Ruby 3.2.2:rbenv install 3.2.2
设为当前shell默认版本:rbenv shell 3.2.2
执行rbenv rehash使新Ruby可被识别——这一步漏掉会导致ruby命令仍调用系统旧版。
验证开发环境是否真正就绪
运行ruby -r rbconfig -e "puts RbConfig::CONFIG['arch']"确认架构匹配(x86_64或aarch64)。
创建测试文件test_gem.rb,内容为require 'json'; puts JSON.generate({a: 1}),执行ruby test_gem.rb应输出{"a":1}。
尝试安装一个含C扩展的gem:gem install nokogiri -- --use-system-libraries,成功即表明所有-devel头文件和编译链已正确就位。
若执行bundle init报错“Could not locate Gemfile”,说明Bundler未随rubygems自动安装,需手动运行gem install bundler。

















