Почему apt удаляет ненужные пакеты при указании суффикса *? [дубликат]

Я выполнил sudo apt-get remove ruby ​​* , а затем я увидел, что некоторые пакеты grub также удаляются, поэтому я вернулся к установке тех пакетов, которые были показаны в журнале удалили

. Я установил grub для работы на моем / sda (в общем, не на любом номере) при обратной установке.

Должно ли все быть в порядке или мне следует опасаться за свою систему и планировать установку / перенастройку большего количества grub.

И почему это произошло?

4
задан 9 March 2014 в 20:05

3 ответа

Попробуйте эту команду на терминале,

sudo grub-install /dev/sda

Это переустановит grub2 на Вашем диске.

, Если Вы хотите настроить свою личинку тогда, устанавливают grub-pc пакет. Попробуйте ниже команды для установки grub-pc пакет,

sudo apt-get install grub-pc

Примечание: Установка этот пакет, только если Вы установили Ubuntu в режиме Legacy.

2
ответ дан 8 October 2019 в 12:12

Если Вы не знаете точно, что Вы делаете, Вы не должны использовать:

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

поскольку это может удалить непреднамеренные пакеты и вызвать больше проблем, чем это решает. package.* будет соответствовать всем пакетам (и их зависимости) содержащий строку package на их имя. Это от man apt-get, где-нибудь в строке 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.

И это - от Регулярных Выражений/POSIX Основной Викиучебник Регулярных выражений:

* Соответствует предыдущему нулю элемента или больше раз. Например, ab*c соответствия "ac", "abc", "abbbc", и т.д. [xyz]* соответствия"" ", x", "y", "z", "zx", "zyx", "xyzzy", и так далее. \(ab\)* соответствия"" ", ab", "abab", "ababab", и так далее.

Так или иначе, если Вы действительно хотите выполнить что-то как sudo apt-get remove package.* (или sudo apt-get remove packagey*, или sudo apt-get remove packagec* - все - в этом случае то же), первый показ это с -s (--simulate) опция видеть точно, что это сделает (см. man apt-get для большего количества информации).

Теперь, я думаю, что можно решить проблему с помощью выполняющего двух шагов:

  1. Переустановите все пакеты, которые Вы удалили

  2. Удалите только ruby:

    sudo apt-get remove ruby
    

    Или, если Вы хотите удалить все пакеты, начинающие их имена с ruby:

    sudo apt-get remove ^ruby
    

    Но лучше моделировать сначала с:

    apt-get -s remove ^ruby
    
8
ответ дан 8 October 2019 в 12:12

Склонный - получают работы с регулярными выражениями, что означает, что ruby* выбирает все пакеты, которые содержат , трутся на их имя. Корректный способ удалить все пакеты, запускающиеся с рубин :

apt-get remove ^ruby
4
ответ дан 8 October 2019 в 12:12

Другие вопросы по тегам:

Похожие вопросы: