Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
automatisches DISTCC-Setup für paludis
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
moe
Veteran
Veteran


Joined: 28 Mar 2003
Posts: 1289
Location: Potsdam / Germany

PostPosted: Sat Feb 03, 2007 4:47 pm    Post subject: automatisches DISTCC-Setup für paludis Reply with quote

Vorwort
Paludis ist eine Alternative zu portage.
Distcc verteilt die Kompilierarbeit auf mehrere Rechner.
Mit "automatischem DISTCC-Setup" meine ich, dass der Rechner zuerst guckt, ob Rechner mit laufendem distccd im Netzwerk vorhanden sind, und dann dementsprechend paludis für distcc Benutzung einrichtet.
Dazu werden alle privaten Netzwerke die in der Routingtabelle stehen, nach aktiven Hosts gescannt, und die aktiven auf den offenen distcc-Port geprüft. Da diese Scannerei pro 24er-Netz mind. 15s dauert, wird das Ergebnis 10 Minuten gecached (konfigurierbar).
Sinn und Zweck ist mit meinem Laptop an verschiedenen Standorten die dort verfügbaren distccd-Server zu nutzen

Bugs/Warnungen

  • Auf dem ausführenden Rechner darf der distccd selbst nicht laufen, sonst wird jede lokale Adresse auf der distccd lauscht den DISTCC_HOSTS zugefügt.
  • in manchen Netzwerken gilt ein Portscan als böser Angriff
  • in öffentlichen Netzen könnten manipulierte distccds laufen, die bösen Code einschleusen
  • das Script dürfte nur mit Rootrechten laufen
  • jedes Netz aus der Routingtabelle wird als /24er Netz betrachtet.

Das Script wird in /etc/paludis/bashrc abgelegt. Laut Doku wird die bashrc "sourced":
Quote:
Paludis will source bashrc when doing ebuild work.
Momentan (paludis-0.16.2) stimmt das nicht ganz, die bashrc wird ausgeführt, sollte diese Datei in späteren Versionen wirklich nur "gesourced" werden, wird das Skript nicht mehr funktionieren.

Voraussetzungen
Neben paludis und distcc wird net-analyzer/hping und net-analyzer/fping benötigt.

das Skript

/etc/paludis/bashrc wie folgt ergänzen (ergänzen, nicht ersetzen!):
Code:
export MAKEOPTS="-j2"

# automatisches distcc-setup
TMPFILE=/var/tmp/distcchosts
CACHETIME=600 # 10 Minuten

DATE=`date +%s`
if [ ! -f ${TMPFILE} ]; then
  touch ${TMPFILE}
  FDATE=1
else
  FDATE=`stat -c %Y ${TMPFILE}`
fi
if [ $((${DATE}-${FDATE})) -gt ${CACHETIME} ]; then
  echo -n "Suche nach DISTCC Daemonen"
  NETWORKS=`route -n | cut -d " " -f 1 | grep '^10\|^172.16\|^192.168' | sed s/$/'\/24'/`
  for i in ${NETWORKS}; do
      echo -n "."
      HOSTS="${HOSTS} `fping -a -q -r 1 -i 1 -t 1 -g $i 2>/dev/null`"
  done
  DHOSTS="localhost"
  for i in ${HOSTS}; do
      hping -p 3632 -c 1 -S --tcpexitcode -q $i >/dev/null 2>&1
      if [ $? -eq 18 ];then DHOSTS="${DHOSTS} $i"; fi
      echo -n "."
  done
  echo $DHOSTS > ${TMPFILE}
else
echo -n "Benutze gecachte DISTCC-Daemonen"
  DHOSTS=`cat ${TMPFILE}`
fi
NUM_DHOSTS=`echo ${DHOSTS} | wc -w`
if [ $NUM_DHOSTS -gt 1 ]; then
   echo -e "\n\tAktiviere Distcc mit ${DHOSTS}"
   export DISTCC_HOSTS="${DHOSTS}"
   export DISTCC_DIR="/var/tmp/paludis/.distcc"
   export PATH="/usr/lib/distcc/bin:${PATH}"
   export CC="/usr/lib/distcc/bin/gcc"
   export CXX="/usr/lib/distcc/bin/g++"
   export MAKEOPTS="-j$((${NUM_DHOSTS}*2))"
fi


Die Benutzung von paludis ist unverändert, wenn man sehen wil ob und wie distcc arbeitet:
Code:
DISTCC_DIR="/var/tmp/paludis/.distcc" distccmon-text 2

Oder distccmon-gtk, wenn distcc mit USE="gtk" installiert wurde.

Das Skript ist teilweise ein wenig dirty, Verbesserungen (insbes. die o.g. Bugs) sind willkommen!

HTH Maurice
Back to top
View user's profile Send private message
think4urs11
Administrator
Administrator


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Sat Feb 03, 2007 8:46 pm    Post subject: Re: automatisches DISTCC-Setup für paludis Reply with quote

Deine Netzerkennung funktioniert nicht so ganz
- es wird immer /24 angenommen wie du schon sagst
- es funktioniert nicht in Netzen <> .0 im letzten Oktet
- 172.17-31.x.y werden nicht berücksichtigt
- die armen Menschen mit offiziellen eigenen IPs haben verloren (solls ja geben)

Code:
fping -a -q -r 1 -i 1 -t 1 -g `ip r s| sed '/ ppp./d;/ lo /d;s/^\(.*\/[0-9]\{1,2\}\).*$/\1/'`

localhost wird, d.h. ein lokal laufender distccd stört nicht.

*edit* nicht funktionierende Variante mittels 'ip a' statt 'ip r s' entfernt
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself


Last edited by think4urs11 on Sun Feb 04, 2007 12:31 am; edited 1 time in total
Back to top
View user's profile Send private message
moe
Veteran
Veteran


Joined: 28 Mar 2003
Posts: 1289
Location: Potsdam / Germany

PostPosted: Sun Feb 04, 2007 12:02 am    Post subject: Reply with quote

Danke, hab ja gesagt dass es teils dirty ist, hab mich zum ersten mal mit [fh]ping beschäftigt..
Aber woher bekomme ich 'ip' ? Ich dachte an iproute2 aber da ist es nicht drinnen..
Back to top
View user's profile Send private message
think4urs11
Administrator
Administrator


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Sun Feb 04, 2007 12:05 am    Post subject: Reply with quote

Code:
# equery belongs `which ip`
[ Searching for file(s) /sbin/ip in *... ]
sys-apps/iproute2-2.6.16.20060323 (/sbin/ip)

_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
gringo
Advocate
Advocate


Joined: 27 Apr 2003
Posts: 3744

PostPosted: Tue Feb 06, 2007 10:05 am    Post subject: Reply with quote

ich bin jetzt nicht vor meinem Rechner aber ich habe dies hier etwas angepasst und es funktioniert gar nicht schlecht :)
_________________
Error: Failing not supported by current locale
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum