Как удалить неиспользуемые пакеты MacPorts?

Всякий раз, когда я устанавливаю программу через MacPorts, она получает и устанавливает множество зависимостей. Когда я удаляю указанную программу, как я могу заставить MacPorts рекурсивно удалить с нее все неиспользуемые зависимости?

88 голосов | спросил hpy 13 MarpmSun, 13 Mar 2011 17:13:56 +03002011-03-13T17:13:56+03:0005 2011, 17:13:56

6 ответов


98

MacPorts 1.9.0 добавил sqlite portdbformat и MacPorts 2.0.0 удалил старый плоский . Формат DB порта sqlite является стандартным для новых установок; старые версии, которые были обновлены до 1.9.x, будут продолжать использовать формат flat 1 . Вы можете преобразовать систему 1.9.x flat в формат sqlite , обновив ее до MacPorts 2.0 или изменив значение portdbformat в /opt /local /etc /macports /macports.conf , а затем выдает команду port как root (например, sudo port installed ).

Одна из особенностей нового формата заключается в том, что он отслеживает «восстановленные» или «незавершенные» установки портов. Незапрашиваемый порт - это тот, который был установлен только потому, что от него зависит какой-то другой порт. Имя оставляет псевдо-порт расширяется до всех незарегистрированных портов, от которых не зависит другой установленный порт. Вы можете использовать это, чтобы «очистить» неиспользуемые порты, даже если вы изначально не удалили их с помощью sudo port uninstall --follow-dependencies portname (который будет делать то, что вы хотите, но только если вы помните использовать его каждый раз, когда вы удаляете что-то).


Перед удалением любого из них вы должны изучить существующие листы.

  порт эхо-листов
 

Некоторые общие листы ( automake , gperf , libtool , pkgconfig )) зависят от времени сборки порты, поэтому вы можете захотеть «перезагрузить» их ( sudo port setrequested port1 port2 port3 â € | ), чтобы избежать их удаления, просто чтобы переустановить их позже.

Вы можете легко удалить оставшиеся листы:

  удалить sudo port удалить
 

Примечание. Перед обрезкой листьев вы также можете удалить старые версии портов, которые больше не являются «активными». Это может показать еще несколько листов (то есть портов, которые являются зависимостями установленных портов, но неактивных):

  sudo port uninstall неактивен
 

Есть несколько разделов в Руководство по MacPorts , в котором также описывается процесс использования leaves для удаления ненужных портов.

ответил Chris Johnsen 14 MaramMon, 14 Mar 2011 09:13:07 +03002011-03-14T09:13:07+03:0009 2011, 09:13:07
8

В документах :

  

В действии удаления будет удалено   установленный порт.

     

%% sudo port uninstall vile Примечание

     

Чтобы также рекурсивно удалить   порты, от которых зависит данный порт,   используйте флаг â € 'â €' followâ € 'dependencies .   Это не приведет к удалению зависимостей   которые помечены как запрошенные или   имеют другие иждивенцы.

     

Чтобы рекурсивно удалить все порты   которые зависят от данного порта до   удалив сам порт, используйте    â € â, â € â € â, â € â, â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â â à â â â â â à â à      

Если порт является зависимостью другого   установленный порт, удаление не будет   удалите его, если вы не удалите   зависимый порт (ы). Переопределить   это поведение, используйте -f (force)   переключатель. Это, очевидно, нарушит   иждивенцы. Не форсировать удаление   порты, если вы не знаете, что вы   делает.

     

%% sudo port -f удалить vile

Обратите внимание на основную оговорку в последнем абзаце. Зависимости - это именно те зависимости, и разные приложения могут (будут) требовать одинаковые зависимости.

ответил Philip Regan 13 MarpmSun, 13 Mar 2011 19:07:31 +03002011-03-13T19:07:31+03:0007 2011, 19:07:31
3

Команда удаления порта и его иждивенцев:

  sudo port uninstall foo --follow-dependents
 

Однако, если порт, который вы удаляете, имеет иждивенцев, он не будет удален без флага -f (force).

Конечно, вы должны начать с чтения Руководства по MacPorts , в котором конкретно рассматривается Раздел руководства по удалению .

ответил Andrei Freeman 13 MarpmSun, 13 Mar 2011 19:06:43 +03002011-03-13T19:06:43+03:0007 2011, 19:06:43
3

Также есть сценарий в папке Contributor MacPorts с именем port_cutleaves, который вы можете запустить для удаления ненужных зависимостей: http: //trac.macports.org/browser/contrib/. Он спросит вас о каждом неуправляемом порту и позволяет сохранить некоторые, если хотите.

ответил Clemens Lang 30 J000000Monday12 2012, 02:54:28
1

Я думаю, что другие ответы и флаг - follow-dependents , не делают то, что вы хотите. Если вы устанавливаете A , а A требует B ), то благодаря замечательным системам управления пакетами B будет установленный для вас. Вы можете удалить B , а флаг - follow-dependents будет знать и удалять A . Но что, если вы удалите A , что более вероятно, потому что A - это то, что вы вручную установили в первую очередь? В этом случае B остается позади.

Если вы используете fink, пакет debfoster предназначен для очистки вашей системы и удаления неиспользуемых зависимостей .

  

Debfoster поможет вам избавиться от   пакеты (например, библиотеки)   остался в вашей системе, когда   программа, которая потребовала, чтобы она была удалена   или обновлен до версии, которая не   имеют зависимость.

В то время как debfoster не работает для MacPorts, появляются порты debfoster , например, portsfoster , хотя, похоже, это прекращено ...

Возможно, в настоящее время не существует решения для MacPorts.

ответил 13 MarpmSun, 13 Mar 2011 19:23:35 +03002011-03-13T19:23:35+03:0007 2011, 19:23:35
1

Я написал несколько сценариев для автоматизации очистки портов: https://github.com/vasi/macports- инструменты

Сценарий «macportsfoster» выведет список всех портов, которые не требуются ни в чем в запрошенном списке, заказаны так, что «дезактивировать порт $ (macportsfoster)» удалит все из них за один снимок.

ответил vasi 11 Mayam12 2012, 05:26:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132