Linux rpm和ssh损坏修复

news/2024/9/17 13:57:16/ 标签: linux, 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.ppmy.cn/news/1474662.html

相关文章

React:useState和useEffect

最近因为想要开发一个简单的应用才开始接触React。但是并没有系统学习React,所以这篇博客可能会写的不够专业。 1. Hooks 在程序设计语言中,钩子(hook)是一种机制,它可以允许程序在某些预定的事件或位置执行特定的代码。在React中&#xff0c…

Web 性能入门指南-1.2 分析在线零售 Web 性能及优化方向

让顾客满意是零售业成功的秘诀。事实证明,提供快速、一致的在线体验可以显著提高零售商关心的每项指标——从转化率和收入到留存率和品牌认知度。 本文大纲: 页面速度影响在线零售业务数据 如何将您的网站速度与竞争对手进行比较 性能优化入门&#xf…

超级好用的java http请求工具

kong-http 基于okhttp封装的轻量级http客户端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …

独特功能的视频号矩阵系统源码,支持多短视频平台自动发布和定时发布

在短视频行业竞争日趋激烈的今天&#xff0c;一个高效的视频发布系统对于内容创作者和营销团队来说至关重要。视频号矩阵系统源码以其独特的功能&#xff0c;为多平台自动发布和定时发布提供了强大的技术支持。 多平台自动化发布&#xff1a;无缝内容分发 视频号矩阵系统源码…

掌握MOJO命令行:参数解析的艺术

在软件开发中&#xff0c;命令行接口&#xff08;CLI&#xff09;是一种与程序交互的强大方式&#xff0c;它允许用户通过终端输入指令和参数来控制程序的行为。对于MOJO语言&#xff0c;即使它是一个假想的编程语言&#xff0c;我们也可以设想它具备解析命令行参数的能力。本文…

Oracle执行一条SQL的内部过程

一、SQL语句根据其功能主要可以分为以下几大类&#xff1a; 1. 数据查询语言&#xff08;DQL, Data Query Language&#xff09; 功能&#xff1a;用于从数据库中检索数据&#xff0c;常用于查询表中的记录。基本结构&#xff1a;主要由SELECT子句、FROM子句、WHERE子句等组成…

使用Docker、Docker-compose部署单机版达梦数据库(DM8)

安装前准备 Linux Centos7安装&#xff1a;https://blog.csdn.net/andyLyysh/article/details/127248551?spm1001.2014.3001.5502 Docker、Docker-compose安装&#xff1a;https://blog.csdn.net/andyLyysh/article/details/126738190?spm1001.2014.3001.5502 下载DM8镜像 …

Bilibili Android一二面凉经(2024)

BiliBili Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《BiliBili Android一二面凉经(2024)》。 面试职位: 高级Android开发工程师&…

Openresty+lua 定时函数 ngx.timer.every

ngx.timer.every 是 OpenResty 中的一个函数&#xff0c;用于创建定时器&#xff0c;以便定期执行某个函数或代码块。它的用法如下&#xff1a; local delay 5 -- 定时器间隔时间&#xff0c;单位为秒ngx.timer.every(delay, function(premature)-- 这里是定时执行的代码块i…

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码)

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码) 1 目标效果视频 CamManager 2 增加一个class IMG_BUFFER 用来管理采集的图片 // <summary> /// IMG_BUFFER 用来管理内存图片的抓取队列 /// </summary> public class IMG_BUFF…

【代码随想录算法训练营第六十二天|卡码网53.寻宝(prim算法和kruskal算法)】

文章目录 53.寻宝prim算法kruskal算法 53.寻宝 prim算法 prim算法三部曲&#xff1a; 1.选择当前最短入树结点&#xff1b;2.更新入树结点&#xff1b;3.更新结点距离最小生成树的距离。 可以把所有已经使用过的结点看作一个整体&#xff0c;然后把他们相接的结点的结点顶点边…

