You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04下Mastodon执行bundle update多Gem安装失败求助

解决Ubuntu 20.04下Mastodon bundle update时Ruby头文件缺失及相关问题

1. 彻底清理RVM残留

残留的RVM环境会干扰Ruby路径,执行以下命令完全移除:

rvm implode
rm -rf ~/.rvm ~/.rvmrc /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm /usr/local/bin/rvm
sed -i '/rvm/d' ~/.bashrc ~/.bash_profile ~/.profile ~/.zshrc
source ~/.bashrc

验证:执行echo $rvm_path,无输出则清理完成。

2. 安装Ruby原生扩展依赖

ruby.h缺失是因为未安装Ruby开发包,执行以下命令安装系统级编译依赖:

sudo apt update
sudo apt install -y ruby-dev build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev

这些包包含构建racc、nio4r等Gem所需的头文件和编译工具。

3. 修复APT版RubyGems无法升级的问题

APT提供的RubyGems版本受限,无法直接升级,处理步骤:

sudo apt remove --purge rubygems
gem update --system

验证:执行gem --version,确认已更新至最新稳定版。

4. Docker容器环境的适配操作

由于你的Mastodon运行在Docker容器中,推荐两种处理方式:

方式一:直接在运行中的容器内操作

进入容器终端:

docker exec -it <你的Mastodon容器名称> bash

在容器内重复步骤2和3(容器基于Debian/Ubuntu系,使用apt命令),然后执行更新和迁移:

bundle update
rails db:migrate

方式二:构建自定义镜像持久化配置

创建Dockerfile添加依赖安装步骤:

FROM tootsuite/mastodon:latest

RUN apt update && \
    apt install -y ruby-dev build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev && \
    rm -rf /var/lib/apt/lists/*

RUN gem update --system

构建镜像并重启容器:

docker build -t custom-mastodon .
docker stop <原容器名称>
docker run -d --name <新容器名称> custom-mastodon

5. 验证修复效果

执行bundle update,如果无原生扩展构建错误,说明问题解决;随后完成数据库迁移即可。

内容的提问来源于stack exchange,提问作者doggie015

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:43:12