Jak mogę dowiedzieć się, z którego pakietu Debian pochodzi plik?
źródło
Jak mogę dowiedzieć się, z którego pakietu Debian pochodzi plik?
W Debianie istnieje kilka zastosowań, które wykonują to zadanie; sprawdź tę stronę, aby uzyskać opis. Wspomnę o dwóch z nich apt-file
i dlocate
.
apt-file
przeszukuje swoją wewnętrzną pamięć podręczną, dzięki czemu nie można zainstalować wszystkich pakietów, które chcesz przeszukać. Poniżej znajdziesz bardziej szczegółowy przewodnik.
dlocate
jest szybką alternatywą dla dpkg -L
(polecenia wyświetlającego zawartość pakietu) i dlatego przeszukuje tylko zainstalowane pakiety. Wyszukiwanie jest wykonywane przez dlocate -S file.name
.
Możesz także wyszukiwać pakiety online za pomocą serwera packages.debian.org ( sekcja Przeszukaj zawartość pakietów ).
apt-file
Warto najpierw zaktualizować:
sudo apt-get update
Zobacz po co apt-file
:
apt-cache show apt-file
Zainstaluj to:
sudo apt-get install apt-file
Odczytaj dane z repozytoriów (działa to również bez sudo
pamięci podręcznej użytkownika, ale tworzy pamięć podręczną użytkownika; sudo
pamięć podręczna obejmuje cały system):
sudo apt-file update
Wykonaj wyszukiwanie. W tym przykładzie chcemy wiedzieć, w którym pakiecie xrandr
wykonywalnym jest:
apt-file search xrandr
Wymienia wiele pakietów z unxrandr
, lxrandr.mo
lub source_lxrandr.py
. Niezbyt przydatne w naszym przypadku. Bardziej sprytne wyszukiwanie:
apt-file search -x /xrandr$
( $
oznacza koniec linii). Przykładowe dane wyjściowe:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
Pierwszy wynik nie wygląda na wykonywalny, drugi tak. Możemy zbadać dalej. Biegać:
apt-cache show x11-xserver-utils
Bingo! To jest pakiet.
Gdzie bash jest nazwą pakietu.
źródło
dpkg-query -S
ORAZ przesyła cię złą ścieżką instalacji opcjonalnych pakietów.Inna alternatywa:
Co najmniej na moim Ubuntu, oba wydają się być w
dpkg
pakiecie, więc nie ma żadnej realnej korzyści dla żadnego konkretnego ...źródło
Pliki wygenerowane podczas instalacji nie zostaną znalezione przez
dpkg -S
, jak wspomniano na stronie : https://askubuntu.com/a/667227/52975Na przykład
/bin/nc
pojawia się podczas instalowania pakietunetcat-openbsd
.Ale po:
dostajemy
dpkg-query: no path found matching pattern /bin/nc
.Dzieje się tak, ponieważ
/bin/nc
jest generowane przezupdate-alternatives
wywołanie w skrypcie postinst, które jest uruchamiane po instalacji.Działa to tak, bo kolejna wersja
/bin/nc
jest przeznetcat-traditional
pakiet.Nie sądzę, że istnieje ogólny sposób na znalezienie takich wygenerowanych plików. W konkretnym przypadku alternatywnych dowiązań symbolicznych możemy po prostu użyć linku za pomocą
readlink -f
:źródło
Nie znając Debiana, byłem zaskoczony, gdy spróbowałem:
Trochę dochodzenia i znalazłem pakiet:
źródło