Linux 编译安装 Ruby
Ubuntu 20.04
Ruby 3.0.0
直接编译安装
wget http://cache.ruby-china.com/pub/ruby/3.0/ruby-3.0.0.tar.gz
tar -zxvf ruby-3.0.0.tar.gz
cd ruby-3.0.0
./configure --prefix=/opt/ruby-3.0.0
make -j8
make install
集成 jemalloc
jemalloc 可以大幅度减少 sidekiq 内存碎片。
sudo apt install libjemalloc-dev
编译方式
编译时添加 --with-jemalloc 参数即可:
./configure --prefix=/opt/ruby-3.0.0 --with-jemalloc
检查 jemalloc:
/opt/ruby-3.0.0/bin/ruby -r rbconfig -e "puts RbConfig::CONFIG['MAINLIBS']"
# 低版本
# ruby -r rbconfig -e "puts RbConfig::CONFIG['LIBS']"
输出:
-lz -lpthread - lrt -lrt -ljemalloc -lgmp -ldl -lcrypt -lm
环境变量方式
设置环境变量 LD_PRELOAD 即可
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so
指定 openssl 版本
编译 openssl:
wget https://www.openssl.org/source/openssl-1.1.1j.tar.gz
tar -zxvf openssl-1.1.1j.tar.gz
cd openssl-1.1.1j
./config shared --prefix=/opt/openssl-1.1.1j
make -j8
通过 --with-openssl-dir 参数指定 openssl 路径:
./configure --prefix=/opt/ruby-3.0.0 --with-openssl-dir=/opt/openssl-1.1.1j
可能遇到问题
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
Error fetching https://gems.ruby-china.com/:
SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://gems.ruby-china.com/specs.4.8.gz)
导入环境变量即可:
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
export SSL_CERT_DIR=/etc/ssl/certs
环境变量
输出 gem 信息:
gem env
gem env path
gem env home
通过设置 GEM_PATH 修改 gem 查找路径:
export GEM_PATH=/home/notfound/app/vendor/bundle/ruby/2.7.0
参考
Last modified on 2021-03-20