Jaka jest różnica między przestarzałymi i osieroconymi pakietami? Mówiąc dokładniej, dlaczego to deborphan
powoduje:
dave@ubuntu:~$ deborphan
libbind9-80
libllvm3.1
libgrail5
libpython3.2
libsvga1
libarchive12
libdirectfb-1.2-9
gcalctool
liblwres80
libqpdf8
libkms1
libnux-3.0-0
... podczas gdy aptitude search '~o'
produkuje to:
dave@ubuntu:~$ aptitude search '~o'
idA libarchive12 - Multi-format archive and compression library (shared li
i libbind9-80 - BIND9 Shared Library used by BIND
i libdns81 - DNS Shared Library used by BIND
i libdrm-nouveau1a - Userspace interface to nouveau-specific kernel DRM serv
idA libgrail5 - Gesture Recognition And Instantiation Library
i libisc83 - ISC Shared Library used by BIND
i libisccc80 - Command Channel Library used by BIND
i libisccfg82 - Config File Handling Library used by BIND
i liblwres80 - Lightweight Resolver Library used by BIND
idA libnux-3.0-0 - Visual rendering toolkit for real-time applications - s
idA libnux-3.0-common - Visual rendering toolkit for real-time applications - c
idA libpython3.2 - Shared Python runtime library (version 3.2)
idA libqpdf8 - runtime library for PDF transformation/inspection softw
i libudev0 - udev library
i A linux-headers-3.5.0-27 - Header files related to Linux kernel version 3.5.0
i A linux-headers-3.5.0-27-generic - Linux kernel headers for version 3.5.0 on 32 bit x86 SM
i linux-image-3.5.0-27-generic - Linux kernel image for version 3.5.0 on 32 bit x86 SMP
i linux-image-extra-3.5.0-27-generic - Linux kernel image for version 3.5.0 on 32 bit x86 SMP
i python3.2 - Interactive high-level object-oriented language (versio
i python3.2-minimal - Minimal subset of the Python language (version 3.2)
Pytanie bonusowe: apt-get autoremove
jest jeszcze bardziej odmienne. Dlaczego?
dave@ubuntu:~$ sudo apt-get --purge autoremove
[sudo] password for dave:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
gksu* libarchive12* libdirectfb-1.2-9* libgksu2-0* libgnome-menu2* libgrail5* libllvm3.1*
libnux-3.0-0* libnux-3.0-common* libpython3.2* libqpdf8* libsvga1* libts-0.0-0* libx86-1*
mobile-broadband-provider-info* python-imaging* python-imaging-compat* python- oauth* tsconf*
0 upgraded, 0 newly installed, 19 to remove and 0 not upgraded.
After this operation, 33.8 MB disk space will be freed.
Do you want to continue [Y/n]? n
Abort.
Jeśli ktoś chce wiedzieć, to właśnie to spowodowało uaktualnienie do wersji 13.04.
Odpowiedzi:
Krótko mówiąc, przestarzałe pakiety nie są już w żadnym repozytorium na liście. Osierocone pakiety to automatyczne zależności, których „zależności” zostały odinstalowane. I
apt-get autoremove
bierze pod uwagę tylko osierocone pakiety, które zostały zainstalowane,apt
aby rozwiązać zależności.Przestarzałe pakiety
Jak zapewne wiesz,
apt
przechowuje listę repozytoriów, z których może pobierać pakiety. Ale czasami pakiety są usuwane z repozytorium. Może nikt już nie zajmuje się (nie utrzymuje) pakietem, a (bardzo) stara ostatnia dostępna wersja stała się zagrożeniem dla bezpieczeństwa. A może program zmienił nazwę, nazwy pakietów zostały odpowiednio zmienione, a stare pakiety pod starą nazwą zostały usunięte. Istnieją również inne możliwe powody, dla których pakiet jest usuwany z repozytorium.Jeśli pakiet jest zainstalowany w systemie, ale nie można go już znaleźć w żadnym repozytorium, które
apt
znajduje się na jego listach, pakiet ten jest uważany za „przestarzały”.Osierocone paczki
Jak zapewne wiesz,
apt
możesz zarządzać zależnościami między pakietami. Powiedzmy na przykład, że program zwany „greatprogram” potrzebuje do działania biblioteki o nazwie „greatlibrary”. Tak więc pakiet zawierający wielki bibliotekę można oznaczyć jako automatyczną zależność pakietu zawierającego wielki program. Nie będziesz mógł zainstalować pakietu greatprogram, chyba że greatlibrary jest już zainstalowany (lub zostanie zainstalowany z tą samą komendą).Ale co, jeśli odinstalujesz wielki program w późniejszym dniu i pozostawisz bibliotekę wielką za sobą? W takim przypadku raz co najmniej jeden inny pakiet wymagał wielkiej biblioteki jako zależności, ale teraz żaden inny pakiet już nie potrzebuje. Te „pozostawione” pakiety nazywane są „pakietami osieroconymi”.
apt-get autorove
Kolejnym faktem, który prawdopodobnie znasz, jest to, że
apt
może on automatycznie rozwiązać zależności. Powiedzmy, że chcesz zainstalować wspomniany wcześniej wielki program, ale nie masz jeszcze zainstalowanej biblioteki wielkich bibliotek.apt-get
„zauważa”, że istnieje niezadowolona zależność i oferuje również zainstalowanie biblioteki świetnej.apt-get autoremove
oferuje usunięcie wszelkich osieroconych pakietów , które zostały zainstalowane w ten sposób w celu rozwiązania zależności . Osierocone pakiety, które zostały zainstalowane w inny sposób, nie znajdują się na liście autorów. Jeśli, powiedzmy, sam zainstalowałeś wielki bibliotekę przed zainstalowaniem świetnego programu, a później odinstalujesz wielki program, biblioteka wielka nadal byłaby osierocona. Ale autorove nie zadbałby o to, ponieważ nie został zainstalowany automatycznie w wyniku rozwiązanej zależności.źródło
deborphan
wszystko odbieraautoremove
? Rozumiem, dlaczego to nie działa na odwrót.