新闻详情

新闻详情

首页 / 资讯中心 / 详情

麒麟v10安装openssl-libs解决依赖缺失问题全记录

发布时间:2026/10/2 14:17:21来源:尧图网络
麒麟v10安装openssl-libs解决依赖缺失问题全记录
先给大家看一个我最近真实遇到的现场拿到一台装了麒麟 v10 的机器准备把一个用到了 OpenSSL 的数据库客户端部署上去。结果一执行就说缺少libssl.so.1.1顺着报错去查发现系统里连openssl-libs这个基础的库包都没装全。最后问题就集中到了一个包上openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm。这类问题并不少见。只要你是用 RPM 体系装软件不管是装数据库、装编译好的程序还是拿别人打好的二进制包十有八九都会撞到 openssl 相关的依赖。这篇文章就是我实操下来的完整记录包括怎么判断系统适不适合装这个包、依赖报错怎么拆解、哪些--nodeps能碰哪些不能碰、装完怎么验证以及几个最常见的救场技巧。希望对踩在同一个坑里的朋友有帮助。1. 为什么需要 openssl-libs一次真实的依赖事故现场1.1 这个 RPM 包到底是个什么东西先把这个包名拆开看理解清楚它是什么后面排查思路就顺了。openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm这个名字包含 5 段信息openssl-libs包名。它不是给你敲命令行用的openssl工具而是 OpenSSL 的运行库文件主要是libssl.so和libcrypto.so这一系列动态链接库。很多程序在运行时会去加载这些库来完成加密通信、签名验证、随机数生成等工作。1.1.1fOpenSSL 的版本号。1.1.1 是一个 LTS 长期支持分支f是补丁版本。程序会要求你的库里至少包含对应的符号和功能版本太老不行隔代大版本也通常不兼容。4.p12这个包在发行版里面的发布序列号可以理解为这个发行版对上游 OpenSSL 打的补丁级别。ky10表示这是针对麒麟 v10 系统构建的包它依赖的 glibc、系统库版本都是按麒麟 v10 的环境对齐的。x86_64CPU 架构64 位。一句话总结这个包是给麒麟 v10 x86_64 系统提供 OpenSSL 1.1.1f 运行库的 RPM 包。大部分程序本身不带 OpenSSL 库它们靠动态链接的方式运行时去系统目录里找这些.so文件。系统里缺了它你装什么都可能报“找不到 libssl.so.1.1”。1.2 哪些场景最容易撞上这个坑根据我自己的经验下面几类场景是最容易跟这个包打交道的安装 MySQL、MariaDB 等数据库数据库二进制包在启动时通常需要libssl来做连接加密。很多朋友是从网上下载的通用二进制 tar 包不依赖发行版仓库这时候系统里如果没有 openssl-libs启动直接失败。安装开发编译产物同事用较新版本的 OpenSSL 编译出来的程序拷贝到麒麟 v10 上运行可能提示version OPENSSL_1_1_1f not found。安装第三方仓库提供的 RPM有些源里的包写了Requires: openssl-libs 1.1.1系统默认仓库如果没有对应版本yum 就会卡在依赖检测上。离线环境批量部署内网机器不能直接联网只能靠手工 RPM 包安装这时候依赖包必须自己备齐openssl-libs 就是最常见的一个。1.3 版本与架构为什么不能乱选依赖问题的本质是“程序需要什么系统就得不给什么”。OpenSSL 的库文件存在很严格的兼容关系版本号不同不能互相替代libcrypto.so.1.0.0和libcrypto.so.1.1是两个不同的库文件名即便名字看着像也不能混着用。程序在编译时记录的是它需要的符号版本比如OPENSSL_1_1_1f你装一个 1.0.2 的库加载时就会报version not found。架构必须对应x86_64 系统里如果混入 i686 的库运行时会报“试图加载格式不正确的程序”这在 Windows 上常见Linux 下同样有。所以包名里的x86_64不是装饰真要看清了再下。ky10 的包尽量用 ky10 的版本麒麟 v10 的包会依赖特定版本的 glibc、特定的系统库路径。你拿 CentOS 7 的 openssl-libs 强行装到麒麟上依赖关系往往对不上反而会引出更多报错。2. 安装前的准备先摸清你家系统的脾气2.1 确认系统版本和架构拿到一个 rpm 包不要急着rpm -ivh。先确认系统基础信息这一步能帮你排除至少一半的坑。cat /etc/os-release cat /etc/kylin-release 2/dev/null uname -m rpm --eval %{_arch}我一般会跑前两条看系统发布版本再跑uname -m看架构。rpm --eval %{_arch}输出的结果会直接告诉你当前 RPM 体系认的架构名称。如果返回x86_64那安装x86_64的包就是对的如果返回aarch64那你手头这个 x86_64 的包先别装得去下对应架构版本。安装前确认这个动作就像搬家前先确认新房门尺寸工具不对后面全是白干。2.2 检查当前 openssl 相关包的状态很多人分不清openssl命令行工具和openssl-libs运行库的区别上来就先openssl version看一眼发现系统里有 openssl就觉得库也一定在。实际不是这么回事。我用这条命令看全部相关包rpm -qa | grep -E openssl|ssl正常输出里通常会看到类似这些openssl-1.1.1f-3.p01.ky10.x86_64openssl-libs-1.1.1f-4.p12.ky10.x86_64如果你只看到openssl包而没有openssl-libs那说明系统里装了命令行工具但库文件没有完整注册进 RPM 数据库。这个状态最阴险你手动拷贝过库文件进去也能运行但 rpm 依赖检查时照样说缺包。检查库文件本身也可以直接看路径ls -l /usr/lib64/libssl.so.1.1 /usr/lib64/libcrypto.so.1.1 ldconfig -p | grep libsslldconfig -p如果看不到libssl.so.1.1那说明库没有进系统缓存即使文件在那里程序也找不到。2.3 三种安装姿势怎么选假设你已经拿到了openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm选择哪种方式安装结果差别不小。我把三种方式放在一起对比安装方式命令示例适用场景注意点直接安装rpm -ivh openssl-libs...rpm系统里没有相关包依赖满足缺依赖时会直接失败并列出缺失项升级安装rpm -Uvh openssl-libs...rpm系统里已经有旧版本想替换可能触发连锁升级需谨慎使用 yum 本地安装yum install ./openssl-libs...rpm想自动解析同仓库里的依赖自动装依赖也可能自动升级别的包我个人在离线环境里最常用的是rpm -ivh因为它行为最可预期只会安装这一个包不会自作主张把其他组件一起升级。但如果系统里已经有旧版的openssl-libs且版本比新包低-ivh会报“已安装的软件包较旧”或者提示“软件包已被安装”。这时候不是不能装而是要考虑是否真的要覆盖升级。yum install ./包名.rpm的好处是会从你配置的仓库里自动解析依赖但坏处是它可能把其他相关包也升级到仓库里对应的版本生产环境里要留意。3. 依赖问题详解那些恼人的报错到底在说什么3.1 依赖检测失败时的报错拆解离线安装最常撞见的一类错误长这样错误依赖检测失败 libcrypto.so.1.1()(64bit) 被 openssl-libs-1.1.1f-4.p12.ky10.x86_64 需要 libssl.so.1.1()(64bit) 被 openssl-libs-1.1.1f-4.p12.ky10.x86_64 需要这段提示其实非常直白你需要安装的这个包在运行时要用到对外提供的libcrypto.so.1.1和libssl.so.1.1两个动态库而当前系统里没有任何已安装的包提供它们。这里要理解一个关键点libcrypto.so.1.1()(64bit)里的64bit是 RPM 的架构标记表示这是一个 64 位库。如果系统缺少的是 32 位库你会看到libssl.so.1.1()(32bit)这时候你不能用一个 x86_64 的 openssl-libs 去满足要么装兼容库要么确认这个 32 位程序是否非装不可。3.2 怎么用 rpm -qpR 查清依赖清单在安装前先查一下包的依赖可以避免盲人摸象。rpm -qpR openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm输出可能包含/bin/sh /sbin/ldconfig config(openssl-libs) 1.1.1f-4.p12.ky10 libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libcrypto.so.1.1()(64bit) libssl.so.1.1()(64bit) rpmlib(CompressedFileNames) 3.0.4-1 rpmlib(FileDigests) 4.6.0-1如果一堆GLIBC_x.x依赖就涉及到 glibc 版本问题。一般来说 ky10 自带的基础环境能满足大部分依赖真正缺的多半是你后来装的其他乱七八糟的库。把这些依赖记录下来再去挨个确认系统里有没有是排查依赖问题最扎实的办法。3.3 依赖缺失时怎么补齐确认缺哪些依赖之后常规思路是找到提供这些依赖的包。比如缺libssl.so.1.1就可以用yum provides */libssl.so.1.1或者rpm -qf /usr/lib64/libssl.so.1.1如果系统里已经有这个文件但 RPM 数据库里没记录rpm -qf会提示“文件未被任何软件包安装”这时依赖检测依然会失败。这种“文件在但包不在”的情况处理办法是找一个能提供这个文件的包补装一遍而不是手动跳过依赖。离线环境下常见的依赖来源有三个系统安装镜像里自带的 RPM 包挂载镜像后直接从/mnt/cdrom/Packages或类似目录里找。和这个包同一个发布批次里的其他依赖包通常发布者会放在同一个目录下。已经装好的同版本系统里把对应 RPM 备份出来。拿到一堆依赖包后可以一次性安装rpm -ivh *.rpm这种方式会把当前目录下所有 RPM 一起安装RPM 会自己尝试解析它们之间的依赖关系。注意这方法只有在目录里依赖包齐全时有效缺一个照样失败。3.4 --nodeps 到底能不能用--nodeps是很多人拿来“硬闯”的选项。命令长这样rpm -ivh --nodeps openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm我先把结论放在这儿--nodeps是把双刃剑用之前必须想清楚。什么时候可以碰--nodeps你知道系统里其实已经有了对应库文件只是 RPM 数据库没记录比如通过手动解压方式放置过库文件。你对这个包非常了解明确知道依赖缺失不会影响核心运行比如--nodeps安装一个纯数据包。什么时候绝对不能碰--nodeps依赖的库文件完全不存在强行装完后程序运行到一半才报“找不到符号”到时候排查比依赖报错麻烦得多。涉及 glibc、libstdc 这类基础库的包强行跳过依赖可能导致整个系统命令都跑不起来。在不清不楚的状态下用--nodeps把包硬装进去RPM 数据库就会出现“包已安装但依赖不满足”的半成品状态后面你再装其他软件yum 会一直告诉你 dependency problem。更严重的是如果你硬装了一个伪造的.so文件进去可能会覆盖掉系统里正常的库导致其他程序连环报错。所以我的习惯是--nodeps永远只作为最后手段且装完必须立刻验证。4. 安装实操与验证从下载到确认可用4.1 先备份再动手覆盖升级 openssl 相关的包属于动系统基础库的操作。虽然 1.1.1f 到 1.1.1f 这种小版本替换风险不高但稳妥起见我建议在安装前把现有状态留个底cp /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1.bak 2/dev/null cp /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1.bak 2/dev/null rpm -qa | grep openssl /tmp/openssl-packages-before.txt备份不用多复杂主要是留一条退路。如果你操作的生产环境特别严格最好连同/etc/pki/tls目录一起备份因为 openssl 相关的证书配置也可能受到影响。4.2 一步一步安装确认没有旧版本冲突后执行rpm -ivh openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm如果系统里已有更旧版本的 openssl-libs会提示“the package is already installed”或者“newer version is already installed”。这时如果确定要替换就用rpm -Uvh openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm如果提示缺少其他依赖而你能拿到依赖包把依赖包和这个包放在同一目录下一起执行rpm -ivh *.rpm如果提示信息里出现了%post脚本执行失败或者ldconfig相关报错先别慌。先看后续能否正常加载库文件很多发行版的%post脚本只是刷新缓存失败了可以手动补跑/sbin/ldconfig如果ldconfig命令报错说明系统的动态链接器配置出了问题检查/etc/ld.so.conf和/etc/ld.so.conf.d/下是否有损坏的配置。4.3 安装后重点验证装完包不等于事情结束必须验证库能被正常加载。我每次装完都会按顺序跑这组检查rpm -qa | grep openssl-libs rpm -ql openssl-libs | grep \.so ldconfig -p | grep -E libssl|libcrypto openssl version ldd /usr/bin/opensslrpm -qa | grep openssl-libs确认包已经进入 RPM 数据库。rpm -ql openssl-libs列出包内文件确认库文件位置在/usr/lib64。ldconfig -p | grep -E libssl|libcrypto确认动态库缓存里有这两个库。openssl version确认命令行工具正常工作。ldd /usr/bin/openssl确认命令行工具能正确链接到库文件。上面检查都通过这个包基本就是装好了。但别忘了测试实际程序能不能用最简单的方式是写一个临时证书请求测试加密流程openssl req -new -newkey rsa:2048 -nodes -keyout test.key -out test.csr -subj /CNtest这个命令成功跑完说明 OpenSSL 的底层库和工具链是协同工作的。4.4 注意升级替换陷阱很多人在这一步踩坑用rpm -Uvh安装 openssl-libs结果发现系统的openssl命令行也被替换了或者系统里其他老程序突然开始报错。原因在于OpenSSL 整个组件是关联在一起的openssl-libs升级后openssl工具如果版本低于库的版本可能会出现“命令版本和库版本不一致”的警告。反过来如果你把库版本升得很高某些按旧版本编译的老程序反而会加载不了。所以升级前一定要想清楚一个问题你到底是只想补一个缺失的库还是想升级整个 OpenSSL 组件。如果只是为了满足某个程序的依赖尽量保持系统原有组件的版本不要因为装一个包就把整个 OpenSSL 链条升级一遍。如果确实是系统组件升级建议把openssl、openssl-libs、openssl-devel这些配套包一起升级避免版本撕裂。5. 常见问题与排查技巧实录5.1 实战场景速查表把我在实际操作中遇到最多的几类问题列成表方便大家对照报错现象可能原因处理方向error while loading shared libraries: libssl.so.1.1系统没有安装 openssl-libs装 openssl-libs 或找到提供该库的包version OPENSSL_1_1_1f not found系统库版本低于程序编译时要求升级库到对应版本或重新编译程序依赖检测失败提示libcrypto.so.1.1()(64bit)缺少运行库或未注册进 RPM补齐依赖包不用--nodeps硬扛libssl.so.1.1: wrong ELF class32 位程序加载了 64 位库检查包架构安装 32 位兼容库程序能运行但经常 SSL 握手失败证书路径或加密策略问题检查/etc/pki/tls/certs和系统加密策略openssl: relocation error多个版本的 libssl 混在一起清理环境变量或清理掉多余的旧库rpm 命令找不到环境变量被清空或 rpm 被误删用绝对路径/bin/rpm或恢复基础软件包装完后其他程序开始报错升级了过新版本的 openssl 库回滚库版本保留系统配套版本5.2 细节rpm 命令找不到了有时候你连安装工具都找不到了提示bash: rpm: command not found。这看起来非常吓人但原因通常没那么严重可能是PATH环境变量异常也可能是基础包被误删。先试绝对路径/bin/rpm --version /usr/bin/rpm --version如果绝对路径能用说明只是环境变量问题export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH如果/usr/bin/rpm已经不存在那事态就严重多了可能需要从救援模式或者同版本系统里拷贝 rpm 软件包回来重新安装。这里想提醒一句日常别乱动基础包用到--nodeps强删的人翻车概率极高。5.3 库文件已存在但程序还是报找不到这个坑在离线安装里出现频率非常高。你查了/usr/lib64/libssl.so.1.1文件明明就在但程序执行时还是说找不到。原因十有八九是动态链接器缓存没更新。你可能是手动拷贝或解压的库文件没有跑过ldconfig。处理方式/sbin/ldconfig ldconfig -p | grep libssl执行后如果能看到libssl.so.1.1问题基本解决。如果还是没有检查库文件是否在/etc/ld.so.conf或/etc/ld.so.conf.d/声明的目录里。不在的话可以建软链接或者把文件放进标准库目录。另一个可能程序用了 RPATH 或LD_LIBRARY_PATH指定的路径那个路径下有一个损坏或不完整的库。排查时可以用LD_DEBUGlibs ./你的程序这个命令会输出所有库的加载过程能看出它到底在找哪个路径、为什么没加载成功。信息量很大但排查库问题时特别好用。5.4 openssl 版本不匹配报错处理程序报version OPENSSL_1_1_1f not found的常见背景是程序在别的机器上编译时链接的是较高版本的 OpenSSL而当前系统的库版本不够。这不是简单缺包问题而是版本兼容问题。可选方案有三个找到一个对应当前系统版本的 openssl-libs比如 1.1.1f满足程序对符号版本的要求。下载同样支持该版本符号的发行版配套包注意别把系统自带版本搞得过新。如果程序有源码直接在当前系统上重新编译这是最稳的。我个人尽量选择第一种。因为它只影响库文件不会让整个系统的 OpenSSL 大版本跳跃。5.5 签名校验与包完整性确认离线拿到 rpm 包后我习惯先看包文件有没有问题rpm -K openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm rpm -V openssl-libs第一条命令会检查包的 GPG 签名和完整性摘要如果输出里有NOKEY说明当前系统没有导入对应的公钥但不一定代表包损坏只是无法验签。第二条命令用来验证已安装文件有没有被篡改比如S.5....T之类的标记能告诉你文件内容、大小、时间戳被改动了。会做这个检查是因为我吃过亏同一个文件名从不同渠道拿到的包内容可能不一样装完之后行为也完全两样。宁可花几秒钟验一下也别让自己处于“包怎么装上的都不知道”的状态。5.6 装完后的长期维护建议openssl-libs 装完之后后面别再把系统折腾成一锅粥。我提几个实际建议不要随便用外来的高版本 OpenSSL 覆盖系统自带的库除非你非常清楚后果。定期用rpm -Va做一遍包文件校验特别是在排查诡异问题之后。如果系统有软件仓库可用尽量优先从仓库安装依赖不要靠手工 RPM 堆。在生产环境里给关键目录如/usr/lib64做好权限控制防止普通用户往里塞损坏库文件。把离线安装用到的所有 RPM 包和版本号记录到文档里下次遇到同样问题直接按文档操作能省很多时间。我在实际部署中还会顺手写一个部署脚本把这些安装、验证命令固化下来。这样不管是新装机器还是恢复环境都能快速复制操作也方便后来的人排查。这个内容后续还可以这样扩展如果你在公司内部有多台同配置机器完全可以把这个包和依赖一起放到内网软件仓库里用 yum 仓库方式统一分发省去每台机器手工安装维护的麻烦。第一次手工处理依赖也是这个思路的基础摸清了依赖关系后面自动化就水到渠成了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

冰蝎(Behinder)双击打不开?Java运行环境与JAR关联修复 2026/10/2 15:01:05

冰蝎(Behinder)双击打不开?Java运行环境与JAR关联修复

冰蝎(Behinder)双击无法打开,这个问题最近在后台被问到的频率相当高。很多人第一反应是文件下坏了、软件本身有毛病,于是反复重新下载、换版本、换盘符,折腾半天还是双击没反应——图标在那、文件也在那,就是点下去像石…

阅读更多 →
VMware安装CentOS7:NAT静态IP与FinalShell连接 2026/10/2 15:01:05

VMware安装CentOS7:NAT静态IP与FinalShell连接

如果你在Windows上想跑一台Linux服务器做测试,又不想动辄买云主机,那用VMware装一台CentOS7、再拿FinalShell连上去,是一条被无数人验证过的成熟路径。我自己最早接触Linux时就是这么干的,当时踩过的坑包括:虚拟机装完…

阅读更多 →
PHP7.4怎么用ffmpeg提取视频里的音频轨道 2026/10/2 15:01:05

PHP7.4怎么用ffmpeg提取视频里的音频轨道

前言在内容类项目里,“上传视频后自动把音频抽出来”是很常见的功能:用户传 MP4,后台产出 MP3 或 M4A,再交给语音识别、字幕转写等下游。在 PHP 里调用 ffmpeg 看上去只是拼一条命令的事,但真放到线上,症状…

阅读更多 →
UDP Flood实战指南:工业网络协议栈压力测试与瓶颈定位 2026/10/2 15:01:05

UDP Flood实战指南:工业网络协议栈压力测试与瓶颈定位

简介:本资源是一个基于VB.NET开发的UDP Flood攻击模拟工具集,面向网络安全学习者、渗透测试初学者及CTF备赛人员,用于理解UDP协议层拒绝服务攻击原理与防御思路。压缩包共50个文件,大小455KB,包含12个核心VB源码文件&a…

阅读更多 →
6类城市小目标检测数据集:背包/自行车/行人/行李箱/手推车/轮椅 2026/10/2 15:01:05

6类城市小目标检测数据集:背包/自行车/行人/行李箱/手推车/轮椅

简介:本资源是面向智能交通、智慧物流与无障碍设施管理领域的目标检测专用数据集,聚焦背包、自行车、行人、行李箱、手推车、轮椅六大交通枢纽高频目标,专为YOLO系列等主流检测模型训练优化设计。数据集共1615张高质量标注图像(含…

阅读更多 →
Python决策树票房预测:从特征工程到模型调参实战指南 2026/10/2 15:00:59

Python决策树票房预测:从特征工程到模型调参实战指南

简介:面向计算机、电子信息和应用数学等专业学生,这套基于决策树的Python电影票房预测项目适合作为毕业设计、课程设计或学期项目的完整参考。项目围绕数据预处理、ID3/CART/GBDT决策树构建、模型训练与评估、结果可视化等关键环节展开,提供多…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