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.mzph.cn/news/870915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库mysql-对数据库和表的DDL命令

文章目录 一、什么是DDL操作二、数据库编码集和数据库校验集三、使用步骤对数据库的增删查改1.创建数据库2.进入数据库3.显示数据库4.修改数据库mysqldump 5.删除数据库 对表的增删查改1.添加/创建表2.插入表内容3.查看表查看所有表查看表结构查看表内容 4.修改表修改表的名字修…

SpringBootWeb 篇-入门了解 Swagger 的具体使用

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Swagger 介绍 1.1 Swagger 和 Yapi 的使用场景 2.0 Swagger 的使用方式 2.1 导入 knife4j 的 maven 坐标 2.2 在配置类中加入 knife4j 相关配置 2.3 设置静态资源…

oracle控制文件详解以及新增控制文件

文章目录 oracle控制文件1、 控制文件包含的主要信息如下:2、查看目前系统的控制文件信息,主要是查看相关的字典视图 oracle新增控制文件 oracle控制文件 控制文件是一个很小的二进制文件(10MB左右),含有数据库结构信息,包括数据…

Open3D 点云Kmeans聚类算法

目录 一、概述 1.1算法介绍 1.2实现步骤 二、代码实现 三、实现效果 3.1原始点云 3.2聚类后点云 前期试读,后续会将博客加入该专栏,欢迎订阅Open3D与点云深度学习的应用_白葵新的博客-CSDN博客 一、概述 1.1算法介绍 聚类是一种将数据集分组的方…

人工智能时代的转型与挑战:从就业替代到技术创新的新纪元

人工智能时代的转型与挑战:从就业替代到技术创新的新纪元 摘要 随着人工智能(AI)技术的飞速发展,我们正步入一个前所未有的变革时代。本文旨在探讨当前人工智能领域的三大关键趋势——AI对工作岗位的潜在取代、ChatBot技术的厌倦…

redis的发布与订阅

与消息队列的差别 不做持久化 不是异步 不能保证可靠性 使用实例 发布者示例:连接到 Redis 服务器,使用 publish 方法发布消息到指定的频道。 订阅者示例:连接到 Redis 服务器,使用 subscribe 方法订阅指定的频道,并…

Next.js的静态生成和服务端渲染,你搞懂了吗?

Next.js的静态生成和服务端渲染,你搞懂了吗? 嘿,各位前端小伙伴们!今天咱们来聊聊Next.js中那令人又爱又恨的静态生成(Static Generation)和服务端渲染(Server-side Rendering)。这…

软设之中介者模式

设计模式中,中介者模式的意图是:用一个中介对象来封装一系列的对象间的交互。它使各个对象不需要显式互相调用,从而达到低耦合,还可以独立改变对象间的交互。 比方,飞机与塔台之间,如果没有塔台,飞机就得需…

双语|如何给教授/教职员发送电子邮件

斯坦福大学提出建议,指导学生如何给教授或者教职员发送电子邮件,这些建议对于访问学者、博士后及联合培养博士也很适用,故知识人网小编用双语对照的形式进行节选转发。 Whether youre writing a professor to ask for an extension or to loo…

笔记:在Entity Framework Core中使用乐观并发控制来处理数据更新的冲突

一、目的: 在Entity Framework Core (EF Core) 中配置乐观并发控制主要涉及到使用并发令牌。并发令牌是在模型中定义的属性,用于在数据库操作期间检测并发冲突。当两个或更多用户尝试同时更新同一条记录时,EF Core 会使用这些令牌来确定是否有…

C++图像转换过程中的内存异常报错

问题描述 在OpenCV中&#xff0c;将输入的图像转到Lab颜色空间中&#xff0c;使用cv::split 函数分离L&#xff0c;A&#xff0c;B三个通道的时候发生内存异常&#xff0c;报错。 cv::split(LabImg, std::vector<cv::Mat>{L, A, B});报错信息&#xff1a; 0x00007FFAA1…

多平台支持,制作的电子画册随时随地都可以查看

​在数字化的时代背景下&#xff0c;电子画册以其便捷的传播方式、丰富的视觉表现形式&#xff0c;赢得了大众的喜爱。它不仅能够在个人电脑上展现&#xff0c;还能通过智能手机、平板电脑等多种移动设备随时随地被访问和浏览。这种跨平台的支持&#xff0c;使得无论你身处何地…

高精度定位与AI技术的深度融合——未来智慧世界的钥匙

引言在当今迅速发展的科技时代&#xff0c;精确定位和人工智能&#xff08;AI&#xff09;技术正在快速推动各领域的创新与变革。高精度定位结合AI技术所产生的融合效应&#xff0c;正在加速智慧城市、智能驾驶、智能物流以及许多其他领域的实现。这篇文章将详细探讨高精度定位…

基于Java技术的校园台球厅人员与设备管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;Eclipse、Navicat、Maven 系统展示 首页 用户注册界面 球桌信息…

物流EDI:如何与马士基Maersk建立EDI连接?

马士基Maersk是在全球范围内经营航运和物流的公司&#xff0c;提供包括仓储、配送、供应链管理等一系列的物流解决方案。 与马士基Maersk建立EDI连接&#xff0c;首先需要创建一个 Developer Portal帐户。接下来需要在马士基Maersk提供的列表中选择适合自己的EDI解决方案。 马…

C++基础编程100题-023 OpenJudge-1.4-03 奇偶数判断

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/03/ 描述 给定一个整数&#xff0c;判断该数是奇数还是偶数。 输入 输入仅一行&#xff0c;一个大于零的正整数n。 输出 输出仅一行&#xff0c;如果n是奇数&#xff0c;输出odd&#xff1b;如果n是偶…

Twelve Labs:专注视频理解,像人类一样理解视频内容

在当今数字化世界中&#xff0c;视频已成为人们获取信息和娱乐的主要方式之一。 AI视频生成领域的竞争也很激烈&#xff0c;Pika、Sora、Luma AI以及国内的可灵等&#xff0c;多模态、视频生成甚至也被视为大模型发展的某种必经之路。然而&#xff0c;与文本生成相比&#xff…

ajax使用formdata上传通过原始input[type=‘file‘]选择的文件

HTML代码 <input id"daoruInput" type"file"/> JS代码 var formdata new FormData(); formdata.append("file", $("#daoruInput")[0].files[0])$.ajax({url: "xx.xx/upload",type: "POST",dataType: &q…

[ptrade交易实战] 第十二篇 其他信息获取函数 (2)

前言 今天主要讲的是除了板块信息和股票信息之外的其他信息如何获取的函数&#xff01;还是分几个部分来讲 具体的开通渠道可以看文章末尾&#xff01; 一、get_deliver —— 获取历史交割单信息 get_deliver(start_date, end_date) 这个函数用来获取账户历史交割单信息。…

深入解析发生 OOM 的三大场景

深入解析 OOM 的三大场景 什么是 OOM&#xff1f;一、堆内存溢出 ( Heap OOM )原因分析解决方案 二、栈内存溢出&#xff08;Stack OOM&#xff09;原因分析解决方案 三、方法区内存溢出&#xff08;Metaspace OOM&#xff09;原因分析解决方案 在Java应用程序开发中&#xff0…