百日筑基第十八天-一头扎进消息队列1

百日筑基第十八天-一头扎进消息队列1 先对业界消息队列有个宏观的认识 消息队列的现状 当前开源社区用的较多的消息队列主要有 RabbitMQ、RocketMQ、Kafka 和Pulsar 四款。 国内大厂也一直在自研消息队列&#xff0c;比如阿里的 RocketMQ、腾讯的 CMQ 和 TubeMQ、京东的 JM…

玄机——第五章 linux实战-CMS01 wp

文章目录 一、前言二、概览简介 三、参考文章四、步骤&#xff08;解析&#xff09;准备步骤#1.0步骤#1.1通过本地 PC SSH到服务器并且分析黑客的 IP 为多少,将黑客 IP 作为 FLAG 提交; 步骤#1.2通过本地 PC SSH到服务器并且分析黑客修改的管理员密码(明文)为多少,将黑客修改的…

Perl 语言开发(八):子程序和模块

目录 1. 引言 2. 子程序的基本概念与用法 2.1 子程序的定义和调用 2.2 传递参数 2.3 返回值 2.4 上下文和返回值 3. 模块的基本概念与用法 3.1 模块的定义 3.2 使用模块 3.3 导出符号 3.4 模块的文件结构和命名 4. 实际应用中的子程序与模块 4.1 子程序参数验证与…

省市县下拉框的逻辑以及多表联查的实例

2024.7.12 一. 省市县的逻辑开发。1、准备&#xff1a;1.1. 要求&#xff1a;1.2 数据库表&#xff1a; 2. 逻辑&#xff1a;3. 方法3.1 创建实体类3.2 数据访问层3.3 实现递归方法3.4 控制器实现3.5 前端处理 二、多表联查&#xff08;给我干红温了&#xff09;1. 出现了问题2…

代理详解之静态代理、动态代理、SpringAOP实现

1、代理介绍 代理是指一个对象A通过持有另一个对象B&#xff0c;可以具有B同样的行为的模式。为了对外开放协议&#xff0c;B往往实现了一个接口&#xff0c;A也会去实现接口。但是B是“真正”实现类&#xff0c;A则比较“虚”&#xff0c;他借用了B的方法去实现接口的方法。A…

服务网格新篇章:Eureka与分布式服务网格的协同共舞

服务网格新篇章&#xff1a;Eureka与分布式服务网格的协同共舞 引言 在微服务架构的浪潮中&#xff0c;服务网格&#xff08;Service Mesh&#xff09;技术以其微服务间通信的精细化控制而备受瞩目。Eureka作为Netflix开源的服务发现框架&#xff0c;虽然本身不直接提供服务网…

前端面试题47(在动态控制路由时,如何防止未授权用户访问受保护的页面?)

在Vue中&#xff0c;防止未授权用户访问受保护页面通常涉及到使用路由守卫&#xff08;Route Guards&#xff09;。路由守卫允许你在路由发生改变前或后执行一些逻辑&#xff0c;比如检查用户是否已登录或者有访问某个页面的权限。下面是一些常见的路由守卫类型及其使用方式&am…

C++相关概念和易错语法(19)(继承规则、继承下的构造和析构、函数隐藏)

1.继承规则 继承的本质是复用&#xff0c;是结构上的继承而不是内容上的继承&#xff0c;近似于在子类中声明了父类的成员变量。 &#xff08;1&#xff09;写法&#xff1a;class student : public person 派生类&#xff08;子类&#xff09;&#xff0c;继承方式&…

数据库doris中的tablet底层解析

在Doris中,tablet(数据片)是数据存储和管理的最小单元。理解tablet的底层原理有助于更好地理解Doris的高可用性、负载均衡和查询优化等特性。 Tablet 的概念 Tablet:Tablet是Doris中用于存储数据的最小物理单元。每个tablet通常对应于一个数据分区和一个分桶组合的子集。…