Bagaimana menemukan paket mana yang dimiliki oleh perintah tertentu pada CentOS?

19

Sebagai contoh saya dapat dengan mudah menemukan perintah loc milik paket mlocate.i386.

yum search locate
mlocate.i386 : An utility for finding files by name
[mirror@home /]$ rpm -qa | grep locate
mlocate-0.15-1.el5.1

yum search updatedb
Loaded plugins: fastestmirror, protectbase
0 packages excluded due to repository protections
=========================================== Matched: updatedb ===========================================
mlocate.i386 : An utility for finding files by name

Tetapi tidak mudah untuk menemukan perintah bebas paket mana yang menjadi milik:

yum search free   // this command just returns too much informationy 
rpm -qa | grep free
freetype-2.2.1-31.el5_8.1   // obviously not the package by which free command is installed

Jadi, apakah ada cara meyakinkan untuk mengetahui paket mana yang dimiliki oleh perintah tertentu di Linux? Misalnya CentOS atau distribusi lainnya

hugemeow
sumber

Jawaban:

17

Minta rpmdb.

rpm -qf $(which free)
Ignacio Vazquez-Abrams
sumber
mengapa tidak menggunakan rpm -qf which free?
hugemeow
Baik baik saja. $(...)adalah kebiasaan bagi saya.
Ignacio Vazquez-Abrams
Cara pipawhich free | xargs rpm -qf
Eido95
24

Contoh Ubuntu / Debian untuk memeriksa paket freeperintah:

dpkg -S $(which free)
Jeroen Vermeulen - MageHost
sumber
ini hanya berfungsi untuk paket yang diinstal. saya menemukan sesuatu di sini yang berfungsi untuk paket yang tidak diinstal$ dpkg -S */free$*
bobrobbob
@obobbob Saya khawatir itu tidak benar. Saya diuji dengan dpkg -S */firefox$*yang memberikan beberapa hasil pada server yang telah menginstal Firefox, tidak ada pada server tanpa Firefox. Saya pikir itu tidak bisa berfungsi karena dpkgada perintah yang beroperasi pada paket yang diinstal secara lokal. Untuk menemukan paket yang tidak terinstal, Anda dapat pergi ke packages.ubuntu.com/...
Jeroen Vermeulen - MageHost
Astaga. Anda benar, maaf untuk itu
bobrobbob
1
Jika Anda mendapatkan dpkg-query: ada jalan ditemukan yang cocok dengan pola coba ini : dpkg -S "$(readlink -fn "$(which free)")".
Pablo A
7

Untuk CentOS, bagaimana kalau yum menyediakan?

Menggunakan

which free 

untuk mencari tahu di mana letaknya

Bagi saya itu di

/ usr / bin / gratis

Jadi kamu bisa berlari

yum provides /usr/bin/free

dan itu akan memberi tahu Anda paket mana yang memilikinya

Menandai
sumber
Jika the commandtidak diinstal atau tersedia di centos Anda, Anda bisa menggunakan yum provides <command>, karena which <command>akan kembalinot <command> in ...
Lane Ouyang
1

Untuk semua distribusi berbasis red-hat Anda dapat menggunakan utilitas manajemen paket yum

yum provides `which free`

menyediakan argumen menentukan paket mana yang menyediakan fitur atau file tertentu.

LoveWithMaths
sumber