Qual é a diferença entre pacotes obsoletos e órfãos? Mais especificamente, por que deborphan
produz isso:
dave@ubuntu:~$ deborphan
libbind9-80
libllvm3.1
libgrail5
libpython3.2
libsvga1
libarchive12
libdirectfb-1.2-9
gcalctool
liblwres80
libqpdf8
libkms1
libnux-3.0-0
... enquanto aptitude search '~o'
produz isso:
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)
Pergunta bônus: apt-get autoremove
é ainda mais 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.
Caso alguém queira saber, a atualização para 13.04 foi o que levou isso.
Respostas:
Em resumo, pacotes obsoletos não estão mais em nenhum repositório da sua lista. Pacotes órfãos são dependências automáticas cujos "dependentes" foram todos desinstalados. E
apt-get autoremove
considera apenas pacotes órfãos que foram instalados porapt
para resolver dependências.Pacotes obsoletos
Como você provavelmente sabe,
apt
mantém uma lista de repositórios dos quais pode buscar pacotes. Mas, às vezes, os pacotes são removidos de um repositório. Talvez ninguém mais cuide (mantém) o pacote e a última versão (muito) antiga disponível se tornou um risco à segurança. Ou talvez o programa tenha mudado de nome, os nomes dos pacotes tenham sido alterados de acordo e os pacotes antigos com o nome antigo sejam removidos. Há outras razões possíveis pelas quais um pacote também é removido de um repositório.Se um pacote estiver instalado no seu sistema, mas não puder mais ser encontrado em nenhum dos repositórios existentes
apt
em suas listas, esse pacote será considerado "obsoleto".Pacotes órfãos
Como você provavelmente já sabe,
apt
pode gerenciar dependências entre pacotes. Digamos, por exemplo, que um programa chamado "greatprogram" precise de uma biblioteca chamada "greatlibrary" para funcionar. Portanto, o pacote que contém greatlibrary pode ser marcado como uma dependência automática do pacote que contém greatprogram. Você não poderá instalar o pacote greatprogram, a menos que a greatlibrary já esteja instalada (ou será instalada com o mesmo comando).Mas e se você desinstalar o greatprogram em um dia posterior e deixar a greatlibrary para trás? Nesse caso, uma vez que pelo menos um outro pacote precisava da greatlibrary como uma dependência, mas agora nenhum outro pacote o faz mais. Os pacotes "deixados para trás" são chamados de "pacotes órfãos".
apt-get autoremove
Outro fato que você provavelmente sabe é que
apt
pode resolver dependências automaticamente para você. Digamos que você queira instalar o programa excelente mencionado anteriormente, mas ainda não tem a biblioteca grande instalada.apt-get
"percebe" que há uma dependência insatisfeita e oferece a você a instalação de uma ótima biblioteca também.apt-get autoremove
oferece a você a remoção de quaisquer pacotes órfãos que foram instalados dessa maneira para resolver uma dependência . Pacotes órfãos que foram instalados de outras maneiras não estão na lista de remoção automática. Se, por exemplo, você instalou o greatlibrary antes de instalar o greatprogram e, posteriormente, desinstalar o greatprogram, o greatlibrary ainda ficará órfão. Mas a remoção automática não se encarregaria disso, porque não foi instalado automaticamente como resultado de uma dependência resolvida.fonte
deborphan
entender tudo o queautoremove
faz? Eu entendo por que não funciona ao contrário.