AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 892153
Accepted
Garret Wilson
Garret Wilson
Asked: 2018-01-15 08:36:58 +0800 CST2018-01-15 08:36:58 +0800 CST 2018-01-15 08:36:58 +0800 CST

CentOS 在整个系统中都有重复的软件包?

  • 772

我在 DigitalOcean 上设置了一个 CentOS 7.2 x64 服务器。后来我按照DigitalOcean 的指示将内核更新为DigitalOcean GrubLoader v0.2 (20160714) CentOS.

这是可以想象的最简单的服务器设置之一。这就是我开始做的所有事情:

yum -y install epel-release
yum -y groupinstall "Development Tools"
yum -y install bind-utils curl-devel dos2unix expat-devel gettext-devel libtool lrzip openssl openssl-devel p7zip perl-CPAN perl-devel screen unzip whois zlib-devel
yum -y install httpd mod_ssl certbot-apache

我确定我做了其他一些事情,但这就是它的要点。我sudo yum update不时使用以保持最新状态。

我在 Apache 上设置了一些静态站点。我开始并启用certbot-renew.timer,以便我的 Let's Encrypt 证书将始终更新。

当我最近收到一封来自 Let's Encrypt 的电子邮件说我的证书即将过期时,我就知道出了点问题。如果我只是自己发出命令certbot,我会得到:

An unexpected error occurred:
VersionConflict: (certbot 0.19.0 (/usr/lib/python2.7/site-packages), Requirement.parse('certbot==0.14.1'))
Please see the logfile '/tmp/tmp3fGvUd' for more details.

哦,但这只是开始。我试着做sudo yum update,并得到Multilib version problems found了这里。所以我按照指示删除并重新安装了grub2-tools相关软件包。然后我又试了一次。问题NetworkManager。然后我遇到了问题glibc。

我不断收到各种重复的包装问题,所以我找到了其他说明要做的方向sudo package-cleanup --cleandupes。它发现了大量重复,但说:

Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected
 You could try using --skip-broken to work around the problem

其他网站告诉我,我不应该使用任何形状或形式--skip-broken,所以我没有。

现在当我回到尝试做一个简单的sudo yum update事情时,它会找到 2 个要安装的包,98 个要升级,3 个要删除。在愉快地下载了 100 个包之后,它开始尝试更新东西。但是其中很多都以这样的消息失败:

error: Couldn't fork %post(cronie-anacron-1.4.11-17.el7.x86_64): Cannot allocate memory

但htop显示我只使用 121M/489M!

我也看到这样的事情:

httpd-2.4.6-45.el7.centos.4.x86_64 was supposed to be removed but is not!

在这一点上,我认为可能有一些更新,所以我做了一个sudo systemctl reboot.

重新启动后,现在我可以运行了certbot!我做了 asudo yum check-update和 a sudo yum update,并且说“应该被删除但没有被删除”的东西似乎已经安装了。虽然我确实遇到了一些错误

Re-declaration of type docker_t
Failed to create node
Bad type declaration at /etc/selinux/targeted/tmp/modules/100/docker/cil:1
/usr/sbin/semodule:  Failed!

我再次重新启动并尝试package-cleanup --dupes查看是否仍有重复的包。我有——还有很多!

openssh-clients-7.4p1-13.el7_4.x86_64
openssh-clients-6.6.1p1-35.el7_3.x86_64
nss-tools-3.28.4-1.2.el7_3.x86_64
nss-tools-3.28.4-15.el7_4.x86_64
perl-5.16.3-291.el7.x86_64
perl-5.16.3-292.el7.x86_64
iputils-20160308-8.el7.x86_64
iputils-20160308-10.el7.x86_64
libX11-1.6.5-1.el7.x86_64
libX11-1.6.3-3.el7.x86_64
systemtap-devel-3.0-7.el7.x86_64
systemtap-devel-3.1-4.el7_4.x86_64
…

于是我又试sudo package-cleanup --cleandupes了一次。它说它将删除 199 个包裹,并且……这次它完成了!现在我没有重复!现在没有可用的更新,所以也许它们都已安装!我的网站可用!(我会等着看 certbot 是否会自动更新证书。)

现在我想知道的是我的系统是如何进入所有这些重复包的状态的?我在这么简单的系统配置上做错了什么?以及如何防止它再次发生!?

centos
  • 1 1 个回答
  • 1068 Views

1 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2018-01-15T10:20:46+08:002018-01-15T10:20:46+08:00

    yum在安装过程中崩溃时,您最终会得到重复的包。

    由于您显然有一个 512MB 的 droplet,您应该知道yum通常需要更多的内存来完成任何大量软件包的升级。

    512MB的虚拟机yum在安装时内存不足是很常见的,解决方法是设置swap空间。

    • 3

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve