【问题标题】:Can yum tell me which of my repositories provide a particular package?yum 可以告诉我哪些存储库提供了特定的包吗?
【发布时间】:2010-10-12 18:15:40
【问题描述】:

希望问题的简短版本:如果我在安装了特定软件包的机器上,是否有一个 yum 命令可以告诉我提供该软件包的哪些配置存储库? (或者,什么存储库将提供尚未安装的包。)

在需要一些上下文的情况下的背景:我们有一个迷宫般的 yum 存储库,我们从中提取。我有一台安装了特定 rpm 软件包的机器,以及另一台配置了明显不足的存储库迷宫的机器,因此我无法将我想要的软件包安装到那台机器上。我需要将最少的必要存储库添加到新机器。我不能只是将存储库从一台机器枪杀到另一台机器。只是出去并抓住 rpm 不是一种选择,因为我需要它是可重现的。

【问题讨论】:

    标签: linux yum package-managers


    【解决方案1】:
    yum list packagename
    

    这将在输出的第三列中显示包来自哪个存储库。

    对于已安装的软件包,这将不起作用,因为第三列仅显示“已安装”。在这种情况下,您可以执行例如“rpm -qi packagename”,通常是 Vendor、Packager 和 Build Host 标签将指示包属于哪个存储库。将一些 repo 符号附加到包版本号也是很常见的。

    【讨论】:

    • Atomic Repo 用户:Atomic RPM 的供应商为空白,但如果“Build Host”为“archelon”,则来自 Atomic。
    【解决方案2】:
    repoquery -i {packagename} 
    

    这将为您提供实际的 repo 名称与 yum 返回的无用的“已安装”名称。 repoquery 由 yum-utils 提供。

    【讨论】:

      【解决方案3】:

      您可以使用 yum -v search 向您显示软件包及其所在的 repo。如果您还添加 --showduplicates,您将看到该软件包的所有版本。

      归功于:http://www.spinics.net/linux/fedora/yum/msg11975.html

      【讨论】:

        【解决方案4】:

        对于单个包,您可以使用

        PACKAGE=ruby-enterprise
        repoquery --qf "%{repoid}" $PACKAGE
        

        $PACKAGE 替换为您关心的包的名称。

        您可以找到来自特定存储库的所有包

        REPO=ruby-enterprise-opt
        repoquery --repoid=$REPO -a --qf "%{name}" | sort > repo_packages
        rpm -qa --qf "%{name}\n" | sort > installed_packages
        comm -1 -2 repo_packages installed_packages
        

        $REPO替换为你关心的仓库的id;您可以使用yum repolist 查看所有已启用存储库的 ID。

        【讨论】:

          【解决方案5】:

          以下是发现给定已安装包的存储库的一些方法:

          rpm -qi {packagename}
          

          repoquery -i {packagename}
          

          参考文献:

          【讨论】:

            【解决方案6】:
            yum reinstall [package_name]
            

            然后当要求确认时,您可以选择 N 不更改您的系统:

            centos 上的示例输出:

            Resolving Dependencies
            --> Running transaction check
            ---> Package mc.x86_64 1:4.6.1a-35.el5 set to be updated
            --> Finished Dependency Resolution
            
            Dependencies Resolved
            
            ==============================================================================================================================================
             Package                      Arch                             Version                                   Repository                      Size
            ==============================================================================================================================================
            Reinstalling:
             mc                           x86_64                           1:4.6.1a-35.el5                           base                           2.1 M
            
            Transaction Summary
            ==============================================================================================================================================
            Remove        0 Package(s)
            Reinstall     1 Package(s)
            Downgrade     0 Package(s)
            
            Total download size: 2.1 M
            Is this ok [y/N]:
            

            【讨论】:

            • 谢谢。由于所有其他解决方案因任何原因都失败了,所以这个后备拯救了我的一天:)
            【解决方案7】:

            EL7

            这应该等同于yum list installed,但具有机器可读的输出:

            repoquery --installed '*' --queryformat='%{name} %{evr} %{ui_from_repo}' | column -t
            

            显然,制作一个列出可能字段的手册页太麻烦了;但您可以查看 https://github.com/rpm-software-management/yum/blob/master/yum/packages.py 并使用您要列出的对象类的任何属性。

            例如,如果您要列出已安装的软件包,则可以使用 YumInstalledPackage 的字段,因此可以使用其基类 YumHeaderPackageYumAvailablePackagePackageObjectRpmBase 的字段。

            这是一个例子:

            $ repoquery --installed '*' --qf='%{name} %{evr} %{ui_from_repo}' | head -n 10 | column -t
            GeoIP                         1.5.0-14.el7    @rhos-13.0-rhel-7-signed
            MySQL-python                  1.2.5-1.el7     @rhos-13.0-rhel-7-signed
            NetworkManager                1:1.18.0-5.el7  @anaconda/7.7
            NetworkManager-config-server  1:1.18.0-5.el7  @anaconda/7.7
            NetworkManager-libnm          1:1.18.0-5.el7  @anaconda/7.7
            NetworkManager-team           1:1.18.0-5.el7  @anaconda/7.7
            NetworkManager-tui            1:1.18.0-5.el7  @anaconda/7.7
            OpenIPMI                      2.0.27-1.el7    @rhos-13.0-rhel-7-signed
            OpenIPMI-libs                 2.0.27-1.el7    @rhos-13.0-rhel-7-signed
            OpenIPMI-modalias             2.0.27-1.el7    @rhos-13.0-rhel-7-signed
            

            值得阅读the comment that documents the ui_from_repo property,以了解该字段的可能格式。

            EL8

            我发现添加--installed 导致ui_from_repo 的值变为@System。但是有一个 from_repo 字段似乎可以工作。

            (原来有效字段可以用dnf repoquery --querytags输出)。

            $ dnf repoquery --installed '*' --qf='%{name} %{evr} %{from_repo}' | head -n 10 | column -t
            389-ds-base              1.4.3.16-19.module+el8.4.0+11894+f5bb5c43  rhel-8-for-x86_64-appstream-rpms                                 
            389-ds-base-libs         1.4.3.16-19.module+el8.4.0+11894+f5bb5c43  rhel-8-for-x86_64-appstream-rpms                                 
            NetworkManager           1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
            NetworkManager-libnm     1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
            NetworkManager-team      1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
            NetworkManager-tui       1:1.30.0-10.el8_4                          rhel-8-for-x86_64-baseos-rpms                                    
            PackageKit               1.1.12-6.el8                               rhel-8-for-x86_64-appstream-rpms                                 
            PackageKit-glib          1.1.12-6.el8                               rhel-8-for-x86_64-appstream-rpms                                 
            abattis-cantarell-fonts  0.0.25-6.el8                               rhel-8-for-x86_64-appstream-rpms                                 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-10-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-11-05
              • 2010-11-05
              • 1970-01-01
              • 2015-09-05
              相关资源
              最近更新 更多