Principalmente uso paquetes en FreeBSD, porque la mayoría de ellos me quedan bien. Sin embargo, algunos no me convienen, como el vim
paquete, que no incluye un gráfico gvim
.
No hay problema. En su lugar, puedo instalar el puerto, usando portmaster editors/vim
y seleccionando la GTK2
opción. Esto funciona bien
Sin embargo, cuando corro pkg upgrade
después de un tiempo, se me presenta lo siguiente:
Reinstalling vim-7.4.110_3 (options changed)
¿Lo que da? No cambié ninguna opción, y no hay una nueva versión (tampoco en los puertos). ¿Está comparando mi puerto instalado con la versión remota sin GTK2
?
Por supuesto, puedo dejar de pkg upgrade
hacer su trabajo e instalar el puerto nuevamente después, pero esto es estúpido. ¿Cuál es la forma recomendada de actualizar una combinación de paquetes y puertos?
fuente
pkg lock
la solución recomendada? Funciona, pero espero que algo tan simple como esto se pueda manejar automáticamente.pkg lock
es la solución diseñada para eso: desde la página del manual: "pkg lock se usa para bloquear paquetes contra la reinstalación, modificación o eliminación".Respuestas:
Debe recordar eso
pkg
y los puertos registran el software instalado en el mismo lugar (una base de datos SQLite/var/db/pkg
). Ninguno de los dos sistemas registra información adicional de que un software en particular se instaló como un paquete precompilado o como un puerto. Por lo tanto, una vez que se instala una pieza de software por cualquiera de los enfoques, las herramientas no tienen forma de saber cómo se instaló.Cuando seleccionó el soporte GTK2 para el
editors/vim
puerto, se registró en la base de datos del paquete. Cuando más tarde ejecutópkg upgrade
,pkg
miró los datos del paquetevim
y descubrió que la compatibilidad con GTK2 se había habilitado en la versión instalada, mientras que no está habilitada en el paquete precompilado.pkg upgrade
está haciendo exactamente lo que debería: encontrar los paquetes instalados que son diferentes de los paquetes precompilados disponibles e intentar actualizarlos. Esas diferencias pueden estar en el número de versión, el gráfico de dependencia, las opciones de tiempo de compilación, etc.La forma correcta de evitar
pkg
considerar un puerto o paquete (una vez instalado, no hay diferencia, en lo que respecta a las herramientas) que desea proteger es utilizar elpkg lock
comando.Alternativamente, si se encuentra cambiando las opciones en varios puertos, podría considerar instalar
poudriere
y mantener su propio repositorio de paquetes. Requiere un poco de configuración y funciona mejor si su host de compilación tiene un grupo de almacenamiento ZFS, aunque funcionará si no tiene ZFS; Es una forma muy flexible y conveniente de gestionar compilaciones de software personalizadas.fuente