В основном я использую пакеты во FreeBSD, потому что большинство из них мне подходит. Некоторые, однако, не подходят мне, например, vim
пакет, который не включает в себя графический gvim
.
Нет проблем. Вместо этого я могу установить порт, используя portmaster editors/vim
и выбрав GTK2
опцию. Это отлично работает.
Однако, когда я бегу pkg upgrade
через некоторое время, мне сообщают следующее:
Reinstalling vim-7.4.110_3 (options changed)
Что дает? Я не изменил никаких параметров, и нет новой версии (также не в портах). Это сравнивает мой установленный порт с удаленной версией без GTK2
?
Конечно, я могу позволить pkg upgrade
сделать свою работу и установить порт снова после этого, но это глупо. Каков рекомендуемый способ обновления набора пакетов и портов?
package-management
freebsd
bsd-ports
Рикардо Буринг
источник
источник
pkg lock
рекомендуемое решение? Это работает, но я надеюсь, что что-то настолько простое, что это может быть обработано автоматически.pkg lock
это решение предназначено для этого: со страницы руководства: «Блокировка pkg используется для блокировки пакетов от переустановки, модификации или удаления».Ответы:
Вы должны помнить, что
pkg
и порты регистрируют установленное программное обеспечение там же (база данных SQLite в/var/db/pkg
). Ни одна из систем не записывает дополнительную информацию о том, что определенная часть программного обеспечения была установлена как предварительно скомпилированный пакет или как порт. Таким образом, после того, как часть программного обеспечения установлена любым из этих подходов, инструменты не могут знать, как она была установлена.Когда вы выбрали поддержку GTK2 для
editors/vim
порта, он был зарегистрирован в базе данных пакетов. Когда вы позже запустилисьpkg upgrade
,pkg
посмотрели данные пакетаvim
и обнаружили, что поддержка GTK2 была включена в установленной версии, тогда как она не включена в предварительно скомпилированном пакете.pkg upgrade
делает именно то, что должен - находит все установленные пакеты, которые отличаются от доступных предварительно скомпилированных пакетов, и пытается их обновить. Эти различия могут заключаться в номере версии, графике зависимостей, параметрах времени компиляции и т. Д.Правильный способ предотвратить
pkg
рассмотрение порта или пакета (после установки нет разницы в том, что касается инструментов), который вы хотите защитить, - это использоватьpkg lock
команду.В качестве альтернативы, если вы обнаружите, что меняете параметры на нескольких портах, вы можете рассмотреть возможность установки
poudriere
и обслуживания своего собственного репозитория пакетов. Это требует небольшой настройки и работает лучше всего, если ваш хост сборки имеет пул хранения ZFS, хотя это будет работать, если у вас нет ZFS; это очень гибкий и удобный способ управления сборками программного обеспечения.источник