【问题标题】:Reverse dependency generation with zypper使用 zypper 生成反向依赖项
【发布时间】:2012-08-24 09:46:09
【问题描述】:

使用zypper,我可以得到包A依赖包B。但是,我需要知道哪些包依赖于包B。

有没有办法生成反向依赖列表?

【问题讨论】:

    标签: dependencies opensuse package-managers meego zypper


    【解决方案1】:

    您可以搜索(缩写为“se”)需要特定包的包:

    zypper se --需要包名

    此外,您只能在已安装的软件包中搜索:

    zypper se -i --需要包名

    例如,查找需要 libpng 的包:

    # zypper se -i --requires libpng
    Loading repository data... 
    Reading installed packages...
    S | Name                        | Summary                                                             | Type   
    --+-----------------------------+---------------------------------------------------------------------+--------
    i | DirectFB                    | Graphics Library for Framebuffer Devices                            | package
    i | MPlayer                     | Multimedia Player                                                   | package
    i | cairo-devel                 | Development environment for cairo                                   | package
    etc.
    

    【讨论】:

    • 但是zypper se --requires gdal 显示gdal-devel,而zypper info --requires gdal-devel 没有将gdal 列为要求。我误会了什么?
    【解决方案2】:

    假设你想知道谁依赖于 libpng14

    在 tcsh 中:

    zypper search -i | cut -d \| -f 2 | tr -s '\n' ' ' > z.txt
    foreach i ( `cat z.txt` )
      zypper info --requires $i |grep libpng14 &&echo $i
    end
    

    过一会儿,你会开始得到如下结果:

    libpng14.so.14()(64bit)
    libpng14.so.14(PNG14_0)(64bit)
    DirectFB
    libpng14.so.14()(64bit)
    libpng14.so.14(PNG14_0)(64bit)
    MPlayer
    

    但是,您需要将包与 grep 消息分开。

    【讨论】:

    • (使用grepcommand 的 -q 修饰符不回显结果)
    【解决方案3】:

    如果已经安装,可以使用 rpm --whatrequires:

    --whatrequires CAPABILITY
            Query all packages that require CAPABILITY for proper functioning.
            Note that this does not return what requires a given package. 
    

    如果没有,你[我们]现在运气不好。

    【讨论】:

    • 谢谢 - 但 rpm 似乎无法正常工作。根据 rpm,系统中没有其他任何东西需要。因此,rpm 可以自行卸载所有内容:(
    【解决方案4】:

    Zypper 1.14.33+ 具有 --requires-pkg,这可能会产生比 --requires 更多的结果。详情请见here

    # zypper se --requires-pkg packagename
    
    # zypper help search | grep -A1 requires-pkg
    --requires-pkg          Search for all packages that require any of the provides of the
                            package(s) matched by the input parameters.
    

    【讨论】:

    • 请解释一下?
    • @PCM 我只知道--requires 不适合我。我在帮助中找到了--requires-pkg,它起作用了。我不知道为什么。
    【解决方案5】:

    这行得通:

    rpm -e --test PKGNAME
    

    来源:man rpm

    【讨论】:

      【解决方案6】:

      希望对你有用:

      betatester@myryzen:~/tmp> rpm -qi --requires \`rpm -qa | grep 'package-name'\`
      

      【讨论】:

      • 这与现有答案相比如何?鉴于这个问题是答案,并且有超过 20 票赞成的答案,因此确保您的答案添加新信息非常有用,并向读者解释为什么新信息与现有答案相比具有相关性和有用性。
      猜你喜欢
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 2021-01-12
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多