Packages obsolètes vs packages orphelins

17

Quelle est la différence entre les packages obsolètes et orphelins? Plus précisément, pourquoi cela deborphanproduit-il:

dave@ubuntu:~$ deborphan
libbind9-80
libllvm3.1
libgrail5
libpython3.2
libsvga1
libarchive12
libdirectfb-1.2-9
gcalctool
liblwres80
libqpdf8
libkms1
libnux-3.0-0

... tandis que aptitude search '~o'produit ceci:

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)

Question bonus: apt-get autoremoveest encore plus différente. Pourquoi?

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.

Au cas où quelqu'un voudrait le savoir, la mise à niveau vers 13.04 est ce qui a provoqué cela.

David Kennedy
la source
personnellement, je les ai tous supprimés sauf les anciens noyaux car avec ma machine, le nouveau noyau est un peu
bogué

Réponses:

25

Pour faire court, les packages obsolètes ne figurent plus dans aucun référentiel de votre liste. Les packages orphelins sont des dépendances automatiques dont les "dépendants" ont tous été désinstallés. Et apt-get autoremovene prend en compte que les packages orphelins installés par aptpour résoudre les dépendances.

Forfaits obsolètes

Comme vous le savez probablement, aptconserve une liste des référentiels à partir desquels il peut récupérer des packages. Mais parfois, les packages sont supprimés d'un référentiel. Peut-être que plus personne ne s'occupe (ne maintient) le paquet, et la (très) ancienne dernière version disponible est devenue un risque pour la sécurité. Ou peut-être que le programme a changé son nom, les noms des packages ont été modifiés en conséquence et les anciens packages sous l'ancien nom sont supprimés. Il existe d'autres raisons possibles pour lesquelles un package est également supprimé d'un référentiel.

Si un package est installé sur votre système, mais ne peut plus être trouvé dans aucun des référentiels que vous avez aptsur ses listes, ce package est considéré comme "obsolète".

Forfaits orphelins

Comme vous le savez probablement aussi, aptpeut gérer les dépendances entre les packages. Supposons par exemple qu'un programme appelé "greatprogram" ait besoin d'une bibliothèque appelée "greatlibrary" pour fonctionner. Ainsi, le package contenant greatlibrary peut être marqué comme une dépendance automatique du package contenant greatprogram. Vous ne pourrez pas installer le package greatprogram, sauf si greatlibrary est déjà installé (ou sera installé avec la même commande).

Mais que se passe-t-il si vous désinstallez greatprogram un jour plus tard et laissez greatlibrary derrière? Dans ce cas, une fois au moins un autre paquet avait besoin d'une grande bibliothèque comme dépendance, mais maintenant aucun autre paquet ne fait plus. Ces packages "laissés pour compte" sont appelés "packages orphelins".

apt-get autoremove

Encore un autre fait que vous savez probablement, c'est qu'il aptpeut résoudre automatiquement les dépendances pour vous. Supposons que vous souhaitiez installer le grand programme mentionné ci-dessus, mais que la grande bibliothèque ne soit pas encore installée. apt-get"remarque" qu'il existe une dépendance non satisfaite et vous propose également d'installer greatlibrary.

apt-get autoremovevous propose de supprimer tous les packages orphelins qui ont été installés de cette façon pour résoudre une dépendance . Les packages orphelins qui ont été installés par d'autres moyens ne figurent pas dans la liste de suppression automatique. Si, par exemple, vous avez installé greatlibrary vous-même avant d'installer greatprogram, et que vous désinstallez ultérieurement greatprogram, greatlibrary serait toujours orphelin. Mais autoremove ne s'en occuperait pas, car il n'a pas été installé automatiquement en raison d'une dépendance résolue.

Henning Kockerbeck
la source
1
Merci pour l'excellente explication. Curieux cependant: pourquoi ne pas tout deborphanreprendre autoremove? Je comprends pourquoi cela ne fonctionne pas dans l'autre sens.
David Kennedy