поиск с YUM
Обычно при поиске вы не используете регулярные выражения (globs), yum search
так как команда search
уже ищет подстроки в именах пакетов и их резюме. Откуда я это знаю? Там есть сообщение, которое говорит вам об этом, когда вы используете yum search
.
Только имена и краткие совпадения, используйте «поиск всех» для всего.
ПРИМЕЧАНИЕ . [cl-*]
Технически строка является оболочкой Bash.
Таким образом, вы обычно ищете фрагменты строк, которые вы хотите с search
. Регулярные выражения вступают в игру, когда вы ищете конкретные пакеты. Это команды YUM, такие как list
и install
.
Например:
$ yum list cl-* | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
Available Packages
cl-asdf.noarch 20101028-5.fc19 fedora
cl-clx.noarch 0.7.4-4.3 home_zhonghuaren
cl-ppcre.noarch 2.0.3-3.3 home_zhonghuaren
Единственное предостережение, с которым вы должны быть осторожны при использовании регулярных выражений / глобусов, - это если в вашей оболочке есть файлы с такими именами, что они тоже будут совпадать cl-*
. В этих случаях ваша оболочка расширит регулярное выражение / глобус до того, как оно будет представлено YUM.
Поэтому вместо запуска yum list cl-*
вы будете запускать команду yum list cl-file
, если есть файл, соответствующий регулярному выражению / glob cl-*
.
Например:
$ ls cl-file
cl-file
$ yum list cl-*
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.steadfast.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.steadfast.net
Error: No matching Packages to list
Вы можете защититься от этого, избегая подстановочного знака следующим образом:
$ yum list cl-\* | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
Available Packages
cl-asdf.noarch 20101028-5.fc19 fedora
cl-clx.noarch 0.7.4-4.3 home_zhonghuaren
cl-ppcre.noarch 2.0.3-3.3 home_zhonghuaren
Так что насчет скобок
Я подозреваю, что у вас есть файлы в вашем локальном каталоге, которые сопоставляются, когда вы используете [cl-*]
в качестве аргумента yum search
. Эти файлы после сопоставления с оболочкой были переданы yum search
команде, где совпадения были найдены.
Например:
$ ls cl-file
cl-file
$ yum search cl-*
Loaded plugins: fastestmirror, langpacks, refresh-packagekit, tsflags
Loading mirror speeds from cached hostfile
* fedora: mirror.dmacc.net
* rpmfusion-free: mirror.nexcess.net
* rpmfusion-free-updates: mirror.nexcess.net
* rpmfusion-nonfree: mirror.nexcess.net
* rpmfusion-nonfree-updates: mirror.nexcess.net
* updates: mirror.dmacc.net
======================================================================= N/S matched: cl-file =======================================================================
opencl-filesystem.noarch : OpenCL filesystem layout
Name and summary matches only, use "search all" for everything.
ПРИМЕЧАНИЕ. Приведенное выше совпадение сопоставлялось с именем моего файла, cl-file
а не с тем, cl-*
что я планировал.
cl-*
и не является регулярным выражением, оноglob
называется или как оно называется. Это обычный язык (в терминах Chomskian), но мы обычно говорим, что что-то является регулярным выражением, если оно определяет грамматику для обычного языка (используя по крайней мере три основных операции: конкатенация, изменение и звезда Клини).Определенно другая версия yum, использующая RHEL 6.5 здесь с yum 3.2.29. Осторожно:
вы должны заключить в кавычки *, чтобы не совпадать с чем-либо в текущем каталоге с помощью разбивки оболочки ... Для получения дополнительной информации об этом и практическом примере см. Следующий ответ: /unix//a/155157/83329
В любом случае, только что проверил еще раз, единственный способ на самом деле эффективно искать с помощью поиска yum -
yum search all | grep foo
этоyum search foo
давать довольно размытые результаты. Ноyum list "foo-*"
работает так, как ожидалось, и единственным результатом в вашем случае, вероятно, будет пакет cl-asdf.noarch.У быстрого поиска связанных сообщений об ошибках yum у поиска yum есть и другие недостатки: https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
источник
Извините, я не могу комментировать, поэтому придется использовать ответ.
Ты пробовал
yum search cl-*
илиyum list 'cl-*'
? По крайней мере,yum whatprovides */foo
это работает для поиска имен файлов, хотя это немного особый случай. В противном случае я также часто использую,yum list all | grep -i foo
но остерегайтесь многострочного вывода yum, grep может показывать только первую строку, поэтому, возможно, используйтеyum list all | grep -iA1 foo
Есть также несколько полезных примеров на странице руководства ниже «Опции списка». Дополнительная документация также доступна непосредственно в апстриме по адресу http://yum.baseurl.org/, например, http://yum.baseurl.org/wiki/YumCommands или, возможно, напрямую через python: http://yum.baseurl.org/wiki/ YumCodeSnippet / YumSearch
источник
yum search cl-*
? - да. Это ничего не находит (может быть, другая версия ням? Я все еще использую FC18).yum search
, комбинирование его с регулярными выражениями / подстановочными знаками является двойным избыточным.yum search
уже выполняет нечеткий поиск, поэтому использование групповых символов довольно бесполезно. Если вы хотите ограничить свой поиск, используйтеyum list expression
илиyum list all | grep expression
. В противном случае я предлагаю вам открыть запрос на улучшение против yum - удачи вам: p