RHEL 8 全新安装Jenkins无法启动,提示共享对象段映射失败
RHEL 8下Jenkins启动失败(JNA共享对象映射错误)解决方法
问题背景
在RHEL 8上执行以下步骤全新安装Jenkins后,启动失败:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key sudo yum install fontconfig java-17-openjdk sudo yum install jenkins sudo systemctl edit jenkins # 添加配置项:Environment=“JAVA_HOME=/usr/lib/jvm/java-17-openjdk”
执行sudo systemctl start jenkins启动失败,通过sudo journalctl -xe查看日志,报错信息:
java.lang.UnsatisfiedLinkError: /var/lib/jenkins/.cache/JNA/temp/jna17258145716752850398.tmp: /var/lib/jenkins/.cache/JNA/temp/jna17258145716752850398.tmp: failed to map segment from shared object
该错误源于JNA生成的临时共享对象文件无法被加载,通常与SELinux限制、临时目录挂载属性或权限配置有关。
解决步骤
1. 排查SELinux限制
- 确认SELinux当前状态:
getenforce - 若输出为
Enforcing,临时切换为Permissive模式测试:sudo setenforce 0 - 尝试重启Jenkins:
sudo systemctl start jenkins - 若启动成功,添加SELinux持久化规则放行目录:
sudo semanage fcontext -a -t bin_t "/var/lib/jenkins/.cache/JNA/temp(/.*)?" sudo restorecon -Rv /var/lib/jenkins/.cache/JNA/temp - 恢复SELinux为Enforcing模式:
sudo setenforce 1
2. 检查临时目录挂载属性
- 查看系统临时目录的挂载参数:
mount | grep tmp - 若输出包含
noexec选项,说明目录禁止执行二进制文件,可通过两种方式解决:- 方式一:修改/tmp挂载选项
编辑/etc/fstab文件,找到tmpfs对应的行,移除noexec参数后重新挂载:sudo mount -o remount /tmp - 方式二:指定Jenkins专属临时目录
编辑Jenkins系统服务配置:
添加以下环境变量:sudo systemctl edit jenkins
创建目录并设置权限:Environment="JNA_TMPDIR=/var/lib/jenkins/tmp"
重新加载配置并启动Jenkins:sudo mkdir -p /var/lib/jenkins/tmp sudo chown jenkins:jenkins /var/lib/jenkins/tmpsudo systemctl daemon-reload sudo systemctl start jenkins
- 方式一:修改/tmp挂载选项
3. 修复Jenkins缓存目录权限
- 确保Jenkins用户对缓存目录拥有完整权限:
sudo chown -R jenkins:jenkins /var/lib/jenkins/.cache - 再次尝试启动Jenkins:
sudo systemctl start jenkins
内容的提问来源于stack exchange,提问作者Murray Wilson
相关产品推荐
相关产品推荐

