Dai commenti in alto:
- ho bisogno di sapere se il sistema operativo è (Open) SUSE in modo da utilizzare il programma di installazione pacchetto corretto (zypper). Se è DEBIAN (per esempio), userò apt-get ...
Suggerisco di risolvere direttamente il problema reale. Invece di identificare il sistema operativo, identificare il gestore pacchetti disponibile.
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: Anche se il codice qui mostra rilevare il programma di gestione dei pacchetti, potrebbe essere preferibile rilevare il registro principale pacchetto stesso. Ad esempio, su sistemi Debian/Ubuntu che usano dpkg
, ci sarà una directory /var/lib/dpkg
che contiene il database del pacchetto; questo è un segno sicuro che dpkg
o apt-get
sono appropriati. Non so quali siano le directory equivalenti per SUSE e Red Hat e così via, ma se stai supportando quelle che puoi scoprire.
apt-get
è stato portato su sistemi Red Hat e tramite un programma chiamato alien
è possibile ottenere rpm
su sistemi Debian e così via. Rilevare il database del pacchetto stesso è il modo più infallibile per capire quale sistema di pacchetti è in uso.
Se si rileva il gestore pacchetti, il codice funzionerà automaticamente su tutte le distribuzioni correlate.Se si rileva il database dpkg
, il codice funzionerà su Debian, Ubuntu, Linux Mint e su molte altre distribuzioni basate su Debian. Se rilevi il database rpm
, il tuo codice funzionerà su Red Hat, Centos, Fedora, Mandriva e tutte le altre distro basate su RPM.
'cat/proc/version'? – ChristopheD
questo è pericoloso da usare in primo luogo. qual è il tuo problema _actual_? non puoi semplicemente controllare le funzionalità specifiche di cui hai bisogno? – hop
Ho bisogno di sapere se il sistema operativo è (Apri) SUSE in modo da utilizzare il pacchetto di installazione corretto (zypper). Se è DEBIAN (per esempio), userò apt-get ... Ecco perché ho bisogno di questo ... – ant0nisk