私はUbuntu 20.04を実行している2台のコンピュータを持っており、distcc(バージョン3.3.3)を介して分散型でいくつかのC ++コードをコンパイルしようとしています。
あるコンピュータで distcc デーモンを手動で起動し、別のコンピュータでコンパイルすると、すべてがうまく動作するようです。次のコマンドを使用してデーモンを起動します。
distccd --no-detach --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --nice 10 --jobs 8 --zeroconf
コンパイルが開始されたシステムのgnome distccモニターでジョブが実行され、サーバーとローカルホストの両方で正常に完了したことがわかるため、動作していることがわかります。
また、nmap
この設定を使用して両方のコンピュータのいずれかで実行(サーバークエリ)すると、次の出力が表示されます。
PORT STATE SERVICE VERSION
3632/tcp open distccd distccd v1 (unknown compiler)
distccを手動で起動する代わりにサービスとして実行すると、次のような結果が表示されます。
$ sudo service distcc start
$ sudo service distcc status
distcc.service - LSB: simple distributed compiler server
Loaded: loaded (/etc/init.d/distcc; generated)
Active: active (running) since Wed 2020-12-16 15:16:03 EST; 22s ago
Docs: man:systemd-sysv-generator(8)
Process: 9183 ExecStart=/etc/init.d/distcc start (code=exited, status=0/SUCCESS)
Tasks: 10 (limit: 38405)
Memory: 3.7M
CGroup: /system.slice/distcc.service
├─9193 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9199 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9200 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9201 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9202 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9209 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9210 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
├─9211 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
└─9212 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
ランチャーの行は、私が手動で行った操作と一致するようです(つまり、/etc/default/distcc
正しく構成されているようです)。/etc/default/distcc
場合に備えて内容は次のとおりです(コメントなし)。
STARTDISTCC="true"
ALLOWEDNETS="192.168.0.0/16 127.0.0.1"
LISTENER="127.0.0.1"
NICE="10"
JOBS="8"
ZEROCONF="true"
ただし、nmap
サーバーのポート3632に対してクエリを再実行すると、次のことが発生します。
PORT STATE SERVICE VERSION
3632/tcp closed distccd
~/.distcc/hosts
IP / LIMIT表記に従って、2台のコンピュータ(localhost/8
ローカルコンピュータとは異なるコンピュータ)にホストリストを設定しました。other-machines-ip/8
distccサービスが正しく機能する方法を知っていますか?
答え1
私が見逃した微妙な詳細は、元の投稿に示されているように、systemdサービスの場合はデーモンに対する追加の--listen引数でした。 --listenパラメータはLISTENER設定によって制御され、/etc/default/distcc
デフォルトは127.0.0.1なので、localhostでのみ接続が許可されます。
192.168.0.1
私の場合は、ローカルネットワーク上のすべてのコンピュータの音を聞くように設定する必要があります。