0

I run the command to install all about ruby : sudo apt-get install ruby-* .But it shows unmet dependencies / broken packages.

See Terminal ScreenShot Here

Now tell me how to install all the packages who met dependencies (satisfied).

Anwar
  • 76,649

1 Answers1

7

When you try to install using ruby-*, that regex will be expanded to include all packages starting with name ruby. But that will only succeed if all packages starting with ruby don't conflict each other or can stay together happily.

The problem is, some packages with name starting with ruby can conflict with some other packages matched by the regex. For example, when I execute that command in my system (Ubuntu 16.04), one of the conflicts was -

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

Here ruby-celluloid-fsm conflicting with ruby-celluoid. I thought one of them is older than the other and the newer one replaces older one and can't stay together. Indeed this was the case when I checked with apt-cache depends ruby-celluloid-fsm command. Here is the output

→ 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

You can clearly see that the package conflicts with ruby-celluoid, indicated by the Breaks: and Replaces: line.

So, don't install anything with * regex pattern, it can fail dramatically. You should only install packages what you need. Remember, Not all packages in official repo can be installed in a system together.

Anwar
  • 76,649