A partir de los comentarios en la parte superior:
- Necesito saber si el sistema operativo es (abierto) SUSE con el fin de utilizar el instalador de paquete correcto (zypper) Si es DEBIAN (Por ejemplo), usaré apt-get ...
Sugiero que resuelva directamente el problema real. En lugar de identificar el sistema operativo, identifique el administrador de paquetes disponible.
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: Aunque el código aquí muestra la detección del programa gestor de paquetes, tal vez sería mejor para detectar la principal en sí Registro paquete. Por ejemplo, en los sistemas Debian/Ubuntu que usan dpkg
, , habrá un directorio /var/lib/dpkg
que contiene la base de datos del paquete; ese es un signo seguro de que dpkg
o apt-get
son apropiados. No sé cuáles son los directorios equivalentes para SUSE, Red Hat, etc., pero si los respalda, puede averiguarlos.
apt-get
ha sido portado a sistemas Red Hat, y a través de un programa llamado alien
puede obtener rpm
en sistemas Debian, y así sucesivamente. Detectar la base de datos del paquete en sí es la manera más infalible de descubrir qué sistema de paquete está en uso.
Si detecta el administrador de paquetes, su código funcionará automáticamente en todas las distribuciones relacionadas.Si detecta la base de datos dpkg
, su código funcionará en Debian, Ubuntu, Linux Mint y en muchas otras distribuciones basadas en Debian. Si detecta la base de datos rpm
, su código funcionará en Red Hat, Centos, Fedora, Mandriva y todas las demás distribuciones basadas en RPM.
'cat/proc/version'? – ChristopheD
esto es peligroso de usar en primer lugar. ¿Cuál es tu problema actual? ¿No puedes simplemente verificar las capacidades específicas que necesitas? – hop
Necesito saber si el SO es (Open) SUSE para usar el instalador de paquetes correcto (zypper). Si es DEBIAN (Por ejemplo), usaré apt-get ... Es por eso que necesito esto ... – ant0nisk