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?
apt
software-installation
dependencies
Peter Smit
źródło
źródło
Odpowiedzi:
Szybkim rozwiązaniem jest wprowadzenie następującego polecenia w terminalu:
lub jeśli interesuje Cię tylko ostateczna przyczyna:
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
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ęcznieinkscape
, co wymagalibgtkspell
, co wymagalibenchantic2a
, co wymagaaspell
”. (i
znaczniki wskazują zainstalowane pakiety;A
znaczniki wskazują automatycznie zainstalowane pakiety).Wreszcie następujące polecenie
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.źródło
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
):Zastąpić nazwą pakietu jesteś zainteresowany Na przykład, wpisując.
aptitude why libgoo-canvas-perl
Wyprowadza następujące:Zasadniczo oznacza to, że pakiet
shutter
w tym przypadku sugerujelibgoo-canvas-perl
instalację. Piszącaptitude 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
sugerujelibgoo-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ękishutter
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ę.
Spowoduje to wyświetlenie wiersza jak poniżej (3. wiersz wyniku):
Aby uzyskać więcej informacji, uruchom
info aptitude
(w terminalu) lub odwiedź stronę wiki AptitudeAby 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
źródło
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:
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”.
źródło
Oto prosty sposób, na którym nie można polegać
aptitude
, który 10.10 nie jest już domyślnie wysyłany.Graficznie
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.
Z terminala
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.)źródło
y/N
żądanie potwierdzenia, jeśli literówka-s
. Dodałem jednak ostrzeżenie.