Чи можу я дізнатись про конкретний пакет, чому він встановлений?
Отже, чи можу я бачити, чи це встановлено вручну, або що він встановлений як залежність іншого пакета? Або що він встановлений як частина дистрибутива?
Чи можу я дізнатись про конкретний пакет, чому він встановлений?
Отже, чи можу я бачити, чи це встановлено вручну, або що він встановлений як залежність іншого пакета? Або що він встановлений як частина дистрибутива?
Відповіді:
Швидке рішення - це ввести таку команду в термінал:
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. Однак я додав попередження.