Markus Kuhn wrote:
Feature proposal for POSIX uname:
Hi,
I like this proposal, but I prefer to maintain "-o" (OS) instead of "-d" (Distro).
However, when approved must be POSIX complaint.
Thanks, Giovanni
At present, the 'uname -o' command simply gives GNU/Linux for any of the many Linux distributions. Since these distributions differ often very significantly, it would be useful if uname could also identify the OS distribution and version that it came with. I believe, the granularity of the fields provided traditionally by uname is no longer sufficient and additional fields are necessary to distinguish between exact distribution variants of the same operating system. The presence of the lsb_release in the LSB Core specification is an indication that uname as currently defined by POSIX no longer fulfills its role adequately.
I propose to review uname and extend it appropriately such that other new non-POSIX OS identification mechanisms such as lsb_release become unnecessary. As a start, I suggest to add new command line options to uname to distinguish between operating system distributions:
For example, this could look like:
$ uname -d SuSE Linux Professional 9.1 (DVD 32-bit) $ uname -d Red Hat Linux 9
The information could be split up further into four fields:
- DISTRIB_VENDOR. This is the commonly used colloquial shortname of the vendor or organization that prepared the installable OS distribution. Colloquial should mean that this name should be free of legal designators (i.e. use "Sun" and not "Sun Microsystems Inc."). (e.g. "SuSE", "Red Hat", "Novell", "Sun", "IBM", "Mandrake", "Debian")
- DISTRIB_PRODUCT: This is the product name, without the vendor name (which typically precedes it immediately), and also without the version number (which typically follows immediately afterwards). (e.g. "Linux", "Linux Professional", "Enterprise Server", "Terminal Server", "Home Edition")
- DISTRIB_RELEASE: Typically a dot-separated list of integer numbers. Where this is a release date instead of a version number, the ISO 8601 notation should be used. (e.g., "8", "9.1", "2004-12-31")
- DISTRIB_ATTRIBUTES (optional): This is a list of optional attributes such as CPU type, installation source medium, regional variant, etc. that distinguish several available variants of the same product version. The individual attribute in this list should not contain any whitespace or parenthesis and should be separated by a single whitespace. (e.g., "DVD 32-bit", "FTP i586", "CD Amiga nocrypto")
These fields can be made individually accessable:
$ uname -d SuSE Linux Professional 9.1 (DVD 32-bit) $ uname -dv SuSE $ uname -dp Linux Professional $ uname -dr 9.1 $ uname -da DVD 32-bit
The suggested output format is very simple:
If DISTRIB_ATTRIBUTES is non-empty
"%s %s %s (%s)\n", DISTRIB_VENDOR, DISTRIB_PRODUCT, DISTRIB_RELEASE, DISTRIB_ATTRIBUTES
otherwise
"%s %s %s\n", DISTRIB_VENDOR, DISTRIB_PRODUCT, DISTRIB_RELEASE
Note: I deliberately did not include in this proposal an extra field for a release code name (as can be queried via 'lsb_release -c'). Most vendors do not use or publish such release project code names. They also add no information beyond DISTRIB_RELEASE and lack the temporal ordering implied by a version number.
Suggested implementation for uname in GNU coreutils:
There is little point in trying to autodetect this, as there is no portable and predictable way yet to find out this information (uname -d is meant to become exactly that). The person preparing uname for inclusion into a distribution package will have to manually provide values for these four fields in a configuration file. To ensure that this is not forgotten, the uname distribution should refuse to compile out of the box, until these values have been configured.
Related files:
/etc/*-release, /etc/issue, /etc/issue.net, /etc/motd, /usr/bin/lsb_release
Related specifications:
- http://www.opengroup.org/onlinepubs/009695399/utilities/uname.html - http://www.opengroup.org/onlinepubs/009695399/functions/uname.html - http://www.linuxbase.org/spec/booksets/LSB-Core/LSB-Core.html#LSBRELEASE - http://cvs.openpkg.org/openpkg-src/openpkg/platform
Markus
--
--
--
Check FT Websites ... http://www.futuretg.com - ftp://ftp.futuretg.com
http://www.FTLinuxCourse.com
http://www.FTLinuxCourse.com/Certification
http://www.rpmparadaise.org
http://GNULinuxUtilities.com
http://www.YourPersonalOperatingSystem.com
--
_______________________________________________ Bug-coreutils mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/bug-coreutils
