Frage zu Programm unter verschiedenen Linux Distributionen

k491

Well-known member
20 April 2006
5.421
257
Moin, habe nicht viel Plan von Linux, daher seid bitte nicht gleich böse mit mir wenn ich komische Fragen stelle ;)

Würde für mein Projekt (siehe Signatur) gerne demnächst ein kleines Programm für Linux Systeme schreiben lassen und nun stellt sich mir die Frage, läuft ein Programm generell unter allen gänigen Distributionen oder was muß ich da im Vorfeld wissen?


PS: Falls jemand interesse an der Umsetzung hat, so darf er mich gerne kontaktieren!
 
Normal kannst du schon davon ausgehen, dass ein Programm, dass mit gaengingen Librarys gebaut wurde auf allen Distributionen laeuft, da diese Librarys ueberall installierbar sind.

Man muss das Programm dann wohl auf den einzelnen Systemen kompilieren, oder vorkompiliert fuer gaengige Systeme (Debian wheezy, jessie, OpenSuse, ...) anbieten, damit gegen die richtigen Versionen der Libs gelinkt wird (im Fall von C(++) o.ae.)

Sollte es nur ein Skript sein (Bash, Python,...) ist das ganze noch einfacher, da nichts kompiliert werden muss und nur die entsprechenden Pakete installiert sein muessen.

Wenn es lediglich darum geht regelmaessig die Uptime an einen Server zu melden, dann tuts da auch ein einfaches Shell-Skript mit "uptime" und "wget", das laeuft ueberall...
 
Zuletzt bearbeitet:
Wenn es lediglich darum geht regelmaessig die Uptime an einen Server zu melden, dann tuts da auch ein einfaches Shell-Skript mit "uptime" und "wget", das laeuft ueberall...

Folgendes muss das Programm können:

- Userlogin & Passwort speichern
- Wenn möglich Autostart (heisst unter Linux sicher anders)
- Uptime erfassen (in Sekunden)
- Betriebssystem erkennen
 
Folgendes muss das Programm können:

- Userlogin & Passwort speichern
Kein Thema, kann man in einer Configdatei unterbringen

- Wenn möglich Autostart (heisst unter Linux sicher anders)
Ein Cronjob waere da sicher ein guter Ansatz, sprich einfach alle X Minuten das Programm/Skript ausfuehren lassen. Das ist besser als dafuer die ganze Zeit was laufen zu haben, was eh meistens nix macht.

- Uptime erfassen (in Sekunden)
Wie gesagt: Da reicht ein Befehl, dann hast du die Uptime in Sekunden mit 2 Nachkommastellen:
Code:
cut -d " " -f 1 /proc/uptime

- Betriebssystem erkennen
Das ist etwas kniffelig, da es unter Linux keinen Standard gibt, wie und wo die Distribution zu erkennen ist. Oftmals steht die Distri aber in der Kernelversion, aber darauf kann man sich nicht verlassen.
 
Das ist etwas kniffelig, da es unter Linux keinen Standard gibt, wie und wo die Distribution zu erkennen ist. Oftmals steht die Distri aber in der Kernelversion, aber darauf kann man sich nicht verlassen.
hmm, also es lässt sich nicht zuverlässig zwischen bspw. Debian, Ubuntu oder was weiß ich unterscheiden? Das wäre natürlich schade...
 
hmm, also es lässt sich nicht zuverlässig zwischen bspw. Debian, Ubuntu oder was weiß ich unterscheiden? Das wäre natürlich schade...

Zuverlaessig wie gesagt nicht, da theoretish jeder seinen Kernel neu kompilieren kann und dabei den Versionsstring aendern kann (was aber auch nicht die Regel ist).
Im Auslieferungszustand ist das aber darueber schon machbar.

Das Problem ist, dass eine Distribution nix anderes ist, als eine Zusammenstellung bestimmter Programme und einem Kernel, der mehr oder weniger angepasst und gepatcht ist. Daher gibt es keine sichere Unterscheidung zwischen den einzelnen.
 
OK, Auslieferungszustand ist doch schon mal was. Das muß dann ausreichend sein.

Welches sind denn die gänigsten Distributionen die man differenzieren sollte? Alles was dann induviduell verändert wurde oder nicht erkannt werden kann, nenne ich dann eben "sonstige Linux" oder so.
 
Für einen ersten (ganz schnellen und ganz groben) Überblick reicht cat /proc/version oder uname -a, danach läßt sich solange mit den jeweiligen Paketmanagern (die üblichen Verdächtigen: apt, dpkg, rpm, yast etc.) im System rumstochern bis die Erkennung hinreichend genau ist/erscheint. Igendwann liefert Stochern auch keine neuen Erkenntnisse mehr, dann ist es halt eine "Andere Linux-Version". Das von Claudi angesprochene Problem ("selbstgemachte" Versionsstrings) ist ohnehin nicht lösbar.
 
Linuxprogramm

Hallo

Normalerweise sollte man die Linuxdistri doch in den entsprechenden Paketconfig parsen können.
Also /etc/apt/sources.list /etc/pacman... und soweiter, da steht doch explizit Debianb, Archlinux , Sabayon, Slackware, oder was immer drin.

Ich würde nur Pakete für Debian, Archlinux, Opensuse, Ubuntu, Gento (Sabayon) und im tar.gz anbieten, das sollte reichen.

Anstatt eines cronjob als Autostart, ging auch ein Dämon.
 
Ich benutze z.B. ein siduction, das auf Debian Sid beruht. Da ergeben sich folgende Möglichkeiten und Ausgaben:

$ cat /etc/issue
Debian GNU/Linux jessie/sid \n \l

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux unstable (sid)
Release: unstable
Codename: sid

$ uname -r
3.9-3.towo-siduction-amd64

$ cat /etc/siduction-version
siduction 12.1 Desperado - kde - (201205212202)

Vielleicht hilft dir auch das: https://www.unixboard.de/vb3/showthread.php?26568-Wie-kann-man-Linux-Distribution-abfragen
 
Zuletzt bearbeitet: