Как обновить смесь пакетов и портов на FreeBSD

18

В основном я использую пакеты во FreeBSD, потому что большинство из них мне подходит. Некоторые, однако, не подходят мне, например, vimпакет, который не включает в себя графический gvim.

Нет проблем. Вместо этого я могу установить порт, используя portmaster editors/vimи выбрав GTK2опцию. Это отлично работает.

Однако, когда я бегу pkg upgradeчерез некоторое время, мне сообщают следующее:

        Reinstalling vim-7.4.110_3 (options changed)

Что дает? Я не изменил никаких параметров, и нет новой версии (также не в портах). Это сравнивает мой установленный порт с удаленной версией без GTK2?

Конечно, я могу позволить pkg upgradeсделать свою работу и установить порт снова после этого, но это глупо. Каков рекомендуемый способ обновления набора пакетов и портов?

Рикардо Буринг
источник
Используете pkg lockрекомендуемое решение? Это работает, но я надеюсь, что что-то настолько простое, что это может быть обработано автоматически.
Рикардо Буринг
Да, pkg lockэто решение предназначено для этого: со страницы руководства: «Блокировка pkg используется для блокировки пакетов от переустановки, модификации или удаления».
Дерексон
этот пост уволен. Но мне нравится рассказывать, что у меня до сих пор такая же проблема. У меня был вопрос на форуме FreeBSD «Использование пакетов и портов одновременно?» И один участник дал мне совет использовать скрипт для установки обновлений, как он сделал. Вы можете найти это там в его ответе.
HL1234

Ответы:

15

Вы должны помнить, что pkgи порты регистрируют установленное программное обеспечение там же (база данных SQLite в /var/db/pkg). Ни одна из систем не записывает дополнительную информацию о том, что определенная часть программного обеспечения была установлена ​​как предварительно скомпилированный пакет или как порт. Таким образом, после того, как часть программного обеспечения установлена ​​любым из этих подходов, инструменты не могут знать, как она была установлена.

Когда вы выбрали поддержку GTK2 для editors/vimпорта, он был зарегистрирован в базе данных пакетов. Когда вы позже запустились pkg upgrade, pkgпосмотрели данные пакета vimи обнаружили, что поддержка GTK2 была включена в установленной версии, тогда как она не включена в предварительно скомпилированном пакете. pkg upgradeделает именно то, что должен - находит все установленные пакеты, которые отличаются от доступных предварительно скомпилированных пакетов, и пытается их обновить. Эти различия могут заключаться в номере версии, графике зависимостей, параметрах времени компиляции и т. Д.

Правильный способ предотвратить pkgрассмотрение порта или пакета (после установки нет разницы в том, что касается инструментов), который вы хотите защитить, - это использовать pkg lockкоманду.

В качестве альтернативы, если вы обнаружите, что меняете параметры на нескольких портах, вы можете рассмотреть возможность установки poudriereи обслуживания своего собственного репозитория пакетов. Это требует небольшой настройки и работает лучше всего, если ваш хост сборки имеет пул хранения ZFS, хотя это будет работать, если у вас нет ZFS; это очень гибкий и удобный способ управления сборками программного обеспечения.

D_Bye
источник