Je n'ai jamais été entièrement satisfait du système de ports dans un grand environnement - Il semble toujours que vous devez lui appliquer une gestion externe afin de le faire fonctionner correctement.
Mes meilleurs conseils (par ordre croissant de préférence, de la «pire» solution à la «meilleure» solution):
Si vous construisez sur chaque hôte, ne le faites pas .
Si vous devez le faire, ne le faites pas sur NFS avec des montages en lecture-écriture comme vous le décrivez: vous pouvez généralement faire confiance aux ports pour faire la bonne chose et ne pas piétiner l'arborescence des ports si vous fournissez des répertoires de travail alternatifs, mais il est toujours préférable de soyez prudent que désolé: exécutez un miroir CVS / csup local et csup tous vos hôtes à partir de cette boîte, puis construisez localement comme vous le feriez s'il s'agissait de machines individuelles.
Oui, je sais que cela signifie avoir plus d'espace disque sur les hôtes et une étape supplémentaire. Il est également presque garanti d'être sans problème.
Caveat: Vous souhaiterez probablement synchroniser les fichiers de configuration du package (rsync ou similaire) à partir d'un "hôte de configuration" désigné pour garantir la cohérence sur chaque machine (vous pouvez même rsync toute l'arborescence des ports si vous le souhaitez, plutôt que d'utiliser csup sur chaque nœud).
Utilisez un hôte de génération, créez des packages et installez-les.
Une bien meilleure solution que de construire sur chaque machine individuelle: utilisez un hôte de build pour créer des packages et pointez vos outils vers ces packages.
Cela signifie garder un hôte de construction pour chaque architecture que vous exécutez (ou compilation croisée), mais c'est finalement plus agréable pour vos machines cibles (pas de gros travaux de compilation, une garantie de cohérence)
Utilisez un outil de gestion de configuration / système.
C'est la solution avec laquelle je me suis retrouvé - je crée une image de serveur standard et la déploie autour de mon environnement à l'aide radmind
. Vous pouvez faire des choses similaires avec Puppet ou Chef . Cela présente tous les avantages de l'utilisation d'un hôte de génération (cohérence, moins de charge sur les serveurs individuels) et ajoute l'avantage de la gestion de la configuration.
Avertissement: cela ne fonctionne vraiment bien que si vos machines sont «identiques» - c'est-à-dire que vous pouvez installer le même ensemble de ports sur chacun d'eux. Cela peut fonctionner si vous avez différents ensembles de ports, mais cela augmente considérablement les frais administratifs.
Avertissement: je suis le responsable du port pour sysutils/radmind
. Ouais, je l'aime tellement que je l'ai adopté.
Tout cela est basé sur mon expérience dans la gestion d'environnements FreeBSD de différentes tailles (allant de 1 à 2 machines à plus de 100). Les outils de configuration / gestion du système qui poussent et maintiennent une image standardisée sont vraiment le meilleur moyen de gérer cela selon mon expérience.