buscando con YUM
Por lo general, no utiliza ninguna expresión regular (globs) cuando busca, yum search
ya que el comando search
ya está buscando subcadenas dentro de los nombres de los paquetes y sus resúmenes. ¿Cómo se esto? Hay un mensaje que te dice esto cuando lo usas yum search
.
Solo coincidencias de nombre y resumen, use "buscar todo" para todo.
NOTA: La cadena [cl-*]
es técnicamente un globo en el shell Bash.
Por lo tanto, generalmente busca fragmentos de cadenas que desee search
. Las expresiones regulares entran en juego cuando buscas paquetes particulares. Estos son los comandos YUM como list
y install
.
Por ejemplo:
$ 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
La única advertencia que debe tener cuidado con regexes / globs, es si hay archivos dentro de su shell que se nombran de manera que también coincidan cl-*
. En esos casos, su shell expandirá la expresión regular / glob antes de que se presente a YUM.
Entonces, en lugar de ejecutar yum list cl-*
, ejecutará el comando yum list cl-file
, si hay un archivo que coincida con la expresión regular / glob cl-*
.
Por ejemplo:
$ 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
Puede evitar que esto suceda escapando del comodín de esta manera:
$ 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
¿Y qué hay de los corchetes?
Sospecho que tiene archivos en su directorio local que coinciden cuando lo utilizó [cl-*]
como argumento yum search
. Estos archivos, luego de ser comparados por el shell, se pasaron al yum search
comando donde coincide donde se encontraron.
Por ejemplo:
$ 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.
NOTA: La coincidencia anterior coincidía con el nombre de mi archivo cl-file
y no con el cl-*
que tenía previsto.
cl-*
no es una expresión regular, es unaglob
o como se llame. Es un lenguaje regular (en términos chomskianos), pero generalmente decimos que algo es una expresión regular si define una gramática para el lenguaje regular (mediante el uso de al menos tres operaciones básicas: concatenación, alteración y estrella de Kleene).Definitivamente diferente versión de yum, usando RHEL 6.5 aquí con yum 3.2.29 Cuidado:
debe citar el * para que no coincida con nada en el directorio actual a través de shell globbing ... Para obtener más detalles sobre eso y un ejemplo práctico, consulte la respuesta posterior: /unix//a/155157/83329
De todas formas, acaba de comprobar de nuevo, la única manera de buscar realmente eficaz con la búsqueda de yum es por
yum search all | grep foo
queyum search foo
da resultados bastante difusas. Peroyum list "foo-*"
funciona exactamente como se esperaba, y el único resultado en su caso probablemente sería el paquete cl-asdf.noarch.Echando un vistazo rápido sobre informes de errores relacionados con yum, la búsqueda de yum también parece tener otros inconvenientes: https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
fuente
Lo siento, no puedo comentar todavía, así que tengo que usar una respuesta.
¿Intentaste
yum search cl-*
oyum list 'cl-*'
? Al menosyum whatprovides */foo
, funciona para buscar nombres de archivos, aunque ese es un caso un poco especial. De lo contrario, a menudo también usoyum list all | grep -i foo
pero tenga cuidado con la salida multilínea de yum, grep podría mostrar solo la primera línea, así que tal vez useyum list all | grep -iA1 foo
También hay algunos ejemplos útiles en la página del manual debajo de "Opciones de lista". La documentación adicional también está disponible directamente en http://yum.baseurl.org/ por ejemplo http://yum.baseurl.org/wiki/YumCommands o tal vez directamente a través de python: http://yum.baseurl.org/wiki/ YumCodeSnippet / YumSearch
fuente
yum search cl-*
? - Sí, lo hice. Esto no encuentra nada (¿quizás una versión diferente de yum? Todavía estoy usando FC18).yum search
, combinarlo con expresiones regulares / comodines es doblemente redundante.yum search
ya hace una búsqueda difusa, por lo que usar comodines es bastante inútil. Si desea restringir su búsqueda, useyum list expression
oyum list all | grep expression
. De lo contrario, le sugiero que abra una solicitud de mejora en contra de ñam - buena suerte con eso: p