The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Devel::CheckOS::Families - what OS "families" are supported "out of the box" by Devel::CheckOS and Devel::AssertOS?

WHAT IS AN OS FAMILY

Computing platforms fall into several categories. For example, there is the category of Unix-a-likes. Each of these categories is a "family". A platform can fall into several families.

THE Unix FAMILY

Broadly speaking, these are platforms where:

Devices are represented as pseudo-files in the filesystem
"Unix-style" permissions are supported

That is, there are seperate read/write/execute permissions for file owner, group and anyone. This implies the presence of multiple user accounts and user groups. Permissions may not be supported on all filesystems.

The filesystem has a single root
The C API for the operating system is largely POSIX-compatible

THE Linux FAMILY

This includes both ordinary Linux and Android. Plain old Linux will match 'Linux'. Android will match both that and 'Android'.

A word of warning - there are a vast number of Linux derivatives, and I will never detect every single one of them. Most Linux derivatives will only match 'Linux'.

THE Linux::Debian FAMILY

Linux::Debian is the family of all the Debian-based Linuxes. If you want to test which particular family member you're on then look at list_family_members("Linux::Debian") to see what's available.

Note the difference between Linux::RealDebian (which uses /etc/os-release for identification) and Linux::UnknownDebianLike (which uses the existence of /etc/debian_version for identification). In particular beware that some *very* old Debians don't have /etc/os-release available and so will be detected as Linux::UnknownDebianLike.

It is likely that Linux::Ubuntu will in the future turn into a family.

THE Linux::Redhat and Linux::SUSE FAMILIES

Both Redhat and SUSE come in multiple flavours, some commercial and some open-source. In particular note that Oracle Linux is a Redhat derivative.

THE MicrosoftWindows FAMILY

This includes any version of Windows and also includes things like Cygwin which run on top of it.

THE DEC, Sun, and Apple FAMILIES

These include any OS written by, respectively, DEC, Sun, and Apple. They exist because, while, eg, Mac OS Classic and Mac OS X are very different platforms, they do support some unique features - such as AppleScript.

THE Realtime FAMILY

This is for all real-time OSes. So far, it only includes QNX.

THE EBCDIC FAMILY

OSes which use EBCDIC instead of ASCII.

AUTHOR, COPYRIGHT and LICENCE

Copyright 2024 David Cantrell <david@cantrell.org.uk>

This documentation is free-as-in-speech. It may be used, distributed and modified under the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales License, whose text you may read at http://creativecommons.org/licenses/by-sa/2.0/uk/.

CONSPIRACY

This documentation is also free-as-in-mason.