Nunca estuve completamente satisfecho con el sistema de puertos en un entorno grande: siempre parece que necesita aplicar alguna administración externa para que funcione bien.
Mis mejores consejos (en orden de preferencia ascendente, "peor" solución a "mejor" solución):
Si está construyendo en cada host, no lo haga .
Si debe hacerlo, no lo haga a través de NFS con montajes de lectura y escritura como describe: por lo general, puede confiar en que los puertos hagan lo correcto y no pisotear el árbol de puertos si proporciona directorios de trabajo alternativos, pero siempre es mejor esté seguro que lo siento: ejecute un espejo CVS / csup local y csup todos sus hosts desde ese cuadro, luego construya localmente como lo haría si fueran máquinas individuales.
Sí, sé que esto significa tener más espacio en disco en los hosts y un paso adicional. También es casi seguro que no tendrá problemas.
Consideración: Probablemente desee sincronizar los archivos de configuración del paquete (rsync o similar) desde un "host de configuración" designado para garantizar la coherencia en cada máquina (incluso puede rsync el árbol de puertos completo si lo desea, en lugar de usar csup en cada nodo).
Use un Host de compilación, cree paquetes e instálelos.
Una solución mucho mejor que construir en cada máquina individual: use un host de compilación para crear paquetes y apunte sus herramientas a esos paquetes.
Esto significa mantener un host de compilación para cada arquitectura que ejecute (o compilación cruzada), pero en última instancia es más agradable para sus máquinas de destino (no hay trabajos de compilación grandes, una garantía de coherencia)
Use una herramienta de configuración / administración del sistema.
Esta es la solución con la que terminé: construyo una imagen de servidor estándar y la implemento en mi entorno usando radmind
. Puedes hacer cosas similares con Puppet o Chef . Esto tiene todas las ventajas de usar un host de compilación (consistencia, menos carga en los servidores individuales) y agrega el beneficio de la administración de la configuración.
Advertencia: esto solo funciona realmente bien si sus máquinas son "idénticas". Es decir, puede instalar el mismo conjunto de puertos en todas ellas. Se puede trabajar si tienen diferentes conjuntos de puertos, sino que aumenta sustancialmente la carga administrativa.
Descargo de responsabilidad: soy el encargado del mantenimiento del puerto sysutils/radmind
. Sí, me gusta tanto que lo adopté.
Todo esto se basa en mi experiencia en la gestión de entornos FreeBSD de varios tamaños (que van desde 1-2 máquinas hasta más de 100). Las herramientas de configuración / administración del sistema que impulsan y mantienen una imagen estandarizada son realmente la mejor manera de manejar esto en mi experiencia.