【Linux】中不小心误卸载了rpm命令如何恢复?

【Linux】中不小心误卸载了rpm命令如何恢复?_第1张图片

博主简介

  云计算领域优质创作者
  华为云开发者社区专家博主
  阿里云开发者社区专家博主
交流社区:运维交流社区 欢迎大家的加入!

文章目录

  • 问题复现
  • 问题解决方案
    • 补全 whereis rpm 缺少的文件
    • 将rpmrc文件从没问题的环境(210)复制过来
    • 出现这个问题:我们可以将没有问题的服务器中的 macros 文件复制过去
  • 问题解决

问题复现

[root@localhost openssh-8.7p1]# rpm rpm -e --nodeps $(rpm -qa |grep pam-devel)

[root@localhost openssh-8.7p1]# rpm -ivh pam-devel-1.1.8-23.el7.x86_64.rpm
-bash: /usr/bin/rpm: 没有那个文件或目录

不小心多输了一个rpm,导致rpm被强制删除了,很伤心!那么怎么解决呢?下面来带大家解决。

问题解决方案

准备两台机器,一台有rpm命令的,一台没有rpm命令的。

  • 查看rpm 故障 的那台机器的rpm命令路径(209)
[root@localhost ~]# whereis rpm
rpm: /usr/lib/rpm /etc/rpm
  • 查看rpm 没有故障 的哪台机器的rpm命令路径(210)
[root@localhost ~]# whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz

解决方案:

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

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

补全 whereis rpm 缺少的文件

从没有问题的那台服务器(210)往这边(209)拷文件过来;
可以看到有问题的rpm这台服务器(209)缺少:/usr/bin/rpm、/usr/share/man/man8/rpm.8.gz 那么,将这两个文件从没有问题的服务器(210)上拉过来。

  • 在没问题的服务器上执行(210)
#从没有问题(210)的服务器上拉文件到有问题(209)的服务器上
[root@localhost ~]# scp /usr/bin/rpm [email protected]:/usr/bin/
[root@localhost ~]# scp -r /usr/share/man/man8/rpm.8.gz [email protected]:/usr/share/man/man8/

都拉过来了之后再次使用whereis看一下,两边是否都一样了

  • 查看rpm 故障 的那台机器的rpm命令路径(209)
[root@localhost ~]# whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz
  • 查看rpm 没有故障 的哪台机器的rpm命令路径(210)
[root@localhost ~]# whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz

现在可以看到两边命令路径都补全了,再次使用rpm运行一下,结果还是不行。

将rpmrc文件从没问题的环境(210)复制过来

  • 在没问题的服务器上执行(210)
[root@localhost ~]# scp /usr/lib/rpm/rpmrc [email protected]:/usr/lib/rpm/

复制过去之后,再次执行rpm命令;

[root@localhost ~]# rpm -ivh pam-1.1.8-23.el7.x86_64.rpm 
error: no dbpath has been set
error: cannot open Packages database in /%{_dbpath}
warning: pam-1.1.8-23.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: no dbpath has been set
error: cannot open Packages database in /%{_dbpath}

又出现一个报错,我们来继续解决。

出现这个问题:我们可以将没有问题的服务器中的 macros 文件复制过去

  • 在没问题的服务器上执行(210)
[root@localhost ~]# scp /usr/lib/rpm/macros [email protected]:/usr/lib/rpm/

复制过去之后,再次执行,rpm命令

[root@localhost ~]# rpm -ivh pam-1.1.8-23.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
	package pam-1.1.8-23.el7.x86_64 is already installed

[root@localhost ~]# rpm -qa  | grep pam
pam-1.1.8-23.el7.x86_64

吼,发现成功了。那么问题就解决了。

问题解决

再次提醒大家一定要认真,认真,在认真;

你可能感兴趣的:(《Linux从入门到精通》,linux,服务器,运维,rpm)