为什么我无法安装所有以“ruby-*”模式开头的软件包?

为什么我无法安装所有以“ruby-*”模式开头的软件包?

我运行命令来安装有关 ruby​​ 的所有内容:sudo apt-get install ruby-* 但它显示未满足的依赖项/损坏的包。

点击此处查看终端截图

现在告诉我如何安装所有满足依赖性(满足)的软件包。

答案1

当您尝试使用 安装时ruby-*,该正则表达式将扩展为包含所有以 name 开头的包。但只有当所有以 开头的包不相互冲突或可以愉快地保持在一起ruby时,此操作才会成功。ruby

问题是,一些以 开头的软件包ruby可能会与正则表达式匹配的其他软件包发生冲突。例如,当我在系统 (Ubuntu 16.04) 中执行该命令时,其中一个冲突是 -

ruby-celluloid-fsm : Breaks: ruby-celluloid (< 0.17~) but 0.16.0-4 is to be installed

这里ruby-celluloid-fsm与 冲突ruby-celluoid。我认为其中一个比另一个更旧,而较新的会取代较旧的,因此无法保持在一起。当我使用命令检查时,确实如此apt-cache depends ruby-celluloid-fsm。以下是输出

→ apt-cache depends ruby-celluloid-fsm 
ruby-celluloid-fsm
  Depends: bundler
 |Depends: ruby
  Depends: <ruby-interpreter>
    ruby2.0:i386
    ruby2.0
    ruby2.1
    ruby2.2
    jruby
    ruby1.9.1
  Depends: ruby-dotenv
  Depends: ruby-nenv
  Depends: ruby-rspec-logsplit
  Depends: ruby-timers
  Breaks: ruby-celluloid
  Replaces: ruby-celluloid

您可以清楚地看到该包与 冲突,如和行ruby-celluoid所示。Breaks:Replaces:

因此,不要安装任何带有*正则表达式的东西,否则可能会失败。你应该只安装你需要的包。记住, 官方 repo 中的软件包并非都可以一起安装在一个系统中。

相关内容