rpm, który zapewnia plik

11

Jakie jest polecenie, aby wyświetlić listę rpms, które mogą dostarczyć konkretny plik: rpm, który zapewnia pliki już zainstalowane lub rpms, który może dostarczyć pliki, które nie są zainstalowane?

David Nehme
źródło

Odpowiedzi:

10

W przypadku już zainstalowanych plików / pakietów:

[jb @ smokey ~] $ rpm -qf / etc / sudoers
sudo-1.6.9p13-8.fc9.x86_64

W przypadku niezainstalowanych plików i pakietów:

[jb @ smokey ~] $ mniam co zapewnia „/ etc / sudoers”
sudo-1.6.9p13-8.fc9.x86_64: Zezwala na ograniczony dostęp do konta root określonym użytkownikom
Repo: aktualizacje-nowy klucz
Dopasowane z:
Nazwa pliku: / etc / sudoers  

sudo-1.6.9p13-4.fc9.x86_64: Zezwala na ograniczony dostęp do konta root określonym użytkownikom
Repo: fedora
Dopasowane z:
Nazwa pliku: / etc / sudoers

sudo-1.6.9p13-8.fc9.x86_64: Zezwala na ograniczony dostęp do konta root określonym użytkownikom
Repo: zainstalowane
Dopasowane z:
Inne: Provides-match: / etc / sudoers

Zauważ, że „mniam to, co zapewnia” jest dopasowaniem do wzorca, więc jeśli nie masz pewności, gdzie szukany plik będzie istniał w strukturze katalogów, po prostu otaczaj go cudzysłowami i gwiazdkami:

mniam, co zapewnia „* foo *”

Podobnie, jeśli masz pewność, że szukasz pliku binarnego, możesz:

mniam, co zapewnia „* bin / foo”
kagenut
źródło
5

Nie wiem o plikach, które nie zostały jeszcze zainstalowane, ale w przypadku pliku, który jest już zainstalowany, możesz użyć rpm -qif:

rpm -qif / bin / ls
Nazwa: coreutils Relokacje: (nie można przenieść)
Wersja: 5.97 Producent: Red Hat, Inc.
Wydanie: 23.el5 Data kompilacji: Pn 13 lipca 2009 04:21:27 AM MDT
Data instalacji: Pt 11 września 2009 04:46:01 Host kompilacji MDT: hs20-bc1-7.build.redhat.com
Grupa: Środowisko systemowe / podstawowe źródło RPM: coreutils-5.97-23.el5.src.rpm
Rozmiar: 9053874 Licencja: GPLv2 +
Podpis: DSA / SHA1, Wt 28 lip 2009 03:42:40 AM MDT, Key ID 5326810137017186
Packager: Red Hat, Inc. 
URL:
Podsumowanie: Podstawowe narzędzia GNU: zestaw narzędzi powszechnie używanych w skryptach powłoki
Opis:
Są to podstawowe narzędzia GNU. Ten pakiet jest kombinacją
stare pakiety plików, sh-utils i textutils GNU.
Jeśli masz pobrane RPM, możesz zapytać, co chcesz zainstalować:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
ostrzeżenie: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Podpis DSA nagłówka V3: NOKEY, identyfikator klucza 37017186
Nazwa: jzlib Relokacje: (nie można przenieść)
Wersja: 1.0.7 Producent: Red Hat, Inc.
Wydanie: 4jpp.1 Data kompilacji: wt 08 sierpnia 2006 12:10:03 PM MDT
Data instalacji: (nie zainstalowano) Kompiluj hosta: hs20-bc1-6.build.redhat.com
Grupa: Programowanie / Biblioteki / Java Source RPM: jzlib-1.0.7-4jpp.1.src.rpm
Rozmiar: 280436 Licencja: w stylu BSD
Podpis: DSA / SHA1, czw. 18 sty 2007 08:49:50 AM MST, Key ID 5326810137017186
Packager: Red Hat, Inc. 
URL: 
Podsumowanie: Ponowna implementacja Zlib w JZlib w czystej Javie
Opis:
Zlib został zaprojektowany jako darmowy, uniwersalny, prawnie nieobciążony
- to znaczy nieobjęte żadnymi patentami - bezstratna kompresja danych
biblioteka do użytku na praktycznie każdym sprzęcie komputerowym i systemie operacyjnym.
Zlib został napisany przez Jean-loup Gailly (kompresja) i Mark Adler
(dekompresja).
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.db
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.so
/usr/share/doc/jzlib-1.0.7
/usr/share/doc/jzlib-1.0.7/LICENSE.txt
/usr/share/java/jzlib-1.0.7.jar
/usr/share/java/jzlib.jar
możesz pominąć „-i” w opcjach, jeśli nie chcesz zobaczyć wszystkich informacji o RPM.

Salparadise
źródło
2

W repozytoriach opartych na yumie możesz spróbować czegoś takiego yum provides */filename

Trey
źródło
1

afaik, nie jest to możliwe przy czystych obrotach na minutę. rpm zapewnia to tylko dla zainstalowanych pakietów z opcją --whatprovides.

kiedy możesz użyć yum, spróbuj yum provides <filename>wyszukać w repozytorium.

chrześcijanin
źródło
1

Jeśli nie chcesz (lub nie możesz) używać yum (np. Na komputerze offline), możesz przeszukiwać niezainstalowane RPM, wykonując

# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*

Może to zająć trochę czasu, więc bądź cierpliwy, wyszukując plik * .rpm w dużym repozytorium, na przykład na instalacyjnym dysku DVD. Ale w przeciwieństwie do „-qpl”, „-qp --filesbypkg” wyświetli zarówno plik, jak i RPM, do którego należy, na przykład:

# rpm -qpl p*.rpm|grep libpq.so.4
/usr/lib/libpq.so.4
/usr/lib64/libpq.so.4

# rpm -qp --filesbypkg p*.rpm|grep libpq.so.4
postgresql-libs          /usr/lib/libpq.so.4
postgresql-libs          /usr/lib64/libpq.so.4

w takim przypadku widoczny duplikat wynika z obecności pakietów i386 i x86_64 (co wynika z łańcucha „lib64”).

Tulio Silva
źródło
-3

Obawiam się, że nie jestem pewien, jak to zrobić z RPMS, ale z Debianem i Ubuntu możesz korzystać z programu apt-file

Rory
źródło