Z uwagi na górze:
- Muszę wiedzieć, czy system operacyjny jest (Open) SUSE tak aby wykorzystać pakiet prawidłowego instalatora (zypper). Jeśli jest DEBIAN (na przykład), użyję apt-get ...
Proponuję, abyś bezpośrednio rozwiązał rzeczywisty problem. Zamiast identyfikować system operacyjny, należy zidentyfikować dostępny menedżer pakietów.
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"
EDYCJA: Mimo że kod tutaj pokazuje wykrywanie programu do zarządzania pakietami, może lepiej wykryć główny rejestr pakietów. Na przykład w systemach Debian/Ubuntu, które używają dpkg
, , będzie przechowywany katalog /var/lib/dpkg
przechowujący bazę danych pakietu; to jest pewny znak, że odpowiednie są dpkg
lub. Nie wiem, jakie ekwiwalentne są katalogi dla SUSE i Red Hata i tak dalej, ale jeśli popierasz te, możesz się dowiedzieć.
apt-get
został przeniesiony do systemów Red Hat, a za pośrednictwem programu o nazwie alien
można uzyskać rpm
na systemach Debian i tak dalej. Wykrywanie samej bazy pakietów jest najbardziej niezawodny sposób na ustalenie, który system jest używany.
Jeśli wykryjesz menedżera pakietów, twój kod będzie automatycznie działał na wszystkich powiązanych dystrybucjach.Jeśli wykryjesz bazę danych dpkg
, twój kod będzie działał na Debianie, Ubuntu, Linux Mint i wielu innych dystrybucjach opartych na Debianie. Jeśli wykryjesz bazę danych rpm
, Twój kod będzie działał w Red Hat, Centos, Fedorze, Mandrivie i wielu innych dystrybucjach opartych na RPM.
'cat/proc/version'? – ChristopheD
jest to niebezpieczne w użyciu. jaki jest twój problem_właściwości? nie możesz po prostu sprawdzić, jakich konkretnych potrzeb potrzebujesz? – hop
Muszę wiedzieć, czy system operacyjny jest (Open) SUSE, aby użyć właściwego instalatora pakietów (zypper). Jeśli jest DEBIAN (na przykład), użyję apt-get ... Dlatego potrzebuję tego ... – ant0nisk