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 / 问题 / 543775
Accepted
user2845840
user2845840
Asked: 2013-10-05 02:08:54 +0800 CST2013-10-05 02:08:54 +0800 CST 2013-10-05 02:08:54 +0800 CST

为什么用 yum 安装两次相同的软件包不会给我相同的文件?

  • 772

我面临的情况:我设置了一台 CentOS 5.9 机器,它应该尽可能接近另一台 CentOS 5.9 机器的副本,但不是克隆。使用 yum,我(尽可能地)在目标机器上安装了所有软件包,这些软件包也安装在源机器上(如 和 报告的那样yum list installed)rpm -qa。之后我使用 md5deep 查找目标机器上仍然丢失的文件。我发现丢失的文件比我预期的要多得多,从而发现了我当前的问题。

在目标和源机器上都安装了包 traceroute-3:2.0.1-6.el5.i386 (说yum list installed)。在两台机器上repoquery --info --show-duplicates traceroute只列出了这个版本的包,并告诉我它可以在基础存储库中找到。在两台机器上rpm -ql traceroute-2.0.1-6.el5.i386列出相同的文件。在两台机器上都rpm -V traceroute-2.0.1-6.el5.i386告诉我安装进展顺利(没有文件修改/丢失)。快速查看 traceroute-2.0.1-6.el5.i386.rpm 仅显示二进制文件 (/bin/traceroute)、符号链接和文档,因此我不希望在安装该软件包时进行编译(但是我不是 RPM 专家,这只是快速查看,而不是彻底检查)。在两台机器上file /bin/traceroute告诉我。/bin/traceroute: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped/bin/traceroute 在两台机器上的大小相同。

然而,当我md5sum /bin/traceroute在两台机器上执行时,我得到了不同的结果。xxd & diff 显示有几十个字节不同,并且差异似乎在实际代码中(尚未对其进行反汇编,但更改的部分不是人类可读的字符串)。traceroute 只是一个随机示例,在 /bin、/sbin 和 /lib 中还有几十个不同的文件。

知道发生了什么吗?我一直认为,只要编译/编辑不是安装的一部分,两次安装相同的包会产生完全相同的文件。至少我希望这rpm -V会告诉我有关已被篡改的文件的信息。如果 yum 能够告诉我它从哪个存储库下载了 RPM 文件,那将会有所帮助,但据我所知,我的 yum (3.2.22) 版本中不存在该工具。需要明确的是:repoquery 不会告诉我从哪个存储库下载了一个包,它只告诉我它在哪里可用。如果相同的包在 2 个或更多已启用的存储库中可用,repoquery 会列出所有包。Yum 可以决定它想要哪些副本,而且它似乎没有在任何日志文件中记录这个决定。

centos
  • 1 1 个回答
  • 1441 Views

1 个回答

  • Voted
  1. Best Answer
    Joshua Miller
    2013-10-05T16:54:58+08:002013-10-05T16:54:58+08:00

    我以前在 RHEL 发行版上遇到过这个问题。比我更聪明的人确定了行为的根源:prelink

    要对其进行测试,请在之前识别出不同哈希值的两个系统上运行以下命令并比较输出。

    /usr/sbin/prelink -y /bin/traceroute | md5sum
    
    • 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