![为什么我无法安装所有以“ruby-*”模式开头的软件包?](https://linux22.com/image/994545/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E6%97%A0%E6%B3%95%E5%AE%89%E8%A3%85%E6%89%80%E6%9C%89%E4%BB%A5%E2%80%9Cruby-*%E2%80%9D%E6%A8%A1%E5%BC%8F%E5%BC%80%E5%A4%B4%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%9F.png)
我运行命令来安装有关 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 中的软件包并非都可以一起安装在一个系统中。