Изменить: Обратите внимание, что, как написано ниже, я знаю ответы на этом сайте, объясняя, что apt-get использует регулярное выражение для интерпретации имен пакетов. На самом деле вопрос непосредственно связан с тем, каким образом его фактическое поведение отличается от его документированного. Пожалуйста, прочитайте вопрос, прежде чем предлагать дубликат.
Некоторые ответы на этом сайте предупреждают об использовании apt-get с помощью подстановочных знаков (т. Е. Звездочек: *), поскольку apt-get предположительно расширяет их как регулярные выражения, что может дать неожиданные (и нежелательные) результаты, особенно с apt-get remove. На самом деле, страница Ubuntu man для apt-get читает:
Если пакет не соответствует указанному выражению, а выражение содержит один из «.», «?», или '*', то предполагается, что это регулярное выражение POSIX, и оно применяется ко всем именам пакетов в базе данных. Любые совпадения затем устанавливаются (или удаляются). Обратите внимание, что сопоставление выполняется подстрокой, поэтому «lo. *» Соответствует «how-lo» и «lower». Если это нежелательно, привяжите регулярное выражение символом «^» или «$» или создайте более определенное регулярное выражение.На самом деле, страница Ubuntu man для apt-get утверждает:
Если пакет не соответствует указанному выражению, а выражение содержит один of '.', '?' или '*', то предполагается, что это регулярное выражение POSIX, и оно применяется ко всем именам пакетов в базе данных. Любые совпадения затем устанавливаются (или удаляются). Обратите внимание, что сопоставление выполняется подстрокой, поэтому «lo. *» Соответствует «how-lo» и «lower». Если это нежелательно, привяжите регулярное выражение символом «^» или «$» или создайте более определенное регулярное выражение.
apt-get принимает регулярное выражение, а не глобус шаблон как оболочка.
$ sudo apt-get install -s 'meld*'
[...]
Note, selecting 'meld' for glob 'meld*'
[...]
$ sudo apt-get install -s 'meldt*'
[...]
Note, selecting 'python-meld3' for regex 'meldt*'
Note, selecting 'python3-meld3' for regex 'meldt*'
Note, selecting 'meld' for regex 'meldt*'
[...]
Я считаю, что это неправильно (по крайней мере, от Xenial). Например, я могу воспроизвести следующее поведение:
(Я не удалял совпадений, только несущественные части ответа apt-get.)
Казалось бы, , основанный на этом поведении, что apt-get сначала пытается сопоставить данные выражения в виде глобусов, и только если он терпит неудачу, повторит ли он как регулярные выражения.
Это объясняется в man-странице apt(8):
install, remove, purge (apt-get(8))
Performs the requested action on one or more packages specified via
regex(7), glob(7) or exact match. The requested action can be
overridden for specific packages by append a plus (+) to the
package name to install this package or a minus (-) to remove it.
Этот абзац не существует в apt(8) manpage , поэтому он может быть добавлен в 16.04 .
Это, похоже, не упоминается в журнале изменений apt - коммит, который добавил это в 2013 году, не показывает никаких изменений в manpages. Это было ненадолго отключено и повторно включено позже (см. Фиксации в период с мая по февраль 2014 года), а отключение указано в журнале изменений.
Таким образом, это может быть добавлено четыре года назад, но добавил это в 2013 году . Управляющая страница apt-get остается заброшенной.
Это объясняется в man-странице apt(8):
install, remove, purge (apt-get(8))
Performs the requested action on one or more packages specified via
regex(7), glob(7) or exact match. The requested action can be
overridden for specific packages by append a plus (+) to the
package name to install this package or a minus (-) to remove it.
Этот абзац не существует в apt(8) manpage , поэтому он может быть добавлен в 16.04 .
Это, похоже, не упоминается в журнале изменений apt - коммит, который добавил это в 2013 году, не показывает никаких изменений в manpages. Это было ненадолго отключено и повторно включено позже (см. Фиксации в период с мая по февраль 2014 года), а отключение указано в журнале изменений.
Таким образом, это может быть добавлено четыре года назад, но добавил это в 2013 году . Управляющая страница apt-get остается заброшенной.
Это объясняется в man-странице apt(8):
install, remove, purge (apt-get(8))
Performs the requested action on one or more packages specified via
regex(7), glob(7) or exact match. The requested action can be
overridden for specific packages by append a plus (+) to the
package name to install this package or a minus (-) to remove it.
Этот абзац не существует в apt(8) manpage , поэтому он может быть добавлен в 16.04 .
Это, похоже, не упоминается в журнале изменений apt - коммит, который добавил это в 2013 году, не показывает никаких изменений в manpages. Это было ненадолго отключено и повторно включено позже (см. Фиксации в период с мая по февраль 2014 года), а отключение указано в журнале изменений.
Таким образом, это может быть добавлено четыре года назад, но добавил это в 2013 году . Управляющая страница apt-get остается заброшенной.