Безпечно видаліть пакет у Gentoo


12

Я хотів видалити певний пакет у Gentoo та переглянув сторінку чоловіка, що виникла. Я знайшов --unmergeваріант:

УВАГА: Ця дія може видалити важливі пакети! Видаляє всі відповідні пакети. Це не робить перевірки залежностей, тому може видалити пакунки, необхідні для належної роботи вашої системи. Її аргументами можуть бути атоми або ebuilds. Для відомості про залежність від версії --unmerge використовуйте --depclean або --prune .

Однак я хотів би перевірити, чи потрібен пакет, який я хочу видалити, будь-яким іншим встановленим пакетом у системі. --depcleanі --pruneне надають цієї функціональності:

  • --depclean видаляє пакети, які були встановлені як залежності, але вони більше не потрібні
  • --prune "видаляє з вашої системи всю, крім найвищої встановленої версії пакета"

Чи не існує версії для перевірки залежності --unmerge?

Відповіді:


17

Я не думаю, що depcleanпрацює так, як ви описали. Без будь-яких аргументів це обходиться, але якщо ви передасте йому ім'я пакету, він працює як unmergeз додатковою перевіркою залежності. Від emerge(1):

Depclean слугує інформацією про залежність від залежності --unmerge. Якщо йому дано один або більше атомів, він зніме збігаються пакети, які не мають зворотних залежностей. Використовуйте --depcleanразом із, --verboseщоб показати зворотні залежності.

Я завжди використовую --depclean( -c) для зняття окремих пакетів; це чудово працює


6

gentoolkit приходить на допомогу:

equery d <atom>

Ви можете спочатку перевірити залежності, а потім приступити до видалення пакета після перевірки його залежностей.


5

Ще один спосіб досягти того ж результату (хоча це не команда, яка вимикає перевірку залежності):, emerge --deselect packageяка вилучає пакет із світового файлу. Тепер запуск emerge --depcleanбуде видалити цей пакет iff, якщо його не вимагає жоден інший пакет.


Чи означає це, що emerge --depcleanвидаляє всі пакунки, які були встановлені за допомогою emerge --oneshot(якщо ці пакети не потрібні пакету зі світу)?
Даніель Куллманн

@danielkullmann так. він обчислює весь графік залежності та видаляє те, що не витягнуто жодним пакетом у світі. Ви можете використовувати emerge --noreplace --selectдля додавання вже встановлених пакетів без їх перекомпіляції, btw.
njsg

1

Іноді emerge --unmergeдає це попередження:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Здається, що це рекомендований спосіб зробити перевірку залежності перед тим, як знімати пакет. Я все ще сподіваюся, що існує кращий, більш автоматизований спосіб досягти цього.

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