OS detection¶
OS detection is a critical capability of many ROS tools in the ROS
build toolchain. The rospkg.os_detect
module provides and
extendable library for detecting various operating systems. It is
focused on detecting operating systems used with ROS.
You can test this library on your platform from the command line:
$ python -m rospkg.os_detect
OS Name: ubuntu
OS Version: 10.04
OS Codename: lucid
Currently supported OSes:
Arch Linux
Cygwin
Debian
Fedora
FreeBSD
Gentoo
Mint
OS X
Red Hat Linux
Slackware
Ubuntu
-
class
rospkg.os_detect.
OsNotDetected
[source]¶ Exception to indicate failure to detect operating system.
-
class
rospkg.os_detect.
OsDetect
(os_list)[source]¶ Detects the current operating system. This class will iterate over registered classes to lookup the active OS and version. The list of detectors can be overridden in the constructor; otherwise it will default to
OsDetector
classes provided by this library.-
default_os_list
¶ List of currently registered detectors. Must not be modified directly.
-
static
register_default
(os_name, os_detector)[source]¶ Register detector to be used with all future instances of
OsDetect
. The new detector will have precedence over any previously registered detectors associated with os_name.
-
detect_os
() → tuple[source]¶ - Returns
(os_name, os_version, os_codename),
(str, str, str)
- Raises
OsNotDetected
if OS could not be detected
-
get_detector
([name]) → OsDetector[source]¶ Get detector used for specified OS name, or the detector for this OS if name is
None
.- Raises
KeyError
-
add_detector
(name, detector)[source]¶ Add detector to list of detectors used by this instance. detector will override any previous detectors associated with name.
- Parameters
name – OS name that detector matches
detector –
OsDetector
instance
-
get_os
() → OsDetector¶ Get
OsDetector
for this operating system.- Raises
OsNotDetected
if OS could not be detected
-
get_name
() → str[source]¶ - Returns
Name of current operating system. See
OS_*
definitions in this module for possible values.- Raises
OsNotDetected
if OS could not be detected
-
get_version
() → str[source]¶ - Returns
Version of current operating system
- Raises
OsNotDetected
if OS could not be detected
-
get_codename
() → str[source]¶ - Returns
Codename of current operating system if available, or empty string if OS does not provide codename.
- Raises
OsNotDetected
if OS could not be detected
-
-
class
rospkg.os_detect.
OsDetector
[source]¶ Generic API for detecting a specific OS.
-
get_codename
()[source]¶ - Returns
codename for this OS. (aka Ubuntu Hardy Heron = “hardy”). If codenames are not available for this OS, return empty string.
- Raises
OsNotDetected
if called on incorrect OS.
-
get_version
()[source]¶ - Returns
standardized version for this OS. (aka Ubuntu Hardy Heron = “8.04”)
- Raises
OsNotDetected
if called on incorrect OS.
-
OS name definitions¶
-
rospkg.os_detect.
OS_ARCH
¶ Name used for Arch Linux OS.
-
rospkg.os_detect.
OS_CYGWIN
¶ Name used for Cygwin OS.
-
rospkg.os_detect.
OS_DEBIAN
¶ Name used for Debian OS.
-
rospkg.os_detect.
OS_FREEBSD
¶ Name used for FreeBSD OS.
-
rospkg.os_detect.
OS_GENTOO
¶ Name used for Gentoo.
-
rospkg.os_detect.
OS_MINT
¶ Name used for Mint OS.
-
rospkg.os_detect.
OS_OPENSUSE
¶ Name used for OpenSUSE OS.
-
rospkg.os_detect.
OS_OSX
¶ Name used for OS X.
-
rospkg.os_detect.
OS_RHEL
¶ Name used for Red Hat Enterprise Linux.
-
rospkg.os_detect.
OS_SLACKWARE
¶ Name used for Slackware.
-
rospkg.os_detect.
OS_UBUNTU
¶ Name used for Ubuntu OS.
Linux helper methods¶
-
rospkg.os_detect.
lsb_get_os
() → str¶ Linux: wrapper around lsb_release to get the current OS
-
rospkg.os_detect.
lsb_get_codename
() → str¶ Linux: wrapper around lsb_release to get the current OS codename
-
rospkg.os_detect.
lsb_get_version
() → str¶ Linux: wrapper around lsb_release to get the current OS version