Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Deutsche Dokumentation
  • Search

automatisches DISTCC-Setup für paludis

Dokumentation, Tipps und Tricks.
Post Reply
  • Print view
Advanced search
5 posts • Page 1 of 1
Author
Message
moe
Veteran
Veteran
Posts: 1289
Joined: Fri Mar 28, 2003 5:18 pm
Location: Potsdam / Germany

automatisches DISTCC-Setup für paludis

  • Quote

Post by moe » Sat Feb 03, 2007 4:47 pm

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":
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: Select all

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: Select all

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
Top
think4urs11
Bodhisattva
Bodhisattva
User avatar
Posts: 6659
Joined: Wed Jun 25, 2003 9:51 pm
Location: above the cloud

Re: automatisches DISTCC-Setup für paludis

  • Quote

Post by think4urs11 » Sat Feb 03, 2007 8:46 pm

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: Select all

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
Last edited by think4urs11 on Sun Feb 04, 2007 12:31 am, edited 1 time in total.
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
Top
moe
Veteran
Veteran
Posts: 1289
Joined: Fri Mar 28, 2003 5:18 pm
Location: Potsdam / Germany

  • Quote

Post by moe » Sun Feb 04, 2007 12:02 am

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..
Top
think4urs11
Bodhisattva
Bodhisattva
User avatar
Posts: 6659
Joined: Wed Jun 25, 2003 9:51 pm
Location: above the cloud

  • Quote

Post by think4urs11 » Sun Feb 04, 2007 12:05 am

Code: Select all

# 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
Top
gringo
Advocate
Advocate
User avatar
Posts: 3793
Joined: Sun Apr 27, 2003 10:25 am

  • Quote

Post by gringo » Tue Feb 06, 2007 10:05 am

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
Top
Post Reply
  • Print view

5 posts • Page 1 of 1

Return to “Deutsche Dokumentation”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic