解决了"错误:依赖项失败:"使用依赖项Linux安装/删除rpm

时间:2020-01-09 10:38:17  来源:igfitidea点击:

错误的依赖项rpm安装失败。
脱机安装依赖项的rpm。
在Linux中通过依赖项脱机删除rpm。
安装rpm centos 7错误失败的依赖项。
fedora install rpm错误失败的依赖项。
yum install rpm,依赖关系失败。
yum remove rpm脱机失败的依赖项。
如何在Linux中安装具有依赖项的rpm。

手动安装或者卸下rpm(不带yum)时,可能会出现"依赖项失败"Failed dependencies错误。
发生这种情况是因为rpm需要在安装主rpm之前先安装某些必备的rpm。

例如,我尝试在此处安装glibc-devel,但安装失败,并显示"失败的依赖项错误"。
正如它预期的那样,在此Linux主机上安装glibc-devel之前,应先安装glibc-headers。

[root@node1 ~]# rpm -ivh glibc-devel-2.17-260.el7_6.5.x86_64.rpm
error: Failed dependencies:
        glibc-headers is needed by glibc-devel-2.17-260.el7_6.5.x86_64
        glibc-headers = 2.17-260.el7_6.5 is needed by glibc-devel-2.17-260.el7_6.5.x86_64

同样,在尝试删除另一个rpm时,我得到了类似的错误,但失败了相关性,但是我们将在本文结尾处讨论删除部分。

[root@node1 ~]# rpm -e pykickstart
error: Failed dependencies:
        pykickstart >= 1.99.22 is needed by (installed) python-blivet-1:0.61.15.72-1.el7.noarch
        pykickstart >= 1.99.66.19 is needed by (installed) anaconda-core-21.48.22.147-1.el7.centos.x86_64

安装依赖项的rpm

现在,在屏幕上显示提供的错误时,不能确定这是glibc-devel可能需要的唯一依赖项rpm。
我们可以手动下载此版本的glibc-header(glibc-headers = 2.17-260.el7_6.5),然后重新尝试安装glibc-devel,但是下次rpm安装失败时也有可能再次依赖。

如果幸运的话,rpm可能只安装了很少的依赖项,但最终也有可能下载并安装大量的rpm作为依赖项。
这只会让我们感到沮丧,并且会浪费时间。

为避免这种情况,我们必须创建一个本地存储库,并使用yum安装主要和依赖的rpm。
因此,我们要做的第一件事是在此处获取glibc-devel的依赖项rpm列表。

下载依赖项rpm

说明:

要在尝试安装rpm之前使用此功能,我们必须具有与Internet连接且具有基准存储库的主机。

对于RHEL节点,系统必须在Red Hat Network中注册,而CentOS节点将默认在/etc/yum.repos.d/下提供所有默认存储库文件。

在这个例子中,我们将使用repotrack获取rpm的依赖列表。

提示:

repo-trackyum-utils的一部分,因此如果尚未安装,则可以手动安装此rpm。

