pesquisando com YUM
Geralmente, você não usa expressões regulares (globs) ao pesquisar, yum search
pois o comando search
já está procurando sub-strings nos nomes dos pacotes e seus resumos. Como eu sei disso? Há uma mensagem que informa isso quando você usa yum search
.
Apenas o nome e o resumo correspondem, use "pesquisar tudo" para tudo.
NOTA: A string [cl-*]
é tecnicamente uma esfera no shell Bash.
Então você geralmente procura por fragmentos de strings que deseja search
. As expressões regulares entram em jogo quando você procura pacotes específicos. Estes são os comandos do YUM como list
e install
.
Por exemplo:
$ 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
A única ressalva que você deve ter cuidado com as expressões regulares / globs é se existem arquivos no seu shell que são nomeados de modo que eles também correspondam cl-*
. Nesses casos, seu shell expandirá o regex / glob antes de ser apresentado ao YUM.
Então, em vez de executar, yum list cl-*
você estará executando o comando yum list cl-file
, se houver um arquivo correspondente ao regex / glob cl-*
.
Por exemplo:
$ 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
Você pode se proteger contra isso, escapando do curinga da seguinte maneira:
$ 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
Então, e os suportes
Eu suspeito que você tenha arquivos em seu diretório local que estão sendo correspondidos quando você usou [cl-*]
como argumento yum search
. Esses arquivos após serem correspondidos pelo shell, foram passados para o yum search
comando onde as correspondências foram encontradas.
Por exemplo:
$ 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: A correspondência acima foi comparada com o nome do meu arquivo cl-file
, e não cl-*
como eu pretendia.
cl-*
não seja uma expressão regular, é umglob
ou como é chamada. É uma linguagem regular (em termos chomskianos), mas geralmente dizemos que algo é uma expressão regular se define uma gramática para a linguagem regular (usando pelo menos três operações básicas: concatenação, alteração e estrela de Kleene).Definitivamente versão yum diferente, usando RHEL 6.5 aqui com yum 3.2.29 Cuidado:
Você deve citar * para não corresponder a nada no diretório atual via shell globbing ... Para obter mais detalhes sobre isso e um exemplo prático, consulte a resposta posterior: /unix//a/155157/83329
De qualquer forma, apenas verificado novamente, a única maneira de realmente procurar eficazmente com pesquisa yum é por
yum search all | grep foo
quantoyum search foo
dá resultados bastante difusas. Masyum list "foo-*"
funciona da maneira esperada, e o único resultado no seu caso provavelmente seria o pacote cl-asdf.noarch.Olhar rapidamente sobre os relatórios de erros relacionados ao yum A pesquisa do yum também parece ter outras desvantagens: https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
fonte
Desculpe, ainda não posso comentar, por isso, use uma resposta.
Você tentou
yum search cl-*
ouyum list 'cl-*'
? Pelo menosyum whatprovides */foo
, funciona para pesquisar nomes de arquivos, embora esse seja um caso especial. Caso contrário, eu também frequentemente uso,yum list all | grep -i foo
mas cuidado com a saída multilinha do yum, o grep pode mostrar apenas a primeira linha, então talvez useyum list all | grep -iA1 foo
Existem também alguns exemplos úteis na página de manual abaixo de "Opções de lista". Documentação adicional também está disponível diretamente a montante em http://yum.baseurl.org/, por exemplo, http://yum.baseurl.org/wiki/YumCommands ou talvez diretamente via python: http://yum.baseurl.org/wiki/ YumCodeSnippet / YumSearch
fonte
yum search cl-*
? - sim eu fiz. Isso não encontra nada (talvez versão diferente do yum? Ainda estou usando o FC18).yum search
, combiná-lo com expressões regulares / curingas é redundante duplo.yum search
já faz uma pesquisa confusa, portanto, usar caracteres curinga é bastante inútil. Se você deseja restringir sua pesquisa, useyum list expression
ouyum list all | grep expression
. Caso contrário, eu sugiro que você abrir uma solicitação de melhoria contra yum - boa sorte com isso: p