linuxrpm命令卸载python_linux中不小心将rpm命令卸载了,怎么恢复?

今天在搭建mysql的集群服务时,安装mysql集群服务前,先卸载原来mysql的软件包,不小心将rpm的命令也给卸载掉了,这下惨了,什么也做不了了。在google了翻了好多个页面,甚至官网也看了,没能解决我的问题,根据本人多年linux的经验以及linux系统的rpm软件包安装特点的敏感,本人想出了以下的方法,请注意:独创!为做集群,这里用到了两台机器,下面是拓扑图:

xiaolyu77(192.168.31.77rpm命令被卸载的机器)   -----------> 参照   xiaolyu76(192.168.31.76 正常机器) 。

1. 问题出现:

[root@xiaolyu77 ~]# rpm -e --nodeps rpm -e mysql-libs-5.1.73-7.el6.x86_64

[root@xiaolyu77 ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm

-bash: /bin/rpm: No such file or directory

就是一不小心将rpm的命令用rpm强制给卸载了。可以看到已经不存在rpm命令了。

2. 检查rpm命令安装在哪里:

1.故障机器查看rpm命令

[root@xiaolyu77 ~]# whereis rpm

rpm: /etc/rpm /usr/lib/rpm

93d1236a167ebfc71d54616a5c6ba9c2.png

2. 正常机器查看rpm命令

[root@xiaolyu76 ~]# whereis rpm

rpm: /bin/rpm /etc/rpm /usr/lib/rpm /usr/share/man/man8/rpm.8.gz

[root@xiaolyu76 ~]#

a014177bda7c47b8fca33cb5460ea42a.png

3. 解决方案

从2.中可以看到77机器上rpm命令被卸载的,连man手册也没有了,bin下面更是没有。

思路:想到编译安装的软件的卸载方法是直接将安装路径下的文件直接删掉即可,那么我们可不可以缺什么补什么呢?显然可以啊。反过来不是一样么。

1. 补全whereis缺少的文件

[root@xiaolyu76 ~]# scp /bin/rpm  root@xiaolyu77:/bin/

[root@xiaolyu76 ~]# scp /usr/share/man/man8/rpm.8.gz  root@xiaolyu77:/usr/share/man/man8/

6171669c10a0141b4b101a46d9edc351.png

2. 补全安装目录下缺少的文件

通过whereis命令我们看到/ur/lib/rpm这个文件或者文件夹,实际上这个就是rpm命令的安装路径。现在比较两台机器下该目录的文件是否一致:

正常机器/usr/lib/rpm目录下的文件情况:

f545acf060aaca5e9258a199fb800ee2.png

2af00f9868aac408f046953967255e49.png

77机器rpm被卸载的机器:

e429feed00b14df2a3dfa171686068f5.png

37dd92b4bb66d3c739f1349ec315946f.png

显然通过对比发现有一些文件77机器上是没有的,尤其是9个软连接文件:

1.首先在77机器上创建这些软连接文件

[root@xiaolyu77 rpm]# ln -s ../../bin/db_deadlock rpmdb_deadlock

[root@xiaolyu77 rpm]# ln -s ../../bin/db_archive rpmdb_archive

[root@xiaolyu77 rpm]# ln -s ../../bin/db_load rpmdb_load

[root@xiaolyu77 rpm]# ln -s ../../bin/db_dump rpmdb_dump

[root@xiaolyu77 rpm]# ln -s ../../bin/db_upgrade rpmdb_upgrade

[root@xiaolyu77 rpm]# ln -s ../../bin/db_stat rpmdb_stat

[root@xiaolyu77 rpm]# ln -s ../../bin/db_recover rpmdb_recover

[root@xiaolyu77 rpm]# ln -s ../../bin/db_printlog rpmdb_printlog

[root@xiaolyu77 rpm]# ln -s ../../bin/db_verify rpmdb_verify

eec37c557b3751bbfd7db14d4fb8ca9a.png

c88cc470bcd8c6de66e2866f33c1bca1.png

验证一下:

[root@xiaolyu77 rpm]# rpm

6f512d1ae9535a528caf5386e2ef8e62.png

2.将rpmrc文件从76环境复制过来:

[root@xiaolyu76 rpm]# scp rpmrc  root@xiaolyu77:/usr/lib/rpm/

45def925952da08aa7dd7520c8c4e57f.png

1e66db6676128f61cf0a1daa90853b4c.png

再次检验:发现貌似成功了:

[root@xiaolyu77 rpm]# rpm

25d1deccfa87ec48cd084c028eb444bc.png

[root@xiaolyu77 ~]# rpm -qa

error: no dbpath has been set

error: cannot open Packages database in /%{_dbpath}

error: no dbpath has been set

error: cannot open Packages database in /%{_dbpath}

fa5bedfd12e17adbd101595df357ba79.png

3.出现这个问题:我们可以将macros 复制过去:

[root@xiaolyu76 rpm]# scp  macros  root@xiaolyu77:/usr/lib/rpm/

726576b26580e317d1c49444025a488f.png

4. 执行一下updatedb命令

[root@xiaolyu77 ~]# updatedb

e6773178adc0b4f216ca7b8285c2d35e.png

5. reboot重启一下:ok!来检验一下:

[root@xiaolyu77 rpm]# rpm -qa | grep rpm

4b685042f30a5a9da0e818c55359d988.png

完美的解决了问题,是为记录一下!

linux中常用的60个命令及作用详解

Linux 必学的 60 个命令 Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在 Linux 系统上工作离不开使用系统 ...

linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法

linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法 http://blog.csdn.net/w616589292/article/details/38274475 dos2unix ...

Linux中系统检测工具top命令

Linux中系统检测工具top命令 本文转自:https://www.cnblogs.com/zhoug2020/p/6336453.html 首先介绍top中一些字段的含义: VIRT:virtua ...

Linux课程---12、linux中内存指令(top命令的作用是什么)

Linux课程---12.linux中内存指令(top命令的作用是什么) 一.总结 一句话总结: top实时观察进程.内存和CPU情况 1.电脑出现反应慢情况,最先想到的是什么? 内存 2.linux ...

linux中Jenkins启动/重启/停止命令

简要记录一下Linux 中Jenkins启动/重启/停止命令 启动service jenkins start1重启service jenkins restart1停止service jenkins s ...

linux中安装软件,查看、卸载已安装软件方法

各种主流Linux发行版都采用了某种形式的包管理系统(PMS)来控制软件和库的安装. 软件包存储在服务器上,可以利用本地Linux系统上的PMS工具通过互联网访问.这些服务器称为仓库. 由于Linux ...

Linux中发布项目的一些命令笔记

记一下,Linux中发布项目的一些难记的命令: .安装jdk a.检测是否安装了jdk 运行java -version b.若有需要将其卸载 c.查看安装那些jdk rpm -qa | grep ja ...

Linux 中 10 个有用的命令行补全例子

在 Linux 系统中,当你输入一个命令,再按两次 TAB 键,就会列出所有以你输入字符开头的可用命令.这并不新鲜,可能你已经知道了.这个功能被称作命令行补全bash completion.默认情况下 ...

Linux中的15个‘echo’ 命令实例

echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串. echo命令的语法是: echo [选 ...

随机推荐

SQL Server 分区表

分区表可以提高查询效率 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理.这样文件的大小随 ...

BootStrap 最佳资源合集(转)

witter BootStrap是一款优秀的前端的框架,称得上是前端的一个框架利器.Web前端开发者每天都在与HTML.CSS.JavaScript打交道,然 而不少人都是在周而复始的写模板.样式和交 ...

CSharp使用log4net记录日志

一.先下载log4net.dll.Newtonsoft.Json.dll和配置log4net.config 相关DLL下载地址:log4net相关dll 下载地址:http://logging.apa ...

HDU2037 今年暑假不AC 贪心算法

贪心算法 : 贪心算法就是只考虑眼前最优解而忽略整体的算法, 它所做出的仅是在某种意义上的局部最优解, 然后通过迭代的方法相继求出整体最优解. 但是不是所有问题都可以得到整体最优解, 所以选择贪心策略 ...

WPF学习笔记-自定义窗口

代码部分

obj-c利用dispatch库并发示例

我们首先写一个纯C的程序,代码的功能为显示指定范围整数中素数的个数: #include #include #include

Java_5 数组

1.数组的概念与作用 数组:一组数据的集合,数组中的每个数据被称作元素.在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致. 作用:可以存贮多个数据. 2.数组的使用方式 数据类型[ ...

iOS10--消息通知的基本使用

官方将通知单独放在了UserNotifications.framework,使用时需要导入框架.UserNotifications.framework主要类文件: UNCalendarNotifica ...

FlowPortal-BPM——创建新组织架构、表单、流程

一.创建新组织架构 (1)管理流程→组织管理→组织架构添加需要的组织架构→新建新成员或角色 (2)设置成员信息 二.创建新数据源(如果在已有的数据库中操作,只需要添加需要的表) (1)添加新数据库并添 ...

乘风破浪:LeetCode真题_014_Longest Common Prefix

乘风破浪:LeetCode真题_014_Longest Common Prefix 一.前言 如何输出最长的共同前缀呢,在给定的字符串中,我们可以通过笨办法去遍历,直到其中某一个字符不相等了,这样就得 ...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值