Suche mit YUM
Bei der Suche mit verwenden Sie im Allgemeinen keine regulären Ausdrücke (Globs), yum search
da der Befehl search
bereits nach Unterzeichenfolgen in den Paketnamen und deren Zusammenfassungen sucht. Woher weiß ich das? Es gibt eine Meldung, die Ihnen dies bei der Verwendung mitteilt yum search
.
Nur Name und Zusammenfassung stimmen überein, verwenden Sie "Alle durchsuchen" für alles.
HINWEIS: Die Zeichenfolge [cl-*]
ist technisch gesehen ein Glob in der Bash-Shell.
Sie suchen also im Allgemeinen nach Zeichenfolgenfragmenten, mit denen Sie arbeiten möchten search
. Die regulären Ausdrücke kommen ins Spiel, wenn Sie nach bestimmten Paketen suchen. Dies sind die YUM-Befehle wie list
und install
.
Beispielsweise:
$ 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
Die einzige Einschränkung, die Sie bei regulären Ausdrücken / Globs beachten müssen, ist, wenn sich in Ihrer Shell Dateien befinden, die so benannt sind, dass auch sie übereinstimmen cl-*
. In diesen Fällen erweitert Ihre Shell den regulären Ausdruck / Glob, bevor er YUM präsentiert wird.
Anstatt also auszuführen, führen yum list cl-*
Sie den Befehl aus yum list cl-file
, wenn eine Datei vorhanden ist, die dem regulären Ausdruck / Glob entspricht cl-*
.
Beispielsweise:
$ 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
Sie können sich davor schützen, indem Sie dem Platzhalter folgendermaßen entkommen:
$ 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
Was ist also mit den Klammern?
Ich vermute, Sie haben Dateien in Ihrem lokalen Verzeichnis, die übereinstimmen, wenn Sie [cl-*]
als Argument für verwenden yum search
. Diese Dateien wurden nach dem Abgleich durch die Shell an den yum search
Befehl übergeben, wo Übereinstimmungen gefunden wurden.
Beispielsweise:
$ 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.
HINWEIS: Die obige Übereinstimmung wurde mit dem Namen meiner Datei abgeglichen cl-file
und nicht mit der cl-*
von mir beabsichtigten.
cl-*
ist jedoch kein regulärer Ausdruck, sondern einglob
oder wie auch immer er heißt. Es ist eine reguläre Sprache (in chomskischen Begriffen), aber wir sagen normalerweise, dass etwas ein regulärer Ausdruck ist, wenn es eine Grammatik für die reguläre Sprache definiert (indem mindestens drei grundlegende Operationen verwendet werden: Verkettung, Änderung und Kleene-Stern).Definitiv andere yum-Version, die RHEL 6.5 hier mit yum 3.2.29 verwendet. Achtung:
Sie sollten das * angeben, um über Shell-Globbing nichts im aktuellen Verzeichnis zu finden ... Weitere Details dazu und ein praktisches Beispiel finden Sie in der späteren Antwort: /unix//a/155157/83329
Sowieso hätte gerade überprüft wieder, den einzigen Weg , wirklich effektiv zu suchen , mit yum Suche nach ist
yum search all | grep foo
soyum search foo
ziemlich unscharfe Ergebnisse. Funktioniert aberyum list "foo-*"
wie erwartet und führt in Ihrem Fall wahrscheinlich nur zum Paket cl-asdf.noarch.Ein kurzer Blick auf verwandte yum-Fehlerberichte yum search scheint auch andere Nachteile zu haben: https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
quelle
Leider kann noch kein Kommentar abgegeben werden, daher muss eine Antwort verwendet werden.
Hast du es versucht
yum search cl-*
oderyum list 'cl-*'
? Zumindestyum whatprovides */foo
funktioniert es für die Suche nach Dateinamen, obwohl dies ein Sonderfall ist. Ansonsten benutze ich auch oft,yum list all | grep -i foo
aber hüte dich vor der mehrzeiligen Ausgabe von yum, grep zeigt möglicherweise nur die erste Zeile an, also benutze sie vielleichtyum list all | grep -iA1 foo
Es gibt auch einige nützliche Beispiele in der Manpage unter "Listenoptionen". Zusätzliche Dokumentation ist auch direkt vorgelagert unter http://yum.baseurl.org/ verfügbar, z. B. http://yum.baseurl.org/wiki/YumCommands oder direkt über Python: http://yum.baseurl.org/wiki/ YumCodeSnippet / YumSearch
quelle
yum search cl-*
? - Ja, habe ich. Dies findet nichts (vielleicht andere yum Version? Ich benutze immer noch FC18).yum search
ist die Kombination mit regulären Ausdrücken / Platzhaltern doppelt redundant.yum search
führt bereits eine Fuzzy-Suche durch, daher ist die Verwendung von Platzhaltern ziemlich nutzlos. Wenn Sie Ihre Suche einschränken möchten, verwenden Sieyum list expression
oderyum list all | grep expression
. Ansonsten schlage ich vor, dass Sie eine Verbesserungsanfrage gegen yum eröffnen - viel Glück damit: p