Из комментариев в верхней части:
- Мне нужно знать, если ОС (Open) SUSE, чтобы использовать правильный пакет установщика (Zypper). Если это DEBIAN (для примера), я буду использовать apt-get ...
Предлагаю вам решить реальную проблему. Вместо идентификации ОС определите доступный менеджер пакетов.
import os
def file_exists(fname):
try:
os.stat(fname)
return True
except OSError:
return False
if file_exists('/usr/bin/zypper'):
... # do the SUSE case
elif file_exists('/usr/bin/apt-get'):
... # do the Debian/Ubuntu case
elif file_exists('/usr/bin/yum'):
... # do the Red Hat case
else:
raise OSError, "cannot find a usable package manager"
EDIT: Хотя код здесь показывает обнаружение программы менеджера пакетов, это может быть лучше, чтобы обнаружить основной пакет самого реестра. Например, в системах Debian/Ubuntu, которые используют dpkg
, , будет находиться каталог /var/lib/dpkg
, содержащий базу данных пакетов; это верный признак того, что подходят dpkg
или apt-get
. Я не знаю, что эквивалентные каталоги для SUSE и Red Hat и т. Д., Но если вы поддерживаете тех, которые вы можете узнать.
apt-get
был портирован в системы Red Hat, и с помощью программы alien
вы можете получить rpm
в системах Debian и так далее. Обнаружение самой базы данных пакета является наиболее надежным способом выяснить, какая система пакетов используется.
Если вы обнаружите менеджера пакетов, ваш код будет автоматически работать со всеми связанными дистрибутивами.Если вы обнаружите базу данных dpkg
, ваш код будет работать на Debian, Ubuntu, Linux Mint и многих других дистрибутивах на основе Debian. Если вы обнаружите базу данных rpm
, ваш код будет работать на Red Hat, Centos, Fedora, Mandriva и всех других дистрибутивах на основе RPM.
'cat/proc/version'? – ChristopheD
Это опасно для использования в первую очередь. Какова ваша проблема _actual_? не можете ли вы просто проверить конкретные возможности, которые вам нужны? – hop
Мне нужно знать, есть ли ОС (Открыть) SUSE, чтобы использовать правильный установщик пакетов (zypper). Если это DEBIAN (например), я буду использовать apt-get ... Вот почему мне это нужно ... – ant0nisk