При компиляции какого-то порта я понял, что он зависит от 1000+ других портов и будет устанавливаться вечно, пока я не умру или мой диск не заполнится (мой жесткий диск действительно мал).
Я прервал make install clean
.
Как я uninstall
и clean
те зависимости, которые уже построены и установлены? (их не менее 100+)
pkg_cutleaves
в этом случае работать не будет, так как основной порт еще не зарегистрирован.
Пожалуйста помоги.
FreeBSD 9.0-ВЫПУСК amd64
РЕДАКТИРОВАТЬ: Другой способ задать этот вопрос: как я могу увидеть все зависимости для незарегистрированного порта и все подзависимости для этих зависимостей, независимо от ранее установленных портов или их [под] зависимостей?
В следующий раз беги make all-depends-list
перед вы начинаете строить порт.
Если вам не нравится то, что вы видите в списке, не идите дальше.
Этот и другие жемчужины можно найти в /usr/ports/Mk/bsd.port.mk
. Но не для дружеского чтения.
Вы слегка облажались с точки зрения наведения порядка.
У вас действительно есть два варианта, о которых я могу думать:
Опция 1 - Запустите команду выше, выясните, что вам не нужно, и удалите его.
Это, наверное, наименее болезненный вариант.
Вариант 2 - бегать pkg_info -aR
и ищите пакеты без зависимостей.
Определите, какие из них вам не нужны, и удалите их.
(Это хорошая практика ведения домашнего хозяйства каждый год или около того, ИМХО, но это раздражает.)
С точки зрения очистки от строительного детрита простой make clean
в каталоге порта-нарушителя должна вызвать очистку зависимостей. Вы также можете сделать make clean
в /usr/ports
, но, вероятно, быстрее сдувать дерево и повторно извлекать его с помощью portsnap
если хочешь пойти по этому пути ...
В качестве другого (более грязного) варианта, который очень специфичен для этой ситуации: если вы знаете, что не устанавливали никаких других портов с момента «ошибки», и последний раз, когда вы устанавливали порты, было некоторое время назад, вы можете использовать даты создания каталогов в /var/db/pkg
- Просто удалите пакеты, записи в базе которых были созданы во время прерванной установки.
Как и в случае с другими вариантами выше, вам все равно нужно будет посмотреть на пакеты, которые вы удаляете, чтобы убедиться, что вы не сдуваете ничего важного, но этот список должен быть значительно короче, чем два других варианта, если он работает. для вашей ситуации.
Решение довольно простое, если вы знаете дату / время, когда вы начали make install
:
ls -ltr /var/db/pkg
*** Одного запуска недостаточно, потому что в этом списке пакетов, который вы создали, есть пакеты, зависящие друг от друга.
make install clean
завершает install
на всех зависимостях до его начала clean
. Если ваше дерево портов было чистым при запуске, значит, вы только что установили зависимости, с которыми work
подкаталоги и .install_done*
файлы в этих подкаталогах.
find /usr/ports -mindepth 3 -maxdepth 3 -type d -name work -print |
while read wrkdir; do
ls -1a "$wrkdir" | grep -q '^\.install_done' && dirname "$wrkdir"
done
Дайте portmaster -s
попытка. Он предложит вам удалить порты, от которых ничего не зависит в вашей системе. (Если он у вас не установлен, сначала установите его из ports-mgmt / portmaster.)