Застарілі пакети проти осиротілих пакетів


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". Отже, пакет, що містить великубібліотеку, може бути позначений як автоматична залежність пакету, що містить великупрограму. Ви не зможете встановити пакет greatprogram, якщо вже не встановлена ​​велика бібліотека (або буде встановлено з тією ж командою).

Але що робити, якщо ви видалите велику програму пізніше і залишите великубібліотеку позаду? У цьому випадку колись хоча б один інший пакет потребував великої бібліотеки як залежність, але тепер жоден інший пакет більше не робить. Ті "залишені" пакети називаються "сиротами-пакетами".

apt-get autoremove

Ще один факт, який ви, мабуть, знаєте, - це те, що aptможе вирішити залежності автоматично для вас. Скажіть, ви хочете встановити раніше згадану велику програму, але ще не встановлена ​​велика бібліотека. apt-get"помічає", що існує незадоволена залежність, і пропонує вам також встановити велику бібліотеку.

apt-get autoremoveпропонує вам видалити всі осиротілі пакети , встановлені таким чином, щоб вирішити залежність . Сирочі пакети, встановлені іншими способами, не входять до списку авторемонтів. Якщо, скажімо, ви встановили велику бібліотеку самостійно перед тим, як встановити програму greatprogram, а пізніше вилучите програму greatprogram, велика бібліотека все одно осиротела. Але autoremove не подбав би про це, оскільки він не був встановлений автоматично в результаті вирішеної залежності.


1
Дякую за чудове пояснення. Цікаво, однак: чому б не deborphanвзяти на себе все autoremove? Я розумію, чому це не працює навпаки.
Девід Кеннеді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.