linux中不小心将rpm命令卸载了,怎么恢复?
今天在搭建mysql的集群服务时,安装mysql集群服务前,先卸载原来mysql的软件包,不小心将rpm的命令也给卸载掉了,这下惨了,什么也做不了了。在google了翻了好多个页面,甚至官网也看了,没能解决我的问题,根据本人多年linux的经验以及linux系统的rpm软件包安装特点的敏感,本人想出了以下的方法,请注意:独创!为做集群,这里用到了两台机器,下面是拓扑图:
xiaolyu77(192.168.31.77rpm命令被卸载的机器) -----------> 参照 xiaolyu76(192.168.31.76 正常机器) 。
1. 问题出现:
[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
2. 正常机器查看rpm命令
[root@xiaolyu76 ~]# whereis rpm
rpm: /bin/rpm /etc/rpm /usr/lib/rpm /usr/share/man/man8/rpm.8.gz
[root@xiaolyu76 ~]#
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/
2. 补全安装目录下缺少的文件
通过whereis命令我们看到/ur/lib/rpm这个文件或者文件夹,实际上这个就是rpm命令的安装路径。现在比较两台机器下该目录的文件是否一致:
正常机器/usr/lib/rpm目录下的文件情况:
77机器rpm被卸载的机器:
显然通过对比发现有一些文件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
验证一下:
[root@xiaolyu77 rpm]# rpm
2.将rpmrc文件从76环境复制过来:
[root@xiaolyu76 rpm]# scp rpmrc root@xiaolyu77:/usr/lib/rpm/
再次检验:发现貌似成功了:
[root@xiaolyu77 rpm]# rpm
[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}
3.出现这个问题:我们可以将macros 复制过去:
[root@xiaolyu76 rpm]# scp macros root@xiaolyu77:/usr/lib/rpm/
4. 执行一下updatedb命令
[root@xiaolyu77 ~]# updatedb
5. reboot重启一下:ok!来检验一下:
[root@xiaolyu77 rpm]# rpm -qa | grep rpm
完美的解决了问题,是为记录一下!
本文为作者原创博客,转载请务必注明本博客地址:http://www.cnblogs.com/jasmine-Jobs/p/5986600.html
linux中不小心将rpm命令卸载了,怎么恢复?的更多相关文章
- 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中的cat文本输出命令用法
作系统 > LINUX > 详解Linux中的cat文本输出命令用法 Linux命令手册 发布时间:2016-01-14 14:14:35 作者:张映 我要评论 这篇 ...
- Linux系列(31) - rpm命令管理之升级与卸载命令(3)
升级命令 rpm -Uvh 包全名(要升级到的软件版本),如果没有安装这个软件的任何版本,这个命令可以代替rpm -ivh. rpm -Uvh 包全名 选项: - -U(upgrade):升级 卸载命 ...
- linux中安装软件,查看、卸载已安装软件方法
各种主流Linux发行版都采用了某种形式的包管理系统(PMS)来控制软件和库的安装. 软件包存储在服务器上,可以利用本地Linux系统上的PMS工具通过互联网访问.这些服务器称为仓库. 由于Linux ...
- Linux中发布项目的一些命令笔记
记一下,Linux中发布项目的一些难记的命令: .安装jdk a.检测是否安装了jdk 运行java -version b.若有需要将其卸载 c.查看安装那些jdk rpm -qa | grep ja ...
随机推荐
- Windows Phone App的dump 文件分析
前言 我们在发布了自己的App以后,Windows Phone的Error Report机制会帮助我们收集程序的崩溃信息并发送到微软的服务器上,这可以辅助开发者提高App的稳定性. 那么如何利用这些d ...
- 在asp.net WebAPI 中 使用Forms认证和ModelValidata(模型验证)
一.Forms认证 1.在webapi项目中启用Forms认证 Why:为什么要在WebAPI中使用Forms认证?因为其它项目使用的是Forms认证. What:什么是Forms认证?它在WebAP ...
- Host is not allowed to connect to this MySQL server 错误的处理方法
1. mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host ...
- 如何让Hadoop读取以gz结尾的文本格式的文件
背景: 搜索引擎在build全量时,会产生数G的xml的中间文件,我需要去查询这些中间文件中,是否有某个特殊的字符.xml文件有很多,每个都有几百M,存储在hdfs上,而且是以gz结尾的文本格式的文件 ...
- HTML5+flash打造兼容各浏览器的文件上传方案
上一篇文章介绍了HTML5版的文件上传插件,相比flash,采用HTML5的新技术无疑可以提升程序的加载速度.但是在目前的情况看来,HTML5的特性支持度不高,插件的可用性范围确实比较窄.例如,我在插 ...
- django开发个人简易Blog——构建项目结构
开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...
- 这里有个坑---js日期格式yyyy-MM-dd与yyyy/MM/dd
这里有个坑,---------每一个遇到的坑总结后都是一比财富. 我们写脚本的时候,一般定义一个日期格式会使用“2015-12-21”和“2015/12/21”两种数据格式,由于各取所需日期格式并没有 ...
- iOS给图片添加滤镜&使用openGLES动态渲染图片
给图片增加滤镜有这两种方式: CoreImage / openGLES 下面先说明如何使用CoreImage给图片添加滤镜, 主要为以下步骤: #1.导入CIImage格式的原始图片 #2.创建CIF ...
- Redis操作命令总结
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/118.html?1455860089 一.key pattern 查询相应 ...
- 知方可补不足~SqlServer连接的复用MultipleActiveResultSets
回到目录 MultipleActiveResultSets可以使数据库连接复用,但当你上了moebius这种集群工具后,这个选项不能开启(默认是false),当你使用EF等ORM工具时,这个选项会默认 ...