Ich möchte ein Makefile erstellen, das meine Objekte kompiliert und sie gemäß der Linux-Distribution benennt (z. B. Suse, RedHat oder Ubuntu). Wie kann ich erkennen, ob das Betriebssystem Ubuntu ist oder nicht?
Ich möchte ein Makefile erstellen, das meine Objekte kompiliert und sie gemäß der Linux-Distribution benennt (z. B. Suse, RedHat oder Ubuntu). Wie kann ich erkennen, ob das Betriebssystem Ubuntu ist oder nicht?
Antworten:
Wir verwenden cat /etc/lsb-release
zur Identifizierung der Ubuntu-Version:
sh-3.2$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.4 LTS"
Für andere Versionen könnte es sein
ls /etc/*release
Gentoo, RedHat, Arch & SuSE haben alle eine Release-Datei: http://linuxmafia.com/faq/Admin/release-files.html Dies ist ein vollständiges Skript im Link;)
Beispielcode für Betriebssystem, Architektur und Version für Ubuntu-Systeme:
OS=$(shell lsb_release -si)
ARCH=$(shell uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(shell lsb_release -sr)