Proste pytanie: czy jest jakieś polecenie powłoki (lub metoda GUI), którego mogę użyć, biorąc pod uwagę ścieżkę do pliku w moim systemie, mówi mi, który pakiet go tam umieścił? Zakładając, że plik faktycznie pochodzi z pakietu, to znaczy.
Dodatkowe pytanie: co jeśli jest to plik, który nie jest zainstalowany w moim systemie? Czy istnieje, powiedzmy, strona internetowa, która pozwoli mi wyszukać plik i zobaczyć, jakie pakiety go dostarczają?
package-management
David Z
źródło
źródło
Provides:
mechanizmu. W niektórych bardziej szczegółowo, polecenie jakmailx
isendmail
nie zawiera jako binarny w każdym opakowaniu; zamiast tego różne pakiety instalują własne pliki binarne, a następnie udostępniają niektóre z nich pod nazwą „kanoniczną” za pośrednictwem/etc/alternatives
. Zobacz także askubuntu.com/questions/366135/…Odpowiedzi:
Możesz użyć
dpkg
polecenia, aby dowiedzieć się, który zainstalowany pakiet jest właścicielem pliku:Od
man dpkg
:Przykład:
Możesz wyszukiwać pełną ścieżką lub tylko nazwą pliku.
Jeśli chcesz wyszukać pliki, które nie zostały jeszcze zainstalowane na komputerze, możesz skorzystać z wyszukiwania pakietów Ubuntu
źródło
which
aby znaleźć program:dpkg -S `which firefox`
dlocate
może nie wykonać zadania, jeśli baza danych dlocate jest nieaktualna. Musisz zadzwonić,sudo update-dlocatedb
aby go zaktualizować.dpkg
dokładna ścieżka niczego nie zwraca (np.dpkg /usr/bin/java
), Wypróbuj tylko nazwę pliku wykonywalnego (npdpkg java
.).realpath
, aby rozwiązać dowiązania, tak:dpkg -S $(realpath $(which <command>))
.apt-file
Polecenie może zrobić dla ciebie z linii poleceń. Używam go często podczas budowania pakietów ze źródła. Dla plików dostarczanych przez pakiety, które są już zainstalowane w twoim systemie,apt-cache
jest inny wybór.Aby zainstalować
apt-file
:Następnie musisz zaktualizować bazę danych:
I na koniec wyszukaj plik:
Jednak znacznie łatwiejszym sposobem jest skorzystanie z witryny wyszukiwania pakietów Ubuntu . Mają opcję „przeszukiwania zawartości pakietów” w celu znalezienia określonej nazwy pliku.
źródło
apt-file
często znajduje fałszywe alarmy, tzn. pakiety, które nie są zainstalowane. Oczywiście ta odpowiedź jest świetna w przypadku „pytania bonusowego”.apt-file search <>
to najbliższy analogdnf/yum whatprovides <>
.apt-file find
jużapt-find
dawno temu i to naprawdę przydatne! Btw, najnowsze wersje wymagają rootowaniaapt-file update
.Istnieje również apt-file do wyszukiwania plików w niezainstalowanych pakietach. Na przykład:
źródło
Możesz przeszukiwać zawartość pakietów zawartych w różnych wydaniach Ubuntu na stronie Pakiety Ubuntu . Spójrz pod nagłówkiem „ Przeszukaj zawartość paczek ”.
Na przykład, oto wyniki wyszukiwania libnss3.so w lucid (10.04):
http://packages.ubuntu.com/search?searchon=contents&ke words=libnss3.so&mode=exactfilename&suite=lucid&arch=any
źródło
Masz na myśli, który pakiet, a nie jaką aplikację. Aplikacja jest Twoim menedżerem pakietów, np
Software Center
.Używanie
dpkg
:Przykład
Używanie
apt-file
:lub też możliwe:
Przykład
Lub online tutaj , w sekcji
Search the contents of packages
.Przykład
źródło
To rozszerzenie doskonałej odpowiedzi Alexx Roche . Próbowałem dokonać edycji tej odpowiedzi, ale została ona odrzucona (choć nie przez Alexx)
Próbowałem wyśledzić, co zainstalowałem
which
w moim systemie. Po małej pracy, którą stworzyłem/usr/local/bin/apt-whatprovides
Chociaż w większości zainstalowanych RZECZY możesz po prostu użyć:
W RZECZY, które nie są zainstalowane, możesz użyć:
apt-whatprovides
Skrypt działa dla plików, które nie są w systemie. Na przykład mój system niedig
miał, ale miałping
to, co spowodowało:Zauważ, że
Searching for
jest to pełna ścieżka dlaping
(zainstalowanej) i tylko nazwa binarna dladig
niezainstalowanej. To pomogło mi odkryć, że muszę zainstalowaćdnsutils
bez konieczności wyszukiwania w https://packages.ubuntu.com/#search_contentsźródło
Próbowałem wyśledzić, co zainstalowałem
which
w moim systemie. Po krótkiej pracy stworzyłem apt-whatprovidesChociaż w większości RZECZY możesz po prostu użyć
źródło
Jednym z powodów, dla których możesz to zrobić, jest to, że jeśli kompilujesz oprogramowanie, które już zawiera pakiet ubuntu, możesz uruchomić
apt-get build-dep $PACKAGENAME
. Spowoduje to zainstalowanie wszystkich pakietów, które musisz skompilować$PACKAGENAME
.źródło