Чи можу я дізнатись про конкретний пакет, чому він встановлений?
Отже, чи можу я бачити, чи це встановлено вручну, або що він встановлений як залежність іншого пакета? Або що він встановлений як частина дистрибутива?
Чи можу я дізнатись про конкретний пакет, чому він встановлений?
Отже, чи можу я бачити, чи це встановлено вручну, або що він встановлений як залежність іншого пакета? Або що він встановлений як частина дистрибутива?
Відповіді:
Швидке рішення - це ввести таку команду в термінал:
aptitude why $package
або, якщо вас цікавить лише кінцева причина:
aptitude why $package --show-summary
Замініть $ package на ім'я пакета, і вам може знадобитися спочатку встановити aptitude
пакет.
Ось вихід, який ви можете отримати aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
Більш детально ви біжите aptitude why aspell
. Ви можете прочитати приклад виводу нижче: "Ви встановили вручну inkscape
, що вимагає libgtkspell
, що вимагає libenchantic2a
, що вимагає aspell
". ( i
маркери вказують на встановлені пакети; A
маркери вказують автоматично встановлені пакети.)
i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
Нарешті, наступна команда
apt-cache rdepends --installed $package
перелічує інші пакунки, встановлені на вашому комп’ютері, що безпосередньо залежать від $ package . Ви можете додати --recurse
опцію, щоб перелічити всі пакунки, які безпосередньо або опосередковано залежать від неї.
apt-cache rdepends --recurse $package
ймовірно, дає занадто багато пакетів. Я б додав --installed
варіант обмеження встановлених пакетів. -i
опція обмежується пакетами, пов'язаними з попередньою залежністю та залежністю. Але пакет може бути встановлений, оскільки його рекомендує інший пакет. Щоб включити такі пакунки, пов’язані з рекомендаціями, я думаю, це дасть правильні:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Швидке та коротке міркування про те, чому встановлено певний пакет, можна дізнатись, ввівши в терміналі ( Applications -> Accessories -> Terminal
) наступну команду :
aptitude why <package-name>
Замініть назви пакета, який вас цікавить. Наприклад, набравши aptitude why libgoo-canvas-perl
результати:
i shutter Suggests libgoo-canvas-perl
Це в основному означає, що пакет shutter
в цьому випадку запропонував libgoo-canvas-perl
встановити. Набравши тоді aptitude why shutter
я можу піти по ланцюгу залежностей.
Однак є застереження. Я часто помічаю, що здібність знаходить найбільш правдоподібне пояснення ситуації, яка може не бути фактичним випадком, але все-таки дасть вам підказку для подальшого пошуку.
У моєму випадку shutter
пропонує libgoo-canvas-perl
- однак пропоновані пакети не встановлюються автоматично за замовчуванням. Тим не менш, це пробуджує мою пам'ять про "досвід", оскільки я не можу редагувати скріншоти, за допомогою shutter
яких я могла встановити вручнуligbgoo-canvas-perl
Нарешті, ви можете дізнатись, чи встановлено пакет автоматично (тобто рішення системи управління пакунками було визначено як обов'язкове для перегляду залежностей та рекомендацій інших пакетів, які ви попросили встановити), виконавши наступну команду.
aptitude show <package-name>
Це виведе рядок, як показано нижче (3-й рядок виводу):
Automatically installed: no
Для отримання додаткової інформації запустіть info aptitude
(у терміналі) або відвідайте сторінку вікі Aptitude
Щоб дізнатися, коли встановлено певний пакет, є два варіанти:
Install
(майте на увазі випадок), щоб перелічити всі записи щодо встановлення. Однак це покаже лише пакети, встановлені за допомогою SynapticВиконайте наступну команду в терміналі. Це буде шукати журнали dpkg для записів історії встановлення. Однак існує максимальний обмеження кількості збережених журналів, тому якщо шуканий пакет був встановлений давно, ви його не знайдете. Детальніше тут
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Так, ви можете, і насправді це досить очевидна команда. Якщо припустимо, що встановлено придатність, ви можете відкрити тип оголошення у вікні терміналу:
aptitude why package
Це повинно дати список пакетів, які залежать від конкретного пакету. Якщо це встановлений пакет вручну, він скаже щось на кшталт "Не вдалося знайти причину для встановлення пакета".
Ось простий спосіб, на який не покладаються, на aptitude
який 10.10 більше не постачається за замовчуванням.
Відкрийте Synaptic і спробуйте його видалити.
Якщо з'явиться діалогове вікно з проханням видалити інші пакети, це ті пакунки, які (рекурсивно) залежать від нього.
apt-get remove package_name_goes_here -s
Знову ж таки, пакети, які були б вилучені в результаті, - це всі ті, які (рекурсивно) залежать від цього. ( -s
Параметр говорить apt-get
фактично не видаляти пакет.)
y/N
запит на підтвердження, якщо ви введете помилку -s
. Однак я додав попередження.