mencari dengan YUM
Anda biasanya tidak menggunakan ekspresi reguler (gumpalan) ketika mencari dengan yum search
karena perintah search
sudah mencari sub-string dalam nama paket dan ringkasannya. Bagaimana saya tahu ini? Ada pesan yang memberi tahu Anda hal ini saat Anda menggunakan yum search
.
Hanya nama dan ringkasan yang cocok, gunakan "cari semua" untuk semuanya.
CATATAN: String [cl-*]
tersebut secara teknis gumpal di dalam shell Bash.
Jadi Anda biasanya mencari fragmen string yang Anda inginkan search
. Ekspresi reguler ikut bermain ketika Anda mencari paket tertentu. Ini adalah perintah YUM seperti list
dan install
.
Sebagai contoh:
$ 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
Satu-satunya peringatan Anda harus berhati-hati dengan regex / gumpalan, adalah jika ada file dalam shell Anda yang dinamai sedemikian sehingga mereka juga akan cocok cl-*
. Dalam kasus tersebut, shell Anda akan memperluas regex / glob sebelum dipresentasikan ke YUM.
Jadi alih-alih menjalankan yum list cl-*
Anda akan menjalankan perintah yum list cl-file
, jika ada file yang cocok dengan regex / glob cl-*
.
Sebagai contoh:
$ 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
Anda dapat mencegah hal ini terjadi dengan melarikan diri dari wildcard seperti:
$ 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
Jadi bagaimana dengan kurung
Saya menduga Anda memiliki file di direktori lokal Anda yang cocok ketika Anda digunakan [cl-*]
sebagai argumen yum search
. File-file ini setelah dicocokkan oleh shell, diteruskan ke yum search
perintah di mana cocok di mana kemudian ditemukan.
Sebagai contoh:
$ 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.
CATATAN: Pertandingan di atas cocok dengan nama file saya cl-file
,, dan bukan cl-*
seperti yang saya maksudkan.
cl-*
bukan ekspresi reguler, itu adalahglob
atau apa pun namanya. Ini adalah bahasa biasa (dalam istilah Chomskian), tetapi kami biasanya mengatakan bahwa sesuatu adalah ekspresi reguler jika ia mendefinisikan tata bahasa untuk bahasa biasa (dengan menggunakan setidaknya tiga operasi dasar: penggabungan, perubahan dan bintang Kleene).Versi yum yang sangat berbeda, menggunakan RHEL 6.5 di sini dengan yum 3.2.29 Hati-hati:
Anda harus mengutip * untuk tidak cocok dengan apa pun di direktori saat ini melalui shell globbing ... Untuk detail lebih lanjut tentang itu dan contoh praktis, lihat jawaban nanti: /unix//a/155157/83329
Anyways, hanya memeriksa lagi, satu-satunya cara untuk benar-benar mencari secara efektif dengan pencarian yum adalah dengan
yum search all | grep foo
sebagaiyum search foo
memberikan hasil yang cukup kabur. Tetapiyum list "foo-*"
berfungsi seperti yang diharapkan, dan hanya menghasilkan dalam kasus Anda mungkin akan menjadi paket cl-asdf.noarch.Melirik cepat terkait laporan bug yum terkait pencarian yum tampaknya juga memiliki kelemahan lain: https://bugs.launchpad.net/percona-server/+bug/580336/comments/2
sumber
Maaf belum dapat berkomentar jadi harus menggunakan jawaban.
Apakah kamu sudah mencoba
yum search cl-*
atau tidakyum list 'cl-*'
? Setidaknya untukyum whatprovides */foo
itu berfungsi untuk mencari nama file, meskipun itu sedikit kasus khusus. Kalau tidak, saya juga sering menggunakanyum list all | grep -i foo
tetapi hati-hati dengan output multiline dari yum, grep mungkin hanya menampilkan baris pertama, jadi mungkin gunakanyum list all | grep -iA1 foo
Ada juga beberapa contoh berguna di halaman manual di bawah "Opsi Daftar". Dokumentasi tambahan juga tersedia langsung di hulu di http://yum.baseurl.org/ misalnya http://yum.baseurl.org/wiki/YumCommands atau mungkin langsung melalui python: http://yum.baseurl.org/wiki/ YumCodeSnippet / YumSearch
sumber
yum search cl-*
? - ya saya lakukan. Ini tidak menemukan apa pun (mungkin versi yum yang berbeda? Saya masih menggunakan FC18).yum search
, menggabungkannya dengan ekspresi reguler / wildcard adalah double-redundant.yum search
sudah melakukan pencarian fuzzy, jadi menggunakan wildcard cukup berguna. Jika Anda ingin membatasi pencarian Anda, gunakanyum list expression
atauyum list all | grep expression
. Kalau tidak, saya sarankan Anda membuka permintaan tambahan terhadap yum - semoga sukses dengan itu: p