yum error - 包是重复的

Jus*_*tin 36 centos yum duplicates centos7

当我尝试yum update在CentOS 6.3机器上运行时,我遇到了错误,并表示要运行yum check.输出yum check是:

?  ~  yum check
Loaded plugins: fastestmirror
glibc-2.12-1.107.el6_4.5.x86_64 is a duplicate with glibc-2.12-1.107.el6_4.4.x86_64
glibc-common-2.12-1.107.el6_4.5.x86_64 is a duplicate with glibc-common-2.12-1.107.el6_4.4.x86_64
glibc-devel-2.12-1.107.el6_4.5.x86_64 is a duplicate with glibc-devel-2.12-1.107.el6_4.4.x86_64
glibc-devel-2.12-1.107.el6_4.5.x86_64 has missing requires of glibc-headers = ('0', '2.12', '1.107.el6_4.5')
iputils-20071127-17.el6_4.2.x86_64 is a duplicate with iputils-20071127-17.el6_4.x86_64
nspr-4.9.5-2.el6_4.x86_64 is a duplicate with nspr-4.9.2-1.el6.x86_64
nss-3.14.3-4.el6_4.x86_64 is a duplicate with nss-3.14.0.0-12.el6.x86_64
nss-softokn-3.14.3-3.el6_4.x86_64 is a duplicate with nss-softokn-3.12.9-11.el6.x86_64
nss-util-3.14.3-3.el6_4.x86_64 is a duplicate with nss-util-3.14.0.0-2.el6.x86_64
tzdata-2013g-1.el6.noarch is a duplicate with tzdata-2013c-2.el6.noarch
2:xinetd-2.3.14-39.el6_4.x86_64 is a duplicate with 2:xinetd-2.3.14-38.el6.x86_64
Error: check all
Run Code Online (Sandbox Code Playgroud)

知道如何修复这些包吗?我试过yum reinstall xinetd tzdata nss-util nss-softokn nss nspr iputils glibc glibc-common glibc-devel但得到了:

错误:找到Multilib版本问题.这通常意味着根本原因是其他原因,而multilib版本检查只是指出存在问题.

use*_*360 46

对我而言,在您升级软件包的过程中,您似乎重新启动了计算机(或者它已崩溃).所以安装新包,但旧包没有删除.

首先查看您是否有任何未完成的交易:yum-complete-transaction

如果这没有帮助,那么看看作为yum-utils包的一部分的package-cleanup工具.

package-cleanup --dupes 列出重复的包

package-cleanup --cleandupes 删除重复的包

但是请小心使用该命令并在删除重复项之前创建备份.

  • `yum-complete-transaction`也修复了它.我不得不'yum install yum-utils`来提供这个功能.我的机器在安装过程中没有重启,但在安装过程中我丢失了SSH连接,这似乎停止了安装...... (3认同)
  • ``package-cleanup --cleandupes``打破了我的系统,因为它删除了被删除的副本所拥有的文件,尽管这些文件也归第一个副本/ dup所有.我有glibc作为副本,运行此命令后,我无法运行任何其他内容.在我的例子中,``rpm -e --justdb [duplicated packages]``运行正常. (3认同)
  • package-cleanup --cleandupes 对我不起作用,但我能够解决以下问题: for i in $(package-cleanup --dupes); 做 rpm -e --justdb $i --nodeps; 完毕 (2认同)

小智 31

这是我用471个dupes修复一个CentOS 7服务器的方式.

首先我必须安装yum utils:

yum install yum-utils
Run Code Online (Sandbox Code Playgroud)

尝试了yum-complete-transaction和其他没有运气的东西,我放弃了交易:

yum-complete-transaction --cleanup-only
Run Code Online (Sandbox Code Playgroud)

然后我得到了一个重复包的排序列表,所以我可以识别旧版本以删除过滤偶数和奇数行:

package-cleanup --dupes | sort -u > dupes.out
Run Code Online (Sandbox Code Playgroud)

然后我通过这种方式从这个排序文件中获得了一个卸载列表

cat dupes.out | grep -v 'Loaded plugins:' | sort -u | awk 'NR % 2 == 1' > uninstall.in
Run Code Online (Sandbox Code Playgroud)

然后我从rpm数据库中删除了旧版本:

for f in `cat uninstall.in`; do rpm -e --nodeps -f --justdb $f; done
Run Code Online (Sandbox Code Playgroud)

最后,我可以继续进行常规系统升级:

yum upgrade
Run Code Online (Sandbox Code Playgroud)

有些事要注意:

  • 在这种情况下,我仔细检查了" package-cleanup --dupes "输出,以确保如何生成卸载列表.
  • 我已经尝试过"重新安装更新"的方法来反转列表(awk'NR%2 == 0')但是在那个版本中有很多软件包不再可用(服务器以这种方式保留了一年).
  • 我想从rpmdb中删除较新的软件包,因此稍后升级应重新安装所有内容,但在检查文件系统安装文件后,我很清楚新版本已经到位,只有较旧的rpm条目仍在rpmdb中.也许你的情况有所不同.

  • `awk 'NR % 2 == 1'` 只是删除每隔一行,如果每个包只有一个重复文件,则只会删除重复的文件。识别旧重复文件的更安全方法:`for p in $(package-cleanup --dupes | grep -v ' ' | sort -rV); 做 echo "$(rpm -q --qf "%{NAME}\n" $p) $p"; 完成 | awk '已见[$1]++' | awk '{print $2}' > 删除.list` (3认同)

Hub*_*rio 9

我能够通过使用yum shell以下方法删除所有重复项:

  1. 我首先命令它删除所有使用的包 remove foo-package-*
  2. 然后通过指定确切的版本来命令它安装以前的版本 install foo-package-3.14.1-5.i386 foo-package-3.14.1-5.x86_64
  3. 通过提交交易 run

之后,副本消失了,我可以毫无问题地将系统更新到当前包,而不会引入任何新的重复项.

这甚至适用于像nss或的系统包yum.

  • @ user1403360:这不起作用,因为它想要删除`yum`而中止 (7认同)

scr*_*cer 5

尝试运行:

yum reinstall [package-new.version]
Run Code Online (Sandbox Code Playgroud)

这意味着,如果你得到的输出yum check是:

# yum check
Loaded plugins: fastestmirror
nss-3.14.3-4.el6_4.x86_64 is a duplicate with nss-3.14.0.0-12.el6.x86_64
Run Code Online (Sandbox Code Playgroud)

重新安装:

yum reinstall nss-3.14.3-4.el6_4.x86_64
Run Code Online (Sandbox Code Playgroud)