[root@node1 rpms]# repotrack glibc-devel
Downloading basesystem-10.0-7.el7.centos.noarch.rpm
Downloading bash-4.2.46-31.el7.x86_64.rpm
Downloading ca-certificates-2016.2.22-70.0.el7_5.noarch.rpm
Downloading centos-release-7-6.1810.2.el7.centos.x86_64.rpm
Downloading chkconfig-1.7.4-1.el7.x86_64.rpm
Downloading coreutils-8.22-23.el7.x86_64.rpm
Downloading filesystem-3.2-25.el7.x86_64.rpm
Downloading gawk-4.0.2-4.el7_3.1.x86_64.rpm
Downloading glibc-2.17-260.el7_6.5.i686.rpm
Downloading glibc-2.17-260.el7_6.5.x86_64.rpm
Downloading glibc-common-2.17-260.el7_6.5.x86_64.rpm
Downloading glibc-devel-2.17-260.el7_6.5.i686.rpm
Downloading glibc-devel-2.17-260.el7_6.5.x86_64.rpm
Downloading glibc-headers-2.17-260.el7_6.5.x86_64.rpm
Downloading gmp-6.0.0-15.el7.i686.rpm
Downloading gmp-6.0.0-15.el7.x86_64.rpm
Downloading grep-2.20-3.el7.x86_64.rpm
Downloading info-5.1-5.el7.x86_64.rpm
Downloading kernel-headers-3.10.0-957.12.2.el7.x86_64.rpm
Downloading keyutils-libs-1.5.8-3.el7.i686.rpm
Downloading keyutils-libs-1.5.8-3.el7.x86_64.rpm
Downloading krb5-libs-1.15.1-37.el7_6.x86_64.rpm
Downloading libacl-2.2.51-14.el7.x86_64.rpm
Downloading libattr-2.4.46-13.el7.x86_64.rpm
Downloading libcap-2.22-9.el7.x86_64.rpm
Downloading libcom_err-1.42.9-13.el7.x86_64.rpm
Downloading libffi-3.0.13-18.el7.i686.rpm
Downloading libffi-3.0.13-18.el7.x86_64.rpm
Downloading libgcc-4.8.5-36.el7_6.2.i686.rpm
Downloading libgcc-4.8.5-36.el7_6.2.x86_64.rpm
Downloading libselinux-2.5-14.1.el7.x86_64.rpm
Downloading libsepol-2.5-10.el7.x86_64.rpm
Downloading libstdc++-4.8.5-36.el7_6.2.i686.rpm
Downloading libstdc++-4.8.5-36.el7_6.2.x86_64.rpm
Downloading libtasn1-4.10-1.el7.i686.rpm
Downloading libtasn1-4.10-1.el7.x86_64.rpm
Downloading libverto-0.2.5-4.el7.x86_64.rpm
Downloading ncurses-5.9-14.20130511.el7_4.x86_64.rpm
Downloading ncurses-base-5.9-14.20130511.el7_4.noarch.rpm
Downloading ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm
Downloading nspr-4.19.0-1.el7_5.i686.rpm
Downloading nspr-4.19.0-1.el7_5.x86_64.rpm
Downloading nss-softokn-freebl-3.36.0-5.el7_5.i686.rpm
Downloading nss-softokn-freebl-3.36.0-5.el7_5.x86_64.rpm
Downloading nss-util-3.36.0-1.1.el7_6.i686.rpm
Downloading nss-util-3.36.0-1.1.el7_6.x86_64.rpm
Downloading openssl-libs-1.0.2k-16.el7_6.1.x86_64.rpm
Downloading p11-kit-0.23.5-3.el7.i686.rpm
Downloading p11-kit-0.23.5-3.el7.x86_64.rpm
Downloading p11-kit-trust-0.23.5-3.el7.x86_64.rpm
Downloading p11-kit-trust-0.23.5-3.el7.i686.rpm
Downloading pcre-8.32-17.el7.x86_64.rpm
Downloading pcre-8.32-17.el7.i686.rpm
Downloading popt-1.13-16.el7.x86_64.rpm
Downloading sed-4.2.2-5.el7.x86_64.rpm
Downloading setup-2.8.71-10.el7.noarch.rpm
Downloading tzdata-2019a-1.el7.noarch.rpm
Downloading zlib-1.2.7-18.el7.x86_64.rpm

列出相关的rpm

现在,如果我们没有一个具有活动Internet连接和基准存储库的节点,那么我们也可以脱机获取依赖项rpm列表。

就本文而言,我使用了repoquery命令,因为它给出了带有rpm名称的非常清晰的输出,并且也可以脱机使用。

[root@node1 rpms]# repoquery -R --resolve --recursive glibc-devel
pcre-0:8.32-17.el7.x86_64
kernel-headers-0:3.10.0-957.el7.x86_64
bash-0:4.2.46-31.el7.x86_64
glibc-headers-0:2.17-260.el7_6.5.x86_64
basesystem-0:10.0-7.el7.centos.noarch
libacl-0:2.2.51-14.el7.x86_64
glibc-0:2.17-260.el7_6.5.i686
zlib-0:1.2.7-18.el7.x86_64
libgcc-0:4.8.5-36.el7_6.1.i686
libverto-0:0.2.5-4.el7.x86_64
grep-0:2.20-3.el7.x86_64
openssl-libs-1:1.0.2k-16.el7_6.1.x86_64
libselinux-0:2.5-14.1.el7.x86_64
nspr-0:4.19.0-1.el7_5.i686
nspr-0:4.19.0-1.el7_5.x86_64
ca-certificates-0:2016.2.22-70.0.el7_5.noarch
ncurses-base-0:5.9-14.20130511.el7_4.noarch
nss-util-0:3.36.0-1.1.el7_6.x86_64
ncurses-libs-0:5.9-14.20130511.el7_4.x86_64
libcap-0:2.22-9.el7.x86_64
filesystem-0:3.2-25.el7.x86_64
nss-util-0:3.36.0-1.el7_5.i686
p11-kit-0:0.23.5-3.el7.i686
keyutils-libs-0:1.5.8-3.el7.i686
info-0:5.1-5.el7.x86_64
chkconfig-0:1.7.4-1.el7.x86_64
centos-release-0:7-6.1810.2.el7.centos.x86_64
keyutils-libs-0:1.5.8-3.el7.x86_64
gmp-1:6.0.0-15.el7.i686
p11-kit-0:0.23.5-3.el7.x86_64
libgcc-0:4.8.5-36.el7.x86_64
tzdata-0:2016e-3.el7.noarch
setup-0:2.8.71-10.el7.noarch
popt-0:1.13-16.el7.x86_64
p11-kit-trust-0:0.23.5-3.el7.x86_64
libsepol-0:2.5-10.el7.x86_64
libcom_err-0:1.42.9-13.el7.x86_64
glibc-common-0:2.17-260.el7.x86_64
krb5-libs-0:1.15.1-34.el7.x86_64
nss-softokn-freebl-0:3.36.0-5.el7_5.x86_64
gmp-1:6.0.0-15.el7.x86_64
libtasn1-0:4.10-1.el7.x86_64
pcre-0:8.32-17.el7.i686
ncurses-0:5.9-14.20130511.el7_4.x86_64
coreutils-0:8.22-23.el7.x86_64
libffi-0:3.0.13-18.el7.i686
libstdc++-0:4.8.5-36.el7.x86_64
gawk-0:4.0.2-4.el7_3.1.x86_64
p11-kit-trust-0:0.23.5-3.el7.i686
glibc-0:2.17-260.el7_6.4.x86_64
libffi-0:3.0.13-18.el7.x86_64
sed-0:4.2.2-5.el7.x86_64
libattr-0:2.4.46-13.el7.x86_64

说明:

使用此命令可能会看到一堆依赖项rpm。
现在,我们不一定必须安装所有这些rpm,因为其中的某些或者大多数rpm必须已经安装在系统上。
因此,我们必须找出已安装的rpm列表,以及必须下载的rpm列表才能创建安装glibc-devel的仓库。

以下是我的Linux节点上的存储库的当前列表

[root@node1 rpms]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: repos.del.extreme-ix.org
 * extras: centos.excellmedia.net
 * openstack-stein: centos.excellmedia.net
 * updates: centos.excellmedia.net
repo id                       repo name                                           status
base/7/x86_64                 CentOS-7 - Base                                     10,019
*epel/x86_64                  Extra Packages for Enterprise Linux 7 - x86_64      13,221
extras/7/x86_64               CentOS-7 - Extras                                      409
openstack-stein/7/x86_64      OpenStack Stein Repository                           1,804
rdo-qemu-ev/x86_64            RDO CentOS-7 - QEMU EV                                  75
updates/7/x86_64              CentOS-7 - Updates                                   1,982
repolist: 27,510

创建一个定制的仓库

如果尚未安装createreporpm

[root@node1 rpms]# rpm -qa | grep createrepo

因为我没有安装createreporpm,所以我将通过yum安装它。

[root@node1 rpms]# yum -y install creatrepo

说明:

如果我们没有yum存储库,则无法通过yum安装。
在这种情况下,我们必须手动下载createrepo rpm及其安装的依赖项rpm。
我们也可以在源DVD中获得此rpm,然后创建一个存储库。

下载完所有rpm后,接下来使用createreporpm创建一个repo。
对于本文的同一部分,我已经在/root/rpms中下载了我的所有依赖项rpm。

浏览包含所有已下载依赖项rpm的目录

[root@node1 ~]# cd /root/rpms

提示:

我们也可以从任何其他目录创建存储库,但在这种情况下,请提供完整路径,即createrepo/root/rpms /

接下来使用以下命令创建仓库

[root@node1 rpms]# createrepo .
Spawning worker 0 with 58 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

我们的仓库已经创建成功。
我们可以验证这一点,现在必须在/root/rpms下创建一个新的repodata目录。

[root@node1 rpms]# ls -l repodata
total 280
-rw-r--r-- 1 root root 75853 Jun  3 13:00 11e8d76238ff21f69afdfaace67dd0b381d53ea6f50eabc696344dbb975ee9cb-filelists.xml.gz
-rw-r--r-- 1 root root 27064 Jun  3 13:00 225d4da1642be7d9a07567d6ab5f82b6679b5949dbb1158278705f09fda59343-other.xml.gz
-rw-r--r-- 1 root root 45925 Jun  3 13:00 5bf9d5a29b34070dbca033329f65bd28d33135fcd6719d518fb2e8f7be881d37-primary.sqlite.bz2
-rw-r--r-- 1 root root 35572 Jun  3 13:00 60a9bb4940ec7ee4d4cd45b4b83d941f73c155c56f539505f510c1b17fbd1f7e-other.sqlite.bz2
-rw-r--r-- 1 root root 65495 Jun  3 13:00 9ee15ecc9bf5b76ac799022ab7d90acf6d9044a3d79f88743903fc1d063dcab8-filelists.sqlite.bz2
-rw-r--r-- 1 root root 20804 Jun  3 13:00 cd4cf779c31707d754dc77773f943c49593c0324537a1773125355e4b6ad29df-primary.xml.gz
-rw-r--r-- 1 root root  2988 Jun  3 13:00 repomd.xml
[root@node1 rpms]# ls -ld repodata
drwxr-xr-x 2 root root 4096 Jun  3 13:00 repodata

创建包含以下内容的存储库文件。
根据环境修改baseurl的位置。
由于我已经放置了rpm并在/root/rpms中创建了存储库,因此我使用了相同的库。

[root@node1 rpms]# cat /etc/yum.repos.d/glibc-install.repo
[glibc-rpms]
name=glibc rpms
baseurl=file:///root/rpms/
enabled=1
gpgcheck=0

现在针对本文,我要确保仅使用我的一个Repo协议来安装rpm,即glibc-devel
因此,我已经禁用了所有其他存储库,并且仅在以下命令中启用了" glibc-rpms"存储库以列出可用的rpm。

[root@node1 rpms]# yum --disablerepo="*" --enablerepo=glibc-rpms list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
glibc.i686                                2.17-260.el7_6.5                    glibc-rpms
glibc-devel.i686                          2.17-260.el7_6.5                    glibc-rpms
gmp.i686                                  1:6.0.0-15.el7                      glibc-rpms
keyutils-libs.i686                        1.5.8-3.el7                         glibc-rpms
libffi.i686                               3.0.13-18.el7                       glibc-rpms
libgcc.i686                               4.8.5-36.el7_6.2                    glibc-rpms
libstdc++.i686                            4.8.5-36.el7_6.2                    glibc-rpms
libtasn1.i686                             4.10-1.el7                          glibc-rpms
nspr.i686                                 4.19.0-1.el7_5                      glibc-rpms
nss-softokn-freebl.i686                   3.36.0-5.el7_5                      glibc-rpms
nss-util.i686                             3.36.0-1.1.el7_6                    glibc-rpms
p11-kit.i686                              0.23.5-3.el7                        glibc-rpms
p11-kit-trust.i686                        0.23.5-3.el7                        glibc-rpms
pcre.i686                                 8.32-17.el7                         glibc-rpms

现在,以类似的方式,我们将通过禁用除glibc-rpms存储库之外的所有其他存储库来安装rpm glibc-devel。

[root@node1 rpms]# yum --disablerepo="*" --enablerepo=glibc-rpms install glibc-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package glibc-devel.x86_64 0:2.17-260.el7_6.5 will be installed
--> Processing Dependency: glibc-headers = 2.17-260.el7_6.5 for package: glibc-devel-2.17-260.el7_6.5.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-260.el7_6.5.x86_64
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-260.el7_6.5 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-260.el7_6.5.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-260.el7_6.5.x86_64
--> Running transaction check
---> Package kernel-headers.x86_64 0:3.10.0-957.12.2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================
 Package               Arch          Version                    Repository         Size
========================================================================================
Installing:
 glibc-devel           x86_64        2.17-260.el7_6.5           glibc-rpms        1.1 M
Installing for dependencies:
 glibc-headers         x86_64        2.17-260.el7_6.5           glibc-rpms        683 k
 kernel-headers        x86_64        3.10.0-957.12.2.el7        glibc-rpms        8.0 M
Transaction Summary
========================================================================================
Install  1 Package (+2 Dependent packages)
Total download size: 9.7 M
Installed size: 6.9 M
Is this ok [y/d/N]: y
Downloading packages:
---------------------------------------------------------------------------------------
Total                                                      134 MB/s | 9.7 MB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-headers-3.10.0-957.12.2.el7.x86_64                            1/3
  Installing : glibc-headers-2.17-260.el7_6.5.x86_64                                2/3
  Installing : glibc-devel-2.17-260.el7_6.5.x86_64                                  3/3
  Verifying  : glibc-headers-2.17-260.el7_6.5.x86_64                                1/3
  Verifying  : kernel-headers-3.10.0-957.12.2.el7.x86_64                            2/3
  Verifying  : glibc-devel-2.17-260.el7_6.5.x86_64                                  3/3
Installed:
  glibc-devel.x86_64 0:2.17-260.el7_6.5
Dependency Installed:
  glibc-headers.x86_64 0:2.17-260.el7_6.5  kernel-headers.x86_64 0:3.10.0-957.12.2.el7
Complete!

如我们所见,我们成功地安装了glibc-develrpm和所有相关的rpm。

删除具有依赖项的rpm

现在,由于我们有一个解决方案来安装带依赖关系的rpm,因此让我们了解删除带依赖关系的rpm的风险。

每次尝试删除或者卸载rpm时,很可能会出现"错误:依赖项失败"。
现在其中我们有两种选择

  • 删除rpm及其依赖项

  • 跳过依赖的rpms,仅删除我们希望卸载的主rpm

此选择完全取决于rpm的类型和相关性rpm列表。

对于大多数rpms(如我的示例中所示),我看到很少的rpms是依赖项,因此我可以选择忽略依赖项,而继续进行pykickstart rpm的脱机删除,因为我知道依赖项rpms是必需的,不会影响正在运行的系统。

通过跳过依赖项脱机删除rpm

现在,我们可以通过使用--nodeps跳过所有依赖项来删除rpm

[root@node1 ~]# rpm -e pykickstart
error: Failed dependencies:
pykickstart >= 1.99.22 is needed by (installed) python-blivet-1:0.61.15.72-1.el7.noarch
pykickstart >= 1.99.66.19 is needed by (installed) anaconda-core-21.48.22.147-1.el7.centos.x86_64
[root@node1 ~]# rpm -e pykickstart --nodeps

现在让我们验证是否成功删除了rpm。

[root@node1 ~]# rpm -qa | grep pykickstart
[root@node1 ~]#

因此,当依存关系仍然存在于我的Linux节点上时,就删除了rpm,如下所示:

[root@kerberos ~]# rpm -qa | grep python-blivet
python-blivet-0.61.15.72-1.el7.noarch
[root@kerberos ~]# rpm -qa | grep anaconda-core
anaconda-core-21.48.22.147-1.el7.centos.x86_64

使用yum删除具有依赖项的rpm

现在,如果我们希望删除rpm及其所有依赖项,则可以使用yum。

警告:

删除依赖项rpm有时会对节点造成风险,如果删除了重要的二进制文件和库文件,则可能使我们处于无法使用的状态。
因此,我们强烈建议我们避免使用此步骤。

要删除rpm及其依赖项,可以使用以下命令

[root@kerberos ~]# yum remove pykickstart
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package pykickstart.noarch 0:1.99.66.19-2.el7 will be erased
--> Processing Dependency: pykickstart >= 1.99.22 for package: 1:python-blivet-0.61.15.72-1.el7.noarch
--> Processing Dependency: pykickstart >= 1.99.66.19 for package: anaconda-core-21.48.22.147-1.el7.centos.x86_64
--> Running transaction check
---> Package anaconda-core.x86_64 0:21.48.22.147-1.el7.centos will be erased
--> Processing Dependency: anaconda-core = 21.48.22.147-1.el7.centos for package: anaconda-gui-21.48.22.147-1.el7.centos.x86_64
--> Processing Dependency: anaconda-core = 21.48.22.147-1.el7.centos for package: anaconda-tui-21.48.22.147-1.el7.centos.x86_64
---> Package python-blivet.noarch 1:0.61.15.72-1.el7 will be erased
--> Running transaction check
---> Package anaconda-gui.x86_64 0:21.48.22.147-1.el7.centos will be erased
--> Processing Dependency: anaconda-gui >= 21.48.22.102 for package: initial-setup-gui-0.3.9.43-1.el7.centos.x86_64
---> Package anaconda-tui.x86_64 0:21.48.22.147-1.el7.centos will be erased
--> Processing Dependency: anaconda-tui >= 21.48.22.102 for package: initial-setup-0.3.9.43-1.el7.centos.x86_64
--> Running transaction check
---> Package initial-setup.x86_64 0:0.3.9.43-1.el7.centos will be erased
---> Package initial-setup-gui.x86_64 0:0.3.9.43-1.el7.centos will be erased
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================
 Package                         Arch                 Version                                    Repository               Size
===============================================================================================================================
Removing:
 pykickstart                     noarch               1.99.66.19-2.el7                           @base                   1.7 M
Removing for dependencies:
 anaconda-core                   x86_64               21.48.22.147-1.el7.centos                  @anaconda               8.1 M
 anaconda-gui                    x86_64               21.48.22.147-1.el7.centos                  @anaconda               1.5 M
 anaconda-tui                    x86_64               21.48.22.147-1.el7.centos                  @anaconda               443 k
 initial-setup                   x86_64               0.3.9.43-1.el7.centos                      @anaconda               221 k
 initial-setup-gui               x86_64               0.3.9.43-1.el7.centos                      @anaconda                32 k
 python-blivet                   noarch               1:0.61.15.72-1.el7                         @anaconda               3.0 M
Transaction Summary
===============================================================================================================================
Remove  1 Package (+6 Dependent packages)
Installed size: 15 M
Is this ok [y/N]: y <- Press "y" for confirmation
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : initial-setup-gui-0.3.9.43-1.el7.centos.x86_64                                                              1/7
  Erasing    : anaconda-gui-21.48.22.147-1.el7.centos.x86_64                                                               2/7
  Erasing    : initial-setup-0.3.9.43-1.el7.centos.x86_64                                                                  3/7
  Erasing    : anaconda-core-21.48.22.147-1.el7.centos.x86_64                                                              4/7
  Erasing    : anaconda-tui-21.48.22.147-1.el7.centos.x86_64                                                               5/7
  Erasing    : 1:python-blivet-0.61.15.72-1.el7.noarch                                                                     6/7
  Erasing    : pykickstart-1.99.66.19-2.el7.noarch                                                                         7/7
  Verifying  : anaconda-tui-21.48.22.147-1.el7.centos.x86_64                                                               1/7
  Verifying  : 1:python-blivet-0.61.15.72-1.el7.noarch                                                                     2/7
  Verifying  : anaconda-core-21.48.22.147-1.el7.centos.x86_64                                                              3/7
  Verifying  : initial-setup-gui-0.3.9.43-1.el7.centos.x86_64                                                              4/7
  Verifying  : pykickstart-1.99.66.19-2.el7.noarch                                                                         5/7
  Verifying  : initial-setup-0.3.9.43-1.el7.centos.x86_64                                                                  6/7
  Verifying  : anaconda-gui-21.48.22.147-1.el7.centos.x86_64                                                               7/7
Removed:
  pykickstart.noarch 0:1.99.66.19-2.el7
Dependency Removed:
  anaconda-core.x86_64 0:21.48.22.147-1.el7.centos               anaconda-gui.x86_64 0:21.48.22.147-1.el7.centos
  anaconda-tui.x86_64 0:21.48.22.147-1.el7.centos                initial-setup.x86_64 0:0.3.9.43-1.el7.centos
  initial-setup-gui.x86_64 0:0.3.9.43-1.el7.centos               python-blivet.noarch 1:0.61.15.72-1.el7
Complete!

现在我们一定想知道,为什么在执行rpm -e pykickstart时,为什么yum与STDERR相比显示了更大的依赖关系rpm?

在执行rpm -e <rpm_name>时,rpm命令显示所提供的rpm的依赖项列表。
现在在尝试删除rpm之前,yum将找到依赖关系rpm的依赖关系列表,即anaconda-core是pykickstart的依赖关系,而anaconda-tuianaconda-core的依赖关系。
因此,必须去除整个链条。

这就是为什么我们强烈建议不要使用yum来删除具有依赖项的rpm的原因。