Мне нравится семейство
. LSB часто не устанавливается по умолчанию, а в некоторых дистрибутивах, таких как RHEL / CentOS, цепочка зависимостей для lsb_release
огромна. Кроме того, если вы не знаете дистрибутив, как узнать имя пакета LSB? операционная система
раздражает, потому что меня обычно не волнует, RedHat против CentOS или Debian против Ubuntu. Я хочу знать семейства дистрибутивов, потому что идиосинкразии между дистрибутивами внутри семейств обычно одинаковы.
Поддержка Gentoo была объединена с osfamily Фактера вчера (13 февраля 2013 г.), она должна сделать следующий выпуск. Вы всегда можете использовать комбинацию osfamily
для проверки Debian или RedHat и операционной системы
для проверки Gentoo.
osfamily
и операционная система
в основном представляют собой набор условий if
или case
. Было бы довольно легко настроить свой собственный как настраиваемый параметр факта или класса в зависимости от ваших потребностей. Например:
class osfacts {
if $::kernel == 'Linux' {
$os = $::operatingsystem ? {
Gentoo => 'Gentoo',
default => $::osfamily,
}
}
elsif $::kernel == 'SunOS' {
$os = $::operatingsystem
}
elsif ($::operatingsystem == 'Darwin') and
($::macosx_productname == 'Mac OS X') {
$os = 'MacOSX'
}
else {
$os = $::operatingsystem
}
}
Это немного сложно, потому что В конце дня каждая ОС действует по-своему. Прежде всего решите, какие дистрибутивы ваш модуль хочет поддерживать, а затем протестируйте его.
Также я не вижу причин, почему бы не использовать оба факта как способ отличить распределение. Там нет ничего плохого.