4

I did a sudo apt-get remove ruby* and then I saw that some grub packages were being removed too so I went to installed back those packages which log showed to have removed

I set grub to work on my /sda (in general, not any number) when was installing back.

Should all be ok or should I fear for my system and plan installing/reconfiguring more of grub.

And, why did this happpen?

2

3 Answers 3

8

If you don't know exactly what you are doing, you should not use:

sudo apt-get remove package.*
#                          ⤷ or any other character in the place of dot

as this can delete unintended packages and cause more problems than it solves. The package.* will match all packages (and their dependencies) containing the string package in their name. This is from man apt-get, somewhere at the line 110:

       If no package matches the given expression and the expression
       contains one of '.', '?' or '*' then it is assumed to be a POSIX
       regular expression, and it is applied to all package names in the
       database. Any matches are then installed (or removed). Note that
       matching is done by substring so 'lo.*' matches 'how-lo' and
       'lowest'. If this is undesired, anchor the regular expression with
       a '^' or '$' character, or create a more specific regular
       expression.

And this is from Regular Expressions/POSIX Basic Regular Expressions Wikibooks:

* Matches the preceding element zero or more times. For example, ab*c matches "ac", "abc", "abbbc", etc. [xyz]* matches "", "x", "y", "z", "zx", "zyx", "xyzzy", and so on. \(ab\)* matches "", "ab", "abab", "ababab", and so on.

Anyway, if you really want to run something like sudo apt-get remove package.* (or sudo apt-get remove packagey*, or sudo apt-get remove packagec* - all are in this case the same), first run it with -s (--simulate) option to see exactly what it will do (see man apt-get for more info).

Now, I think that you can solve your problem using the following two steps:

  1. Reinstall all the packages that you have removed

  2. Remove only ruby:

    sudo apt-get remove ruby
    

    Or, if you want to remove all packages starting their names with ruby:

    sudo apt-get remove ^ruby
    

    But better to simulate first with:

    apt-get -s remove ^ruby
    
3
  • So it's all about dependencies... Mar 9, 2014 at 6:26
  • 2
    +1 for the widely unknown -s option.
    – jobin
    Mar 9, 2014 at 12:16
  • 3
    package* will also behave in surprising ways if run from a directory containing any files starting with package. Better to quote it: 'package*' Mar 9, 2014 at 14:44
4

Apt-get works with regular expressions, which means that ruby* selects all packages that contain rub in their name. The correct way to remove all packages starting with ruby is:

apt-get remove ^ruby
4
  • 1
    +1 from me, but can you explain why ruby* selects all packages that contain rub in their name and not ruby as many may think so? Sep 2, 2014 at 8:57
  • @RaduRădeanu In a regexp, y* means "zero or more ys." Sep 5, 2014 at 0:07
  • 1
    @EliahKagan Personally,I know that; see my answer... :D Sep 5, 2014 at 0:20
  • @RaduRădeanu, this is the exact reason why I posted this as a comment, rather than as an answer. I'm not going to write how regular expressions work, sorry. Sep 5, 2014 at 17:23
2

Try this command on terminal,

sudo grub-install /dev/sda

It will reinstall grub2 on your disk.

If you want to configure your grub then install grub-pc package.Try the below command to install grub-pc package,

sudo apt-get install grub-pc

Note: Install this package only if you installed Ubuntu in Legacy mode.

9
  • Even if I already did some other grub packages install (same which were removed)? Mar 9, 2014 at 5:24
  • Are you installed Ubuntu in legacy mode?post the output of [ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD" command. Mar 9, 2014 at 5:25
  • Legacy boot on HDD Mar 9, 2014 at 5:27
  • 1
    Install grub-pc package to configure your grub.Run this command to install grub-pc package, sudo apt-get install grub-pc Mar 9, 2014 at 5:28
  • 1
    I will do and trust, and by the way: Why would sudo apt-get remove ruby* end up removing grub packages? (I suggest you to post right on the answer) Mar 9, 2014 at 5:31

Not the answer you're looking for? Browse other questions tagged or ask your own question.