¿Cuál es la diferencia entre paquetes obsoletos y huérfanos? Más específicamente, por qué deborphan
produce esto:
dave@ubuntu:~$ deborphan
libbind9-80
libllvm3.1
libgrail5
libpython3.2
libsvga1
libarchive12
libdirectfb-1.2-9
gcalctool
liblwres80
libqpdf8
libkms1
libnux-3.0-0
... mientras aptitude search '~o'
produce esto:
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)
Pregunta extra: apt-get autoremove
es aún más diferente. ¿Por qué?
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.
En caso de que alguien quiera saber, la actualización a 13.04 es lo que provocó esto.
Respuestas:
Para abreviar, los paquetes obsoletos ya no están en ningún repositorio en su lista. Los paquetes huérfanos son dependencias automáticas cuyos "dependientes" han sido desinstalados. Y
apt-get autoremove
solo considera los paquetes huérfanos que fueron instaladosapt
para resolver dependencias.Paquetes obsoletos
Como probablemente sepa,
apt
mantiene una lista de repositorios de los que puede obtener paquetes. Pero a veces, los paquetes se eliminan de un repositorio. Tal vez ya nadie se haga cargo (mantenga) el paquete, y la última versión (muy) antigua disponible se ha convertido en un riesgo de seguridad. O tal vez el programa ha cambiado su nombre, los nombres de los paquetes se cambiaron en consecuencia y los paquetes antiguos con el nombre anterior se eliminan. También hay otras razones posibles por las que un paquete se elimina de un repositorio.Si un paquete está instalado en su sistema, pero ya no se puede encontrar en ninguno de los repositorios que
apt
tiene en sus listas, ese paquete se considera "obsoleto".Paquetes huérfanos
Como probablemente también sepa,
apt
puede administrar dependencias entre paquetes. Digamos, por ejemplo, que un programa llamado "greatprogram" necesita una biblioteca llamada "greatlibrary" para funcionar. Por lo tanto, el paquete que contiene greatlibrary se puede marcar como una dependencia automática del paquete que contiene greatprogram. No podrá instalar el paquete greatprogram, a menos que greatlibrary ya esté instalado (o se instalará con el mismo comando).Pero, ¿qué sucede si desinstala greatprogram en un día posterior y deja la biblioteca grande? En ese caso, una vez al menos otro paquete necesitaba una gran biblioteca como dependencia, pero ahora ningún otro paquete lo necesita más. Los paquetes "dejados atrás" se llaman "paquetes huérfanos".
apt-get autoremove
Otro hecho que probablemente conozca es que
apt
puede resolver las dependencias automáticamente por usted. Supongamos que desea instalar el gran programa antes mencionado, pero todavía no tiene la gran biblioteca instalada.apt-get
"se da cuenta" de que hay una dependencia insatisfecha y también le ofrece instalar greatlibrary.apt-get autoremove
le ofrece eliminar cualquier paquete huérfano que se haya instalado de esta manera para resolver una dependencia . Los paquetes huérfanos que se han instalado de otras maneras no se encuentran en la lista de autoremove. Si, por ejemplo, instaló greatlibrary usted mismo antes de instalar greatprogram, y en un día posterior desinstale greatprogram, greatlibrary aún quedaría huérfano. Pero autoremove no se ocuparía de eso, porque no se ha instalado automáticamente como resultado de una dependencia resuelta.fuente
deborphan
retomar todo lo queautoremove
hace? Entiendo por qué no funciona al revés.