rausfinden, welches os verwendet wird



  • Unter Debian:

    $ cat /etc/*-release
    cat: /etc/*-release: Datei oder Verzeichnis nicht gefunden
    

    Ups.

    Ich denke, die beste Vorgehensweise hängt hier davon ab, was alterbro eigentlich mit der Information vorhat. Was hast du eigentlich mit der Information vor, alterbro?



  • SeppJ schrieb:

    Zur Laufzeit oder zur Compilezeit? Und wie genau willst du es wissen? Ubuntu und Fedora auseinanderzuhalten dürfte ganz schön schwierig werden, da es nur unterschiedliche Geschmacksrichtungen des gleichen Betriebssystems sind.

    Neben der Datei /etc/issue gibt es weitere Möglichkeiten, die Versionsnummer der Distribution herauszufinden.
    Die Versionsnummer der Distribution ist bei vielen Linux Distributionen in einer Textdatei in /etc abgelegt.
    Sie trägt den Namen Distributor-release oder Distributor_version

    In neueren - LSB konformen - Distributionen sind diese Daten in die Datei /etc/lsb-release gewandert.
    Insofern ist es bei einer LSB konformen Distri sehr einfach, die Daten herauszufinden.



  • seldon schrieb:

    Unter Debian:

    $ cat /etc/*-release
    cat: /etc/*-release: Datei oder Verzeichnis nicht gefunden
    

    Ups.

    Ich denke, die beste Vorgehensweise hängt hier davon ab, was alterbro eigentlich mit der Information vorhat. Was hast du eigentlich mit der Information vor, alterbro?

    Oh, unter Debian scheint die Datei /etc/debian_version zu heißen.



  • Wieso sollte man Linux-Distrubtionen auseinander halten wollen?



  • Keine Ahnung 😃 Man sollte lieber die vorhandenen Pakete prüfen



  • pyhax schrieb:

    Keine Ahnung 😃 Man sollte lieber die vorhandenen Pakete prüfen

    Wunderbar. Und welches Paketsystem möchtest du abfragen? Es gibt ja nur so "ein paar" Paketverwaltungssysteme. Und fast jede Distribution konfiguriert die anders oder schraubt anderweitig dran rum.

    Um zu wissen, welche Pakete es gibt, musst du erst mal die Distribution kennen.



  • otze schrieb:

    pyhax schrieb:

    Keine Ahnung 😃 Man sollte lieber die vorhandenen Pakete prüfen

    Wunderbar. Und welches Paketsystem möchtest du abfragen? Es gibt ja nur so "ein paar" Paketverwaltungssysteme. Und fast jede Distribution konfiguriert die anders oder schraubt anderweitig dran rum.

    Um zu wissen, welche Pakete es gibt, musst du erst mal die Distribution kennen.

    Es interessiert ja nicht ob das Paket A oder B heisst, sondern es geht darum: ist das binary XYZ in mindestens dieser Version vorhanden? Ist die .so Datei FooBar in mindestens der Version Z vorhanden?



  • Aber dafür musst du sie erst mal finden können. Bei Pfaden sind die Distributionen allerdings noch kreativer als bei Paketsystemen.



  • Wie kann ich rausfinden welches os verwendet wird

    Was moechtest du mit dieser Information machen, wozu dient sie?



  • otze schrieb:

    Aber dafür musst du sie erst mal finden können. Bei Pfaden sind die Distributionen allerdings noch kreativer als bei Paketsystemen.

    Nein, die Dateien liegen alle in den Suchpfaden.
    Mit ´which foobar´ bekomme ich den Pfad zu foobar. Wenn foobar nicht im $PATH liegt, dann ist es nicht korrekt installiert.
    Und .so Dateien liegen in einem der Pfade von $LD_LIBRARY_PATH sonst sind sie nicht korrekt installiert.

    Wenn meine Anwendung so alle Sachen checkt, dann kann man viel mehr Plattformen Supporten als wenn man die Distributionsversion checkt. Feature-Tests sind immer besser als Versions-Tests.

    Der Grund warum es manchmal sinnvoll ist auch eine Distribution zu testen ist der, dass man offiziell nur diese oder jene Distribution supportet. Aber wenn man überall laufen will, einfach testen ob die passende Software vorhanden ist.

    Dann kann man auch leicht dem User sagen was fehlt. Und die ganzen Forks von Distributionen kann man eh nie alle checken - das ist zuviel Aufwand.



  • Shade Of Mine schrieb:

    Und .so Dateien liegen in einem der Pfade von $LD_LIBRARY_PATH sonst sind sie nicht korrekt installiert.

    [] echo $LD_LIBRARY_PATH
    
    []
    


  • Jep, mein Fehler. LD_LIBRARY_PATH ist zum temporären überschreiben des System Paths. Aber prinzipiell ändert das nichts. Man checkt sowieso die Pfade nicht händisch und ob die .so Datei foo da ist, checke ich eh mit dlopen().


Anmelden zum Antworten