Устаревшие пакеты против осиротевших пакетов

18

В чем разница между устаревшими и потерянными пакетами? Более конкретно, почему deborphanпроизводит это:

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

... пока aptitude search '~o'выдает это:

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)

Бонусный вопрос: apt-get autoremoveеще больше отличается. Почему?

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.

В случае, если кто-то хочет знать, это вызвало обновление до 13.04.

Дэвид Кеннеди
источник
Я лично удалил их все, кроме старых ядер, потому что на моей машине новое ядро ​​немного
глючит

Ответы:

26

Короче говоря, устаревшие пакеты больше не находятся ни в одном хранилище в вашем списке. Потерянные пакеты - это автоматические зависимости, чьи «иждивенцы» были удалены. И apt-get autoremoveучитывает только потерянные пакеты, которые были установлены aptдля разрешения зависимостей.

Устаревшие пакеты

Как вы, вероятно, знаете, aptхранит список репозиториев, из которых он может получать пакеты. Но иногда пакеты удаляются из хранилища. Возможно, никто больше не заботится (не поддерживает) пакет, и (очень) последняя доступная последняя версия стала угрозой безопасности. Или, может быть, программа изменила свое имя, имена пакетов были изменены соответственно, и старые пакеты под старым именем были удалены. Существуют и другие возможные причины, по которым пакет также удаляется из хранилища.

Если пакет установлен в вашей системе, но больше не может быть найден ни в одном из репозиториев, которые aptесть в его списках, этот пакет считается «устаревшим».

Сиротские пакеты

Как вы, вероятно, также знаете, aptможет управлять зависимостями между пакетами. Скажем, например, программе «greatprogram» нужна библиотека «greatlibrary» для работы. Таким образом, пакет, содержащий greatlibrary, может быть помечен как автоматическая зависимость пакета, содержащего greatprogram. Вы не сможете установить пакет greatprogram, если greatlibrary уже не установлен (или будет установлен с той же командой).

Но что, если вы удалите greatprogram на более поздний день и оставите greatlibrary? В этом случае, когда-то, по крайней мере, один другой пакет нуждался в большой библиотеке как зависимость, но теперь ни один другой пакет больше не делает. Эти «оставленные» пакеты называются «осиротевшими».

apt-get autoremove

Еще один факт, который вы, вероятно, знаете, заключается в том, что он aptможет автоматически разрешать зависимости. Скажем, вы хотите установить ранее упомянутую greatprogram, но еще не установили greatlibrary. apt-get«замечает», что существует неудовлетворенная зависимость, и предлагает вам также установить отличную библиотеку.

apt-get autoremoveпредлагает вам удалить любые потерянные пакеты , которые были установлены таким образом, чтобы разрешить зависимость . Потерянные пакеты, которые были установлены другими способами, не находятся в списке автоматического удаления. Если, скажем, вы установили greatlibrary самостоятельно перед установкой greatprogram, а на более поздний день удалите greatprobory, greatlibrary все равно останется сиротой. Но autoremove не позаботится об этом, потому что он не был установлен автоматически в результате разрешенной зависимости.

Хеннинг Кокербек
источник
1
Спасибо за отличное объяснение. Любопытно, хотя: почему не deborphanулавливать все autoremoveделает? Я понимаю, почему это не работает наоборот.
Дэвид Кеннеди