当前位置: 首页 > news >正文

Linux rpm和ssh损坏修复

背景介绍

我遇到的问题可能和你的不一样。但是如果遇到错误一样也可以按此方案尝试修复。
我是想在Linux上安装Oracle,因为必须在离线环境下安装。就在网上搜一篇文章linux离线安装oracle,然后安装教程走,进行到安装oracle依赖包的时候执行了下面的命令:

rpm -ivh ./* --nodeps --force

rpm -ivh ./* --nodeps --force 是一个用于在 Linux 系统上安装 RPM 包的命令。以下是每个选项的详细解释:

  • rpm:RPM 包管理器的命令。
  • -i:安装模式(install)。
  • -v:详细模式(verbose),显示安装过程中的详细信息。
  • -h:显示安装进度的哈希标记(hash),即安装过程中显示进度条。
  • ./*:当前目录下的所有文件(假设是 RPM 包)。
  • --nodeps:忽略依赖性检查,即使某些依赖包没有安装,也强制安装该 RPM 包。
  • --force:强制安装,即使系统中已存在相同的包或文件,也会覆盖安装。

总的来说,这个命令用于在当前目录下批量安装所有 RPM 包,并且忽略依赖关系和可能的冲突。

使用该命令时需要注意,因为 --nodeps--force 选项可能导致系统不稳定或依赖关系问题,所以应谨慎使用。

错误1

执行完上面的命令以后发现

  1. ssh连接不上了
    此时如果连接没有断开,千万不要断开,包括ssh和sftp的!。否则就得走另外的恢复模式了。
  2. rpm无法使用了
[root@k8s-node1 oracle11g_yilai]# rpm -qa | grep nss
rpm: /lib64/libnssutil3.so: version `NSSUTIL_3.82' not found (required by /lib64/libnss3.so)
rpm: /lib64/libnssutil3.so: version `NSSUTIL_3.59' not found (required by /lib64/libnss3.so)

这个错误rpm: /lib64/libnssutil3.so: version `NSSUTIL_3.59’ not found 会让人很蒙圈。网上有教程让复制一个libnssutil3.so进去。可能会出现下面的错误

错误2

执行rpm -qa命令

[root@k8s-node1]# rpm -qa
错误:Failed to initialize NSS library

Failed to initialize NSS library 错误出现了

问题分析

根本原因是在前面执行rpm -ivh ./* --nodeps --force命令的时候,没有查看要执行的离线依赖包里面有哪些包。如果你是个初学的小白或者linux并不是那么熟练,这个命令是个大坑!大坑!大坑!

后来查看离线依赖包里面发现了下面几个包:

nss-util-3.44.0-4.el7_7.x86_64.rpm
nss-softokn-freebl-3.44.0-8.el7_7.x86_64.rpm
nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm
nspr-4.21.0-1.el7.x86_64.rpm

在执行上面的安装RPM包的命令的时候,本机的nss被覆盖了,会导致ssh相关 rpm相关命令失效。这种情况会出现在安装的nss包的版本比当前服务器的版本低的情况,如果一样是不会导致错误的。
比如当前的nss版本是nss-3.67.0-3.el7_9.x86_64,安装了一个nss-3.44.0-4.el7_7.x86_64.rpm,这种情况就会出现错误。

拯救方案

经过反复测试。在另外一台正常运行的服务器上把相关的包复制过来进行覆盖就可以恢复。
当然覆盖前要做一些备份。
在/usr/lib64下面有这个几个.so文件

.nss/libnssckbi.so
libnspr4.so
ilibnss3.so
libnssutil3.so
libsmime3.so
libssl3.so
libfreeblpriv3.so

可以挨个替换,然后验证是否已经解决问题。

复现步骤

1.上传依赖包
上传oracle11g_yilai到 /var/tmp下
2.自检
执行rpm -qa | grep nss,输出正常
我当前服务版本是nss-3.44.0-4.el7_7.x86_64
ssh连接正常
3.升级nss

sudo yum install nss-3.67.0-3.el7_9.x86_64

升级日志中可以看到升级了哪些包。
执行rpm -qa | grep nss,输出正常已升级到nss-3.90.0-2.el7_9.x86_64
3.RPM强制覆盖

cd /var/tmp/oracle11g_yilai
rpm -ivh ./* --nodeps --force

ssh 和 sftp窗口不要关闭,否则连不上了
4.自检

[root@k8s-node1 ]# rpm -qa | grep nss
rpm: /lib64/libnssutil3.so: version `NSSUTIL_3.82' not found (required by /lib64/libnss3.so)
rpm: /lib64/libnssutil3.so: version `NSSUTIL_3.59' not found (required by /lib64/libnss3.so)

ssh无法连接
6.复制libnss3.so到/usr/lib64
-必须复制原来3.4版本的libnss3.so。升级后的不会出现下面的错误

[root@k8s-node1 ]# rpm -qa | grep nss
错误:Failed to initialize NSS library

错误已经改变 Failed to initialize NSS library。
复制libnssutil3.so进去也行,每个机器可能版本不一样,表现不太一样。

7.从升级到nss3.90的服务器复制一下文件替换当前服务器的/uar/lib64下的.so文件
.nss/libnssckbi.so
libnspr4.so
ilibnss3.so
libnssutil3.so
libsmime3.so
libssl3.so

[root@k8s-node1 ]# ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:tbgFq5/tRhkV/P6jLz9+olydPnQ3rYtCBNrQC/gL9GQ.
ECDSA key fingerprint is MD5:60:cf:f5:40:fb:bf:01:1b:ba:96:d4:9e:51:7a:80:19.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

ssh恢复正常

8.rpm修复

替换libfreeblpriv3.so

[root@k8s-node1 ~]# rpm -qa | grep nss
openssh-clients-7.4p1-21.el7.x86_64
nss-util-3.90.0-1.el7_9.x86_64
nss-3.90.0-2.el7_9.x86_64
nss-util-3.44.0-4.el7_7.x86_64
openssl-libs-1.0.2k-19.el7.x86_64
nss-softokn-freebl-3.44.0-8.el7_7.i686
openssh-server-7.4p1-21.el7.x86_64
nss-softokn-freebl-3.90.0-6.el7_9.x86_64
nss-sysinit-3.90.0-2.el7_9.x86_64
nss-tools-3.90.0-2.el7_9.x86_64
nss-softokn-freebl-3.44.0-8.el7_7.x86_64
openssl-1.0.2k-19.el7.x86_64
nss-pem-1.0.3-7.el7.x86_64
jansson-2.10-1.el7.x86_64
nss-softokn-3.90.0-6.el7_9.x86_64
xmlsec1-openssl-1.2.20-7.el7_4.x86_64
openssh-7.4p1-21.el7.x86_64
http://www.lryc.cn/news/398589.html

相关文章:

  • 仕考网:公务员考试面试时间一般多长?
  • C语言作业5(学生管理系统C语言)
  • OS Copilot:新手测评体验
  • PS 2024【最新】中文白嫖版!,安装教程,图文步骤
  • bind方法的使用
  • MySQL数据库基本操作-DDL和DML
  • iOS 应用内存超过多少会收到系统内存警告 ?
  • 【分布式系统】Filebeat+Kafka+ELK 的服务部署
  • Qt Qwt 图表库详解及使用
  • 基于B站视频评论的文本分析,采用包括文本聚类分析、LDA主题分析、网络语义分析
  • 【Qt】xml Dom复制
  • MySQL联合索引最左匹配原则
  • 2024最新最全面的软件测试自动化面试题(含答案)
  • Linux磁盘-MBRGPT
  • kind kubernetes(k8s虚拟环境)使用本地docker的镜像
  • kafka发送消息流程
  • 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人生成器(八)
  • Allegro中show elements不弹窗问题
  • 【C++】继承最全解析(什么是继承?继承有什么用?)
  • STM32-外部中断浅析
  • Spring-Data-Elasticsearch
  • 代码随想录二刷7.22|977.有序数组的平方
  • redis介绍与布署
  • PMON的解读和开发
  • 初识c++(构造函数,析构函数,拷贝构造函数,赋值运算符重载)
  • CANoe:为什么两个VLAN接口不能设置同一个网络的IP地址呢?
  • SpringBoot新手快速入门系列教程七:基于一个低配centoos服务器,如何通过宝塔面板部署一个SpringBoot项目
  • 性能测试的流程(企业真实流程详解)(二)
  • 使用sklearn的基本流程
  • 力扣题解(乘积为正数的最长子数组长度)