zion - distccd
Nom
distccd - serveur de compilation C/C++ répartie
Résumé
distccd --daemon [OPTIONS]
Description
distccd est le serveur du compilateur réparti distcc(1). Il exécute les tâches de compilation qui lui sont confiées en réseau par ses clients.
distcc peut être exécuté soit sur TCP, soit par une commande de connexion telle que ssh(1) : les connexions TCP sont rapides mais peu sûres ; les connexions SSH sont sécurisées mais plus lentes.
Lorsqu'on utilise une connexion SSH, distccd doit être installé sur la machine volontaire mais ne doit pas s'exécuter en tant que démon : il sera lancé par SSH à la demande. Les connexions SSH ont plusieurs avantages : ni le client ni le serveur ne restent à l'écoute d'aucun port ; les compilations s'exécutent avec les privilèges de l'utilisateur qui les a demandées ; les utilisateurs sans autorisation sont refoulés du serveur ; enfin le code source et le résultat sont protégés pendant les transferts.
Lorsqu'on utilise une connexion TCP, distccd peut être exécuté soit par un programme similaire à inetd, soit en tant que serveur autonome. Le mode autonome est recommandé : il est légèrement plus efficace et il permet à distccd de réguler le nombre de tâches qui lui parviennent. Les options --listen et --allow permettent un contrôle d'accès simple, basé sur IP.
distcc peut être exécuté soit par le superutilisateur, soit par tout autre utilisateur. S'il est exécuté par le superutilisateur, il abandonne ses privilèges et prend soit l'identité indiquée par l'option --user, soit celle de l'utilisateur « distcc », soit celle de l'utilisateur « nobody ».
distccd ne possède pas de fichier de configuration : son comportement est dicté exclusivement par les options de la ligne de commande et par les requêtes des clients.
Nom
Il est recommandé d'exécuter distccd en tant que serveur autonome. distccd se met à l'écoute des connexions sur le réseau et crée plusieurs processus-enfants (« fork ») pour les servir.
Si vous avez installé distcc en utilisant un paquet, vous pouvez peut-être démarrer le serveur de la manière habituelle pour votre système d'exploitation, par exemple :
# service distcc start |
Pour exécuter distccd comme service autonome, lancez, en tant que superutilisateur ou en tant qu'utilisateur ordinaire, une commande telle que celle-ci :
# distccd --daemon |
ExÉcution depuis init
distccd peut être exécuté comme démon autonome sous le contrôle d'un autre programme tel qu'init(8) ou daemontools. Le superserveur lance distccd quand le système démarre, et lors de son arrêt.
distccd doit être démarré de la même manière que s'il était utilisé en serveur autonome, à ceci près que l'option --no-detach doit être utilisée afin que le superserveur puisse le surveiller.
Par exemple, pour ajouter distccd parmi les processus sysvinit sous Linux, ajoutez la ligne suivante à /etc/inittab :
dscc:2345:respawn:/usr/local/bin/distccd --verbose --no-detach --daemon |
ExÉcution depuis inetd
distccd peut être démarré par un superserveur réseau tel qu'inetd ou xinetd. Dans ce cas, inetd reste en écoute sur le réseau et invoque distccd quand une connexion est demandée.
Cette configuration est légèrement moins efficace que l'exécution d'un serveur distccd autonome : distccd ne sera pas capable de réguler le nombre de connexions acceptées ; cependant certaines versions d'inetd peuvent être paramétrées à cette fin.
Pour un inetd typique d'Unix, une ligne semblable à la suivante peut être ajoutée à /etc/inetd.conf :
distcc stream tcp nowait.6000 root/usr/local/bin/distccd distccd --inetd |
inetd impose une limite à la fréquence des connexions à un service, afin d'éviter les abus volontaires ou involontaires. La limite par défaut imposée par l'inetd du « Linux NetKit » est de 40 par minute, ce qui est bien trop bas pour distccd. L'option .6000 remonte cette limite à 6000 par minute.
ArrÊt de distccd
Pour arrêter un serveur autonome, envoyez un signal SIGTERM à son processus père. Pour ce faire, le moyen le plus fiable est d'utiliser l'option --pid-file pour enregistrer le PID du serveur. Un serveur arrêté de cette manière laisse aboutir les compilations en cours.
Options
--help
Affiche un résumé des commandes disponibles. |
--version
Affiche la version du démon, puis se termine. |
-j, --jobs TÂCHES
Fixe le nombre maximum de tâches à traiter simultanément. La valeur par défaut est le nombre de processeurs de la machine plus 2, afin de permettre à certains processus de rester bloqué en attente d'E/S. À n'utiliser qu'en mode démon. |
-N, --nice POLITESSE
Rend le démon plus poli lorsqu'il s'agit de céder le processeur aux autres programmes s'exécutant sur la machine. POLITESSE est le nombre ajouté à la priorité actuelle du processus. Les valeurs de priorité possibles dépendent du système d'exploitation mais s'étendent typiquement de 0 à 20. Par défaut, la politesse est augmentée de 5. |
-p, --port PORT
Indique le port TCP à écouter à la place du port par défaut : 3632. À n'utiliser qu'en mode démon. |
--listen ADRESSE
Ordonne au démon distccd de rester en écoute à l'adresse IP ADRESSE. Cette option peut être utile pour contrôler l'accès à un hôte disposant de plusieurs adresses. À n'utiliser qu'en mode démon. |
-P, --pid-file FICHIER
Sauvegarde le PID du processus démon dans le fichier FICHIER. À n'utiliser qu'en mode démon. |
--user UTILISATEUR
Si distccd est exécuté avec les droits du superutilisateur : prend l'identité de l'utilisateur UTILISATEUR. |
-a, --allow ADDR_IP[/MASQUE]
Ordonne à distccd de n'accepter les connexions que depuis l'adresse ADDR_IP. Un masque CIDR peut être indiqué en option après une barre oblique, par exemple : 192.168.0.0/24. |
--verbose
distccd inclut les messages de débogage dans son journal. |
--no-detach
Le démon ne se détache pas du shell qui l'a démarré. |
--no-fork
distccd ne génère pas de processus fils (« fork ») pour chaque connexion, afin d'y attacher gdb. N'utilisez pas cette option si vous n'en comprenez pas l'utilité ! |
--log-file FICHIER
distccd envoie les messages au fichier FICHIER plutôt qu'à syslog. Tenir le journal dans un fichier est sensiblement plus rapide que de passer par syslog ; aussi est-ce recommandé. |
--log-stderr
distccd envoie les messages à stderr plutôt qu'à un fichier ou à syslog. Cette option est destinée avant tout au débogage. Ne pas utiliser dans le mode inetd. |
--wizard
Active toutes les options appropriées au démarrage de distcc sous gdb : s'exécuter en tant que démon ; tenir un journal détaillé sur stderr ; et ne pas se détacher ni générer de processus fils. Réservé aux utilisateurs avertis. |
--inetd
distccd sert un client connecté à stdin/stdout. Comme son nom l'indique, cette option doit être utilisée quand distccd est lancé par un superserveur tel qu'inetd. De lui-même, distccd se considère en mode inetd quand stdin est un descripteur de connexion (« socket »). |
--daemon
distccd se lie à un descripteur de connexion (« socket ») et reste en écoute, plutôt que de s'exécuter à partir d'inetd. Cette option correspond au mode autonome. De lui-même, distccd se considère en mode autonome si stdin est un terminal (« tty ») ; --daemon doit être indiqué explicitement si distccd est exécuté depuis un script ou une connexion SSH non-interactive. |
Diagnostic
Par défaut, distccd tient un journal de ses messages par l'intermédiaire de la fonction daemon de syslog, qui l'écrit normalement dans /var/log/daemon ou dans /var/log/messages. Les messages peuvent être enregistrés dans un fichier différent grâce à l'option --log-file.
Variables denvironnement
DISTCCD_PATH
Au démarrage de distccd, si cette variable a une valeur, celle-ci est utilisée (telle quelle) comme chemin de recherche (« PATH ») lors des exécutions de commandes. Les répertoires de masquage ne sont pas retirés par le programme. Cette variable permet de forcer le démon à appeler ccache : il l'aurait normalement éliminé en partant du principe que ccache est généralement utilisé avant distcc. |
DISTCC_SAVE_TEMPS
Lorsque cette valeur est fixée à 1, les fichiers temporaires sont conservés après utilisation. |
À noter : DISTCC_LOG est sans effet sur l'emplacement des journaux du serveur.
Voir aussi
distcc(1), ccache(1), gcc(1), make(1) http://distcc.samba.org/
Bugs
Le contrôle d'accès basé sur IP ne protège pas des agresseurs capables de falsifier les connexions TCP, et ne différencie pas les utilisateurs d'un même client.
Les connexions TCP ne sont pas protégées des agresseurs capables d'observer et de modifier le trafic sur le réseau.
Licence
L'utilisation de distcc est libre. Il ne peut être copié, modifié ou distribué que selon les termes de la licence publique générale GNU (GPL : « GNU General Public Licence »), version 2 ou suivantes. Une copie [NDT : en anglais] de cette licence est incluse dans le fichier COPYING.
Auteur
distcc a été écrit par Martin Pool <mbp@sourcefrog.net>, avec la coopération de nombreux érudits dont Wayne Davison, Frerich Raabe, Dimitri Papadopoulos, et d'autres cités dans le fichier NEWS. Merci de signaler les bogues à <distcc@lists.samba.org>.
Traduction
Lionel Sausin. Merci aux participants de la liste « debian-l10n-french ».
Traduction
Il est possible que cette traduction soit imparfaite ou périmée. En cas de doute, veuillez vous reporter au document original en langue anglaise fourni avec le programme.
Poster un commentaire