1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

hostname ändert sich im dhcp

Dieses Thema im Forum "macOS & OS X" wurde erstellt von luke-r2d2, 14.06.09.

  1. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    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
     
  2. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     
  3. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    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.
     
  4. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     
  5. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    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")
     
  6. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.905
    Mich würde vielmehr stören, solche (ähem) "Software" vorgesetzt zu bekommen.
    Nur so am Rande bemerkt.
     
  7. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    26.12.08
    Beiträge:
    357
    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.
     
  8. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.905
    Hör auf damit, das ist erbärmlich.
    Lass dein Programm die Umgebung zur Laufzeit prüfen und sich ggf. danach richten.
     
  9. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    26.12.08
    Beiträge:
    357
    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?
     
  10. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.905
    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.

    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.
     
  11. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    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.
     
  12. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    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 ;)
     
  13. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.905
    Da sprichst du wahre Worte gelassen aus.

    Mission accomplished.

    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
     
  14. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    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.

    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 ;)
     
  15. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.905
    ...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.
     
  16. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    26.12.08
    Beiträge:
    357
    Ich habe zwei Jahre Gentoo benutzt. Glaub mir, ich kenne Umgebungsvariablen.

    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.
     
  17. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Was spricht dagegen, einfach im Makefile via Umgebungsvariable zwischen "Laptop"- und "Cluster"-Modus hin und herzuschalten?
     
  18. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    26.12.08
    Beiträge:
    357
    Und wo ist dann noch der Unterschied zum hostname? ;) Der sollte ja ähnlich funktionieren...
     
  19. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.905
    Genau. Damit es dann in einem make-file eingesetzt NICHT funktioniert. Genie.
    Entschuldigung: Hochleistungsprogrammentwicklergenie.
    Soviel Zeit muss sein. :)

    Das hätte ich gerne erläutert. Was genau stört dich denn?
     
  20. luke-r2d2

    luke-r2d2 Antonowka

    Dabei seit:
    26.12.08
    Beiträge:
    357
    In CMake, das ich wie du oben sehen kannst, bentze, schon.

    "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.
     

Diese Seite empfehlen