• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

hostname ändert sich im dhcp

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Hi,

ich kom ursprünglich aus der Linux Ecke und mich stört jetzt das Verhalten meines MBP an einer Stelle. Wenn ich von DHCP nen hostname zugewiesen bekomme, wird dieser direkt übernommen (terminal: "hostname"). Das stört aber gewaltig, wenn man z.B. Software kompilieren will, die von diesem Hostname abhängig unterschiedliche Konfigurationen benutzt. Kann man dieses Verhalten irgendwie ausschalten? Oder einfach primitiv das Kommando hostname überschreiben? ;)

Ciao,
Lucas
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Ein DHCP Server in einem Netzwerk hat noch nie einen Schatz markiert einen Hostnamen vergeben. Dafür ist und bleibt der DNS Server zuständig. Vielleicht versuchst Dus mal mit einem statischen MAC Binding?
Gruß Pepi
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Ist das Uni Netz ;) Und das kommt ziemlich sicher vom DHCP, wie sollte DNS auf meinem Rechner was ändern?

Der Name schaut auch recht kryptisch aus, so ne alphanumerisch Kombination.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Deine IP Nummer kommt vom DHCP Server, Dein Hostname kommt vom DNS. Im Uninetz wirst Du wohl keinerlei Einflussmöglichkeit auf die Zuteilung haben. Compile die Software auf localhost, das ist immer auflösbar.
Gruß Pepi
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Hmm, mich wundert es nur, dass der hostname so einfach übernommen wird, unter Linux ist das nicht der Fall. Und mit dem Kompillieren meinte ich sowas wie (ist ein Ausschnitt aus ner CMakeLists.txt)

Code:
IF("${hostname}" STREQUAL "cn119")
  set(GSL_PATH "/opt/gnu/gsl-1.9")
ELSE("${hostname}" STREQUAL "cn119")
  set(GSL_PATH "/usr/local")
ENDIF("${hostname}" STREQUAL "cn119")
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Das stört aber gewaltig, wenn man z.B. Software kompilieren will, die von diesem Hostname abhängig unterschiedliche Konfigurationen benutzt.
Mich würde vielmehr stören, solche (ähem) "Software" vorgesetzt zu bekommen.
Nur so am Rande bemerkt.
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Mich würde vielmehr stören, solche (ähem) "Software" vorgesetzt zu bekommen.
Nur so am Rande bemerkt.

Solche Software schreib ich selber ;) Und das ist auch dafür gemacht, auf zwei oder drei Systemen zu laufen (Simulationsrechnungen aus der Forschung). Da muss man teilweise, grade bei massiv parallelen Rechnungen systemspezifisch arbeiten. Und zur Entwicklung möcht ich halt meinen Laptop nutzen, und da der nicht aus 100 rechenknoten besteht brauch ich da leicht andere Optionen ;) Und sowas kann man durchaus hostname-spezifisch machen.
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Hör auf damit, das ist erbärmlich.
Lass dein Programm die Umgebung zur Laufzeit prüfen und sich ggf. danach richten.

oO Wie soll ich zur Laufzeit erkennen, ob von einer Library die MPI (parallel) oder Single Version vorliegt? Ob das Programm auf 32 oder 64 bit laufen soll? Es geht ja hier darum, dass eine Software auf mehreren Systemen kompiliert und darauf schnell läuft (Rechenzeiten liegen auf nem Münchner Superrechner (Altix vom LRZ) eh schon bei Tagen bis Wochen...) Dann liegen verschiedene Library-Versionen vor, unterschiedliche Pfade. Wie würdest du das machen?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Wie soll ich zur Laufzeit erkennen, ob von einer Library die MPI (parallel) oder Single Version vorliegt?
Erstens ist es schon mal schlecht, wenn so etwas überhaupt in mehreren Versionen vorliegt, die von der darauf zugreifenden Applikation anhand des Installationspfades unterschieden werden müssen. Der Autor hat wohl einen ähnlichen Fehler begangen wie du.
Wenn man schon mit Bibliotheken (oder auch anderen Resourcen) arbeitet, die nicht verschiedene Versionen in einer gemeinsamen Datei bzw in einem gemeinsamen Framework integrieren, sollte man diese nur über einen individuell konfigurierbaren Symlink mit standardisiertem, eindeutigem Namen aufrufen.

Ob das Programm auf 32 oder 64 bit laufen soll?
Ich weiss nicht im geringsten, welche IDE usw. du benutzt, aber zB Xcode unterstützt dich sehr tatkräftig beim Erstellen sog. "Fat Binaries", die den Object-Code für beliebig viele Plattformen in einem gemeinsamen Binärarchiv integrieren.
So findest du beispielsweise sämtliche bei OS X mitgelieferten Programmpakete als sog. "Universal Binary" vor, die vier verschiedene Versionen beinhalten: PPC 32- und 64-Bit sowie intel 32- und 64 Bit. Welche davon zur Laufzeit des Programms zum Einsatz kommt, entscheidet das OS beim Programmstart selbst.
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Leider ist die Altix kein Mac ;)

Entwicklungsumgebung: Terminal, vi und make :D

Ich entwickle für Linux und da ist etliches schonmal anders. Also sprich, keine Frameworks oder tolle Bundles. Shared libraries kommen eh nicht in Frage, da das viel zu ineffizient ist. Und die Symlinks bei Bibliotheken sind ja schön und gut, aber auf massiven Parallelsystemen ist da häufig etliches nicht ganz standardkonform (die ham z.B. keine eigene platte, ...), beispielsweise wirst du da keine library in /usr finden, wo man die ja normal erwartet. Und dann braucht man solche build-time Geschichten.

Außerdem habe ich ja gar nicht vor, ein Binary transportierbar zu machen. Das wird ganz einfach auf jeder Maschine kompiliert, die es braucht. Ist eh viel schneller dann.
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Achja, und die Leute, die das eingerichtet haben sind recht gute Admins vom Leibnitz-Rechenzentrum in München. Die machen das so, wie auf jeden HPC-System ;)
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ich entwickle für Linux und da ist etliches schonmal anders.
Da sprichst du wahre Worte gelassen aus.

Außerdem habe ich ja gar nicht vor, ein Binary transportierbar zu machen.
Mission accomplished.

Das wird ganz einfach auf jeder Maschine kompiliert, die es braucht. Ist eh viel schneller dann.
Diese gewagte These entzieht sich leider meiner mentalen Ausdehnungsfähigkeit.
Egal, wenn du schon so derart professionelle Programme für ein so derart professionell gestaltetes Umfeld schreiben musst, kannst du ganz sicher mit solchen Fussvolkbegriffen wie "Umgebungsvariable" nichts anfangen. Sonst kämst du ja vielleicht am Ende noch auf die Idee, solchen Brontalmurks über einen kleinen Dreh am Suchpfad für Programme hinzubiegen.

#!/bin/sh
# faked hostname
echo "mein supercomputer"
#EOF
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Ach komm, muss das jetzt wieder so ausarten? Ich hab ne normale Frage gestellt und erwarte darauf auch ne normale Antwort.

Das wird ganz einfach auf jeder Maschine kompiliert, die es braucht. Ist eh viel schneller dann.

Die Compiler können das Programm für eine Maschine optimieren (-O3 beim gcc). Dabei werden beisielsweise Sachen wie Thread-Pinning auf die Systemkonfiguration passend optimiert. Ein Grund, warum u.a. Gentoo Linux extrem schnell läuft.

Umgebungsvariablen kenne ich natürlich, ich halte es aber für wenig sinnvoll jeden Benutzer erst 5 Variablen setzen zu lassen, bevor er die Sotware nutzen kann. Da ist eine hostname-basierte Variante definitiv besser.

Insgesamt denke ich, dass ich mein Programm ganz gut kenne und insofern auch beurteilen kann, ob das, was ich mache, sinnvoll ist. Ich bitte also, diese Diskussion zu beenden.

Sollte jemand noch was wegen des hostnames wissen, würde ich mich freuen ;)
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ach komm, muss das jetzt wieder so ausarten? Ich hab ne normale Frage gestellt...
...und hast einen dezenten Klaps auf den Hinterkopf bekommen.
Wenn man so einem Hochleistungsprogrammentwickler sowas entsetzlich banales aus dem Unix-Kleinkinderkurs noch erklären muss, ist das mehr als traurig. Eigentlich tuts schon fast zu weh, um noch drüber lachen zu können.
Code:
cd $HOME
mkdir -pm 700 bin
echo '#!/bin/bash' >> bin/hostname
echo ' echo "mein_fake_hostname"; ' >> bin/hostname
chmod 755 bin/hostname
echo ' export PATH="${HOME}/bin:${PATH}" ' >> .bash_login
Und jetzt rate mal, was ein "hostname" bei dir im nächsten geöffneten Terminalfenster bewirken wird.

Und morgen erkläre ich dir dann wie das funktioniert.
Aber erst nachdem du hier ein Foto von dir reingestellt hast, das dich neben den versammelten Mitarbeitern des Leibnitz Rechenzentrums zeigt, und zwar mit heruntergelassenen Hosen in rosaroten Schlüpfern.
Das pinne ich mir dann an die Wand, gleich neben die andern Schnappschüsse, die ich von den Königen der Grossrechner schon hab.
Schönen Tag noch, Herr HiEnd-Progger aus der "Linux-Ecke".
Cheez.
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
...und hast einen dezenten Klaps auf den Hinterkopf bekommen.
Wenn man so einem Hochleistungsprogrammentwickler sowas entsetzlich banales aus dem Unix-Kleinkinderkurs noch erklären muss, ist das mehr als traurig. Eigentlich tuts schon fast zu weh, um noch drüber lachen zu können.

Ich habe zwei Jahre Gentoo benutzt. Glaub mir, ich kenne Umgebungsvariablen.

Code:
cd $HOME
mkdir -pm 700 bin
echo '#!/bin/bash' >> bin/hostname
echo ' echo "mein_fake_hostname"; ' >> bin/hostname
chmod 755 bin/hostname
echo ' export PATH="${HOME}/bin:${PATH}" ' >> .bash_login
Und jetzt rate mal, was ein "hostname" bei dir im nächsten geöffneten Terminalfenster bewirken wird.

Und morgen erkläre ich dir dann wie das funktioniert.
Aber erst nachdem du hier ein Foto von dir reingestellt hast, das dich neben den versammelten Mitarbeitern des Leibnitz Rechenzentrums zeigt, und zwar mit heruntergelassenen Hosen in rosaroten Schlüpfern.
Das pinne ich mir dann an die Wand, gleich neben die andern Schnappschüsse, die ich von den Königen der Grossrechner schon hab.
Schönen Tag noch, Herr HiEnd-Progger aus der "Linux-Ecke".
Cheez.

Solltest du meinen ersten Post gelesen haben, würdest du feststellen, dass ich genau das bereits dort genannnt habe. Allerdings würde ich "Hochleistungsprogrammentwickler" das mit einem alias lösen. Und übrigens: deine Parameter für mkdir sind redundant.

Und was sollen diese Bilder jetzt eigentlich?! Sowas gehört meiner Meinung nach in den Fun Thread und nicht als Trotzantwort auf eine ganz normale Frage.

Achja und Gratulation: Du hast es geschafft, 2 Seiten ohne Ergebnis zu meckern und dabei meine ursprüngliche Frage nicht mal zu streifen.
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Was spricht dagegen, einfach im Makefile via Umgebungsvariable zwischen "Laptop"- und "Cluster"-Modus hin und herzuschalten?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Allerdings würde ich "Hochleistungsprogrammentwickler" das mit einem alias lösen.
Genau. Damit es dann in einem make-file eingesetzt NICHT funktioniert. Genie.
Entschuldigung: Hochleistungsprogrammentwicklergenie.
Soviel Zeit muss sein. :)

Und übrigens: deine Parameter für mkdir sind redundant.
Das hätte ich gerne erläutert. Was genau stört dich denn?
 

luke-r2d2

Antonowka
Registriert
26.12.08
Beiträge
357
Genau. Damit es dann in einem make-file eingesetzt NICHT funktioniert. Genie.
In CMake, das ich wie du oben sehen kannst, bentze, schon.

Das hätte ich gerne erläutert. Was genau stört dich denn?
"mkdir bin" reicht, mehr brauchst du nich :p Edit: Warum sollte ich mein bin-Verzeichnis unlesbar für alle machen? oO Das wollen doch Leute sehen...

Naja, wurscht, mit nem alias gehts, auch wenn ich das Verhalten von OS X an der Stelle nicht optimal finde.