recherche avec YUM
En règle générale, vous n'utilisez pas d'expressions régulières (globes) lors de la recherche avec, yum search
car la commande search
recherche déjà des sous-chaînes dans les noms de package et leurs résumés. Comment le sais-je? Il y a un message qui vous le dit lorsque vous utilisez yum search
.
Les correspondances de nom et de résumé uniquement, utilisez "Rechercher tout" pour tout
REMARQUE: la chaîne [cl-*]
est techniquement un glob dans le shell Bash.
Vous recherchez donc généralement les fragments de chaînes que vous souhaitez utiliser search
. Les expressions régulières entrent en jeu lorsque vous recherchez des packages particuliers. Ce sont les commandes YUM comme list
et install
.
Par exemple:
$ 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 seule mise en garde que vous devez faire attention avec les expressions régulières / globes, c'est s'il y a des fichiers dans votre shell qui sont nommés de manière à ce qu'ils correspondent également cl-*
. Dans ces cas, votre shell étendra l'expression régulière / glob avant de la présenter à YUM.
Ainsi, au lieu d'exécuter, yum list cl-*
vous exécuterez la commande yum list cl-file
, s'il existe un fichier correspondant à l'expression régulière / glob cl-*
.
Par exemple:
$ 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
Vous pouvez vous prémunir contre cela en échappant au caractère générique comme suit:
$ 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
Qu'en est-il des supports
Je soupçonne que vous avez des fichiers dans votre répertoire local qui sont mis en correspondance lorsque vous les utilisez [cl-*]
comme argument yum search
. Ces fichiers, après avoir été mis en correspondance par le shell, ont été passés à la yum search
commande où les correspondances ont été trouvées.
Par exemple:
$ 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.
REMARQUE: la correspondance ci-dessus a été comparée au nom de mon fichier cl-file
, et non pas cl-*
comme je l'avais prévu.
cl-*
n'est pas une expression régulière, c'est uneglob
ou quelque chose comme ça. C'est un langage régulier (en termes chomskiens), mais nous disons généralement que quelque chose est une expression régulière s'il définit une grammaire pour le langage régulier (en utilisant au moins trois opérations de base: concaténation, altération et étoile de Kleene).Version définitivement différente de yum, utilisant RHEL 6.5 ici avec yum 3.2.29 Attention:
vous devez citer le * pour ne rien faire correspondre dans le répertoire actuel via le globbing shell ... Pour plus de détails à ce sujet et un exemple pratique, voir la réponse suivante: /unix//a/155157/83329
Quoi qu'il en soit, juste vérifié à nouveau, la seule façon de rechercher réellement efficacement avec la recherche yum est par
yum search all | grep foo
queyum search foo
donne des résultats assez flous. Maisyum list "foo-*"
fonctionne comme prévu, et le seul résultat dans votre cas serait probablement le package cl-asdf.noarch.Un coup d'œil rapide sur les rapports de bogues liés à yum yum semble avoir également d'autres inconvénients: https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
la source
Désolé, vous ne pouvez pas encore commenter, vous devez donc utiliser une réponse.
Avez-vous essayé
yum search cl-*
ouyum list 'cl-*'
? Au moins,yum whatprovides */foo
cela fonctionne pour la recherche de noms de fichiers, bien que ce soit un cas particulier. Sinon, j'utilise aussi souvent,yum list all | grep -i foo
mais méfiez-vous de la sortie multiligne de yum, grep pourrait ne montrer que la première ligne, alors peut-être utiliseryum list all | grep -iA1 foo
Vous trouverez également quelques exemples utiles dans la page de manuel ci-dessous "Options de liste". Une documentation supplémentaire est également disponible directement en amont sur http://yum.baseurl.org/ par exemple http://yum.baseurl.org/wiki/YumCommands ou peut-être directement via python: http://yum.baseurl.org/wiki/ YumCodeSnippet / YumSearch
la source
yum search cl-*
? - Oui je l'ai fait. Cela ne trouve rien (peut-être une version miam différente? J'utilise toujours le FC18).yum search
, le combiner avec des expressions régulières / caractères génériques est double redondant.yum search
fait déjà une recherche floue, donc l'utilisation de caractères génériques est assez inutile. Si vous souhaitez limiter votre recherche, utilisezyum list expression
ouyum list all | grep expression
. Sinon, je vous suggère d'ouvrir une demande d'amélioration contre miam - bonne chance avec ça: p