Czy w przypadku konkretnego pakietu mogę dowiedzieć się, dlaczego został zainstalowany?
Czy mogę zobaczyć, czy jest instalowany ręcznie, czy też jest instalowany jako zależność od innego pakietu? A może jest zainstalowany jako część dystrybucji?
Czy w przypadku konkretnego pakietu mogę dowiedzieć się, dlaczego został zainstalowany?
Czy mogę zobaczyć, czy jest instalowany ręcznie, czy też jest instalowany jako zależność od innego pakietu? A może jest zainstalowany jako część dystrybucji?
Odpowiedzi:
Szybkim rozwiązaniem jest wprowadzenie następującego polecenia w terminalu:
aptitude why $package
lub jeśli interesuje Cię tylko ostateczna przyczyna:
aptitude why $package --show-summary
Zamień pakiet $ na nazwę pakietu i może być konieczne wcześniejsze zainstalowanie aptitude
pakietu.
Oto wyjście, które możesz uzyskać aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
Aby uzyskać więcej szczegółów, uruchomiłbyś aptitude why aspell
. Przykładowy wynik możesz przeczytać w następujący sposób: „Zainstalowałeś ręcznie inkscape
, co wymaga libgtkspell
, co wymaga libenchantic2a
, co wymaga aspell
”. ( i
znaczniki wskazują zainstalowane pakiety; A
znaczniki wskazują automatycznie zainstalowane pakiety).
i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
Wreszcie następujące polecenie
apt-cache rdepends --installed $package
wyświetla listę innych pakietów zainstalowanych na twoim komputerze, które zależą bezpośrednio od pakietu $ . Możesz dodać --recurse
opcję, aby wyświetlić listę wszystkich pakietów, które zależą bezpośrednio lub pośrednio od niego.
apt-cache rdepends --recurse $package
prawdopodobnie daje zbyt wiele pakietów. Dodałbym --installed
opcję ograniczenia do zainstalowanych pakietów. -i
opcja ogranicza się do pakietów poprzedzających i powiązanych. Ale pakiet może zostać zainstalowany, ponieważ jest zalecany przez inny pakiet. Uwzględnienie takich pakietów związanych z rekomendacjami, przypuszczam, że dałoby to właściwe:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Szybkie i krótkie uzasadnienie, dlaczego dany pakiet został zainstalowany, można znaleźć, wpisując następujące polecenie w terminalu ( Applications -> Accessories -> Terminal
):
aptitude why <package-name>
Zastąpić nazwą pakietu jesteś zainteresowany Na przykład, wpisując. aptitude why libgoo-canvas-perl
Wyprowadza następujące:
i shutter Suggests libgoo-canvas-perl
Zasadniczo oznacza to, że pakiet shutter
w tym przypadku sugeruje libgoo-canvas-perl
instalację. Pisząc aptitude why shutter
, mogę przejść do łańcucha zależności.
Istnieje jednak zastrzeżenie. Często zauważam, że uzdolnienia znajdują najbardziej prawdopodobne wytłumaczenie dla sytuacji, która może nie być rzeczywistą sprawą, ale mimo to da ci wskazówkę, by szukać dalej.
W moim przypadku shutter
sugeruje libgoo-canvas-perl
- jednak sugerowane pakiety nie są domyślnie instalowane automatycznie. Niemniej jednak, wspomina to „doświadczenie”, ponieważ nie mogę edytować zrzutów ekranu, dzięki shutter
którym ręcznie instalowałemligbgoo-canvas-perl
Na koniec możesz dowiedzieć się, czy pakiet został zainstalowany automatycznie (co oznacza, że system zarządzania pakietami decyduje o tym, że jest to obowiązkowe, biorąc pod uwagę zależności i rekomendacje innych pakietów, których zainstalowanie poprosiłeś), uruchamiając następującą komendę.
aptitude show <package-name>
Spowoduje to wyświetlenie wiersza jak poniżej (3. wiersz wyniku):
Automatically installed: no
Aby uzyskać więcej informacji, uruchom info aptitude
(w terminalu) lub odwiedź stronę wiki Aptitude
Aby dowiedzieć się, kiedy konkretny pakiet został zainstalowany, istnieją 2 opcje:
Install
(uwaga na przypadek), aby wyświetlić wszystkie wpisy dotyczące instalacji. Jednak pokaże to tylko pakiety zainstalowane przy użyciu SynapticUruchom następujące polecenie w terminalu. Spowoduje to przeszukanie dzienników dpkg w poszukiwaniu wpisów historii instalacji. Istnieje jednak maksymalny limit ilości przechowywanych dzienników, więc jeśli pakiet, którego szukasz, został zainstalowany dawno temu, możesz go nie znaleźć. Więcej informacji tutaj
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Tak, możesz i jest to dość oczywiste polecenie. Zakładając, że masz zainstalowane aptitude, możesz otworzyć typ reklamy okna terminala:
aptitude why package
To powinno dać listę pakietów, które zależą od tego konkretnego pakietu. Jeśli jest to ręcznie zainstalowany pakiet, powie coś w stylu „Nie można znaleźć powodu, aby zainstalować pakiet”.
Oto prosty sposób, na którym nie można polegać aptitude
, który 10.10 nie jest już domyślnie wysyłany.
Otwórz Synaptic i spróbuj go usunąć.
Jeśli pojawi się okno dialogowe z prośbą o usunięcie innych pakietów, są to pakiety, które (rekurencyjnie) zależą od niego.
apt-get remove package_name_goes_here -s
Ponownie, pakiety, które zostałyby usunięte, to wszystkie te, które (rekurencyjnie) zależą od tego. ( -s
Parametr mówi, apt-get
aby nie usuwać pakietu.)
y/N
żądanie potwierdzenia, jeśli literówka -s
. Dodałem jednak ostrzeżenie.