列出包依赖项

列出包依赖项

我愚蠢地做了“yum remove python”,这也最终删除了所有需要 python 的包。

幸运的是,我可以访问另一台 Linux 机器,它几乎是这台机器的克隆,并且它仍然安装了所有这些软件包。问题是它属于别人,我最多只能四处看看。我也不知道要在我的机器上专门重新安装什么。这个列表(当我删除 python 时)是巨大的。

我想知道我是否可以在这台双胞胎机器中输入任何命令来告诉我:在当前安装的软件包中,哪些依赖于 python?然后我可以使用该列表将每个列表手动重新安装回我自己的计算机上。所以它实际上更多的是 python 依赖项,而不是依赖项。

环顾四周,我遇到了诸如“repoquery --whatrequires”和“rpm --whatrequires”之类的命令,但这些命令似乎没有生成与“yum remove python”相同的列表。

两台机器运行 RHEL 6。

答案1

假设在删除 python 之前克隆安装了相同的软件包,那么获取所需软件包列表的一个可靠方法是rpm -qa对每个克隆进行比较。

# on clone 1:
rpm -qa | sort > clone1.txt

# on clone 2:
rpm -qa | sort > clone2.txt

获取clone1.txtclone2.txt在同一台计算机上。然后运行

comm -13 clone1.txt clone2.txt

查看克隆 2 上而非克隆 1 上的 rpm。

答案2

您可能有/var/log/rpmpkgs一个包含所有已安装 RPM 软件包的列表。 (在 RHEL 6 中,该列表由软件包 rpm-cron 生成)如果您有软件包列表,您可以查看/var/log/yum.log哪些软件包被卸载。

答案3

实际上,您可以撤消 yum 命令。在删除了 python 的计算机上,尝试运行yum history

yum history
Loaded plugins: langpacks, refresh-packagekit
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
   284 | yum remove python        | 2014-07-09 14:47 | Remove         |  1213   
...

识别线yum remove python并记下ID

yum history undo 284

然而,yum应该取决于python这样你可能yum也已经删除了。如果是这样,您将必须再次手动下载它及其依赖项。首先检查您的系统是否具有所需的依赖项(此列表是在 Fedora 19 系统上生成的,因此请仔细检查您的 RHEL 6 克隆):

[root@localhost ~]# repoquery -R yum
/usr/bin/python
pygpgme
pyliblzma
python >= 2.4
python(abi) = 2.7
python-iniparse
python-sqlite
python-urlgrabber >= 3.9.0-8
pyxattr
rpm >= 4.4.2
rpm-python
yum-metadata-parser >= 1.1.0

对于您缺少的每个软件包,请从 RHEL 6 源下载软件包并使用rpm.

通常删除软件包并不会删除其所有配置文件。我不知道yum。希望yum重新安装后历史数据库仍然完好无损。

相关内容