Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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?

share|improve this question
1  
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. –  Andrea Corbellini Mar 9 at 17:08

3 Answers 3

up vote 2 down vote accepted

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.

share|improve this answer
    
Even if I already did some other grub packages install (same which were removed)? –  diegoaguilar Mar 9 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. –  Avinash Raj Mar 9 at 5:25
    
Legacy boot on HDD –  diegoaguilar Mar 9 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 –  Avinash Raj Mar 9 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) –  diegoaguilar Mar 9 at 5:31

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
    
share|improve this answer
    
So it's all about dependencies... –  diegoaguilar Mar 9 at 6:26
2  
+1 for the widely unknown -s option. –  i08in Mar 9 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*' –  Charles Duffy Mar 9 at 14:44

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
share|improve this answer
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? –  Radu Rădeanu Sep 2 at 8:57
    
@RaduRădeanu In a regexp, y* means "zero or more ys." –  Eliah Kagan Sep 5 at 0:07
    
@EliahKagan Personally,I know that; see my answer... :D –  Radu Rădeanu Sep 5 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. –  Andrea Corbellini Sep 5 at 17:23

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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