首页 文章

可以使用rpm命令安装RPM软件包,但是yum依赖项检查失败

提问于
浏览
0

我创建了一个自定义RPM包,它提供了一个特定版本的Ruby,并预安装了一组自定义的rubygems . RPM软件包在自定义位置安装ruby: /usr/local/ruby_alt/ . 所以安装的ruby将在: /usr/local/ruby_alt/bin/ruby .

包中的一些gem具有引用自定义Ruby安装的she-bang行的脚本(例如 #!/usr/local/ruby_alt/bin/ruby ) .

RPM包是使用 AutoReqProv=yes 创建的(意味着rpmbuild将自动扫描包的内容以获取依赖关系) . rpmbuild正确地将 /usr/local/ruby_alt/bin/ruby 标识为依赖项 .

此软件包使用rpm命令(例如 rpm -i ruby_alt_pvdgm... )成功安装在CentOS 6环境中,没有错误或警告 .

当此rpm放在自定义yum存储库中并尝试使用yum安装它时,我们得到:

$ sudo yum install ruby_alt_pvdgm
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: repos.redrockhost.com
 * epel: fedora-epel.mirror.lstn.net
 * extras: centos-distro.cavecreek.net
 * updates: mirrors.loosefoot.com
Resolving Dependencies
--> Running transaction check
---> Package ruby_alt_pvdgm.x86_64 0:2.2.1-2.el6 will be installed
--> Processing Dependency: /usr/local/ruby_alt/bin/ruby for package: ruby_alt_pvdgm-2.2.1-2.el6.x86_64
--> Processing Dependency: /usr/local/ruby_alt/bin/ruby for package: ruby_alt_pvdgm-2.2.1-2.el6.x86_64

Packages skipped because of dependency problems:
    ruby_alt_pvdgm-2.2.1-2.el6.x86_64 from fury

我知道 /usr/local/ruby_alt/bin/ruby 在安装时不存在,但包本身满足依赖性,所以应该没有困难 . 实际上,rpm命令 - 如前所述 - 安装包没有任何问题 .

当rpm命令没有投诉时,为什么yum会拒绝安装此RPM软件包?

编辑:我已经验证rpm和yum都显示 /usr/local/ruby_alt/bin/ruby 作为依赖项,因此这不是yum具有比rpm命令更广泛的依赖性检查的情况 . 没有其他人遇到yum拒绝安装满足它自己的依赖项的包的情况吗?正如您从上面的讨论中回忆的那样,有问题的软件包满足了这种依赖关系,rpm命令似乎也理解这种依赖关系 .

1 回答

  • 0

    Check RPM dependencies中所述,您可以询问 yumrpm 有关依赖关系,例如,

    yum -q deplist $PKG
    rpm -qpR $PKG
    

    因为 yum 有更多可用信息,所以在安装软件包时,它会尝试通过安装它们来满足依赖项 . rpm 无法做到这一点,并且会默默地允许某些依赖项不满足 .

    以下是一些相关的讨论:

    重读,关于“满足自己的依赖关系”的评论让我想起了我用Perl遇到的问题(打包vi-like-emacs) . 我使用的一个解决方法(需要不止一个)是在脚本中添加一行(mime.pl),它显示为依赖关系,如下所示:

    our $RPM_Provides = 'mime.pl perl(mime.pl)';
    

    以及在spec文件中:

    Provides:       perl(mime.pl)
    

    也就是说,RPM被这些提示所取代 - 根据不同版本的RPM和平台,它们都是必需的 . Ruby有类似的解决方法,例如,

    修改自动依赖机制似乎是一个坏主意,但这是一种可能性 .

相关问题