¿Cómo puedo saber si una compilación está basada en Debian?

9

Estoy empezando a trabajar con una caja que tiene una compilación Linux (pequeña) personalizada. ¿Cómo puedo saber si se trata de una compilación basada en Debian o Red Hat?

Esto es lo que sé hasta ahora:

$ cat /proc/version
Linux version 2.6.31-2.5 (build@build-desktop) (gcc version 4.4.3 (Broadcom stbgcc-4.4.3-1.2) ) #7

$ apt-get
-sh: apt-get: command not found

$ yum
-sh: yum: command not found
Sparky1
fuente
porque lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-?? Simplemente ejecutelsb_release -si

Respuestas:

2

La ejecución uname -adebería proporcionarle información general sobre el sistema. Además, puede ejecutar apropos "package manager"o con palabras clave similares para obtener más información sobre el administrador de paquetes. Busque /etcun archivo llamado xyz-releasedonde xyzdebería estar cualquier distribución que se esté ejecutando.


fuente
Esto es lo que obtengo cuando ejecuto uname -a: $ uname -a Linux 10.0.1.46 2.6.31-2.5 # 7 jue 15 de diciembre 19:57:09 CST 2011 mips GNU / Linux
Sparky1
@ Sparky1 Entonces, parece que te has conseguido una distribución Linux-MIPS .
7

Para probar los sistemas Debian, puede verificar si /etc/debian_versionexiste:

if [ -f "/etc/debian_version" ]; then
   # do stuff
fi

Debería incluirse Debian y los sistemas basados ​​en él (incluido Ubuntu y sus derivados), aunque es posible que algunos no lo tengan, en este caso puede verificar /etc/*releasearchivos:

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   # do stuff
fi

Donde debian|buntu|minthay una lista de nombres de distribuciones para buscar (no distingue entre mayúsculas y minúsculas): puede tener una idea de algunos derivados comunes a partir de aquí , aunque los derivados de Debian como Ubuntu tienen sus propios deriativos .


Para los sistemas basados ​​en RedHat, los derivados utilizan una mayor variedad de archivos y es posible que no tengan instalado lsb-release, por lo que puede aplicar los siguientes métodos:

  • obtener el nombre de lanzamiento de

    lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • Verifique el DISTRIB-ID en el lsb-releasearchivo: un 'Método de recuperación que probablemente no sea necesario en los sistemas modernos', también el archivo aparentemente falta en Fedora y no contiene DISTRIB_ID en OpenSUSE

  • verificar la existencia de alguno de los siguientes

    • /etc/fedora-releasey / o /etc/redhat-releasepara RedHat o Fedora
    • /etc/SuSE-release para SuSe
    • /etc/mandriva-release para mandriva / mageia
  • use un método similar al último debian:

    if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
    ...
    

Los primeros 3 puntos los obtuve del cron de actualización de Google Chrome, por lo que podría examinar eso para obtener más información (también determina los administradores de paquetes)


Para una gama más amplia de sistemas operativos, leer esta publicación en SO debería ayudar.

Wilf
fuente
2

Compruebe la salida de:

lsb_release -a

y:

cat /etc/issue

También puede buscar más comandos de paquete de palanca baja rpmpara RedHat y dpkgDebian.

Michał Šrajer
fuente
No se encontró el comando $ dpkg $ rpm (muestra las opciones para el comando rpm). Parece que esta es una construcción basada en Red Hat. ¡Gracias por la ayuda!
Sparky1
2
También puede consultar el archivo / etc / debian_version , que existe en toda la distribución de Linux basada en Debian
Coren
También instálelo usando apt-get install lsb-releasesi no está instalado.
Massood Khaari
1

Si es un dispositivo integrado (por ejemplo, un enrutador SoHo), probablemente no será ninguna de las distribuciones de "escritorio / servidor". Intentaría consultar el manual del dispositivo, el sitio web del fabricante (debería tener una fuente del código con licencia GPL) y la Web en general.

Piskvor salió del edificio
fuente
0

uname -ay cat /proc/version( solo lectura para superusuarios ), en mi sincera opinión, son las únicas respuestas correctas a esta pregunta ya que el resto, como lsb_release, /etc/issueo cat /proc/sys/kernel/versionno están disponibles / no se pueden usar en todos los sistemas (ni siquiera en las distribuciones oficiales de Debian). Tampoco se moleste en usar /etc/*releases, /etc/*versionya que pueden ser alterados. Este último no está disponible en todas las distribuciones de Debian.

Otras opciones podrían ser (no es mi recomendación):

  • Verifique dasho verifique si shestá vinculado a dash(debería ser el valor predeterminado para ejecutar scripts)
  • Verifique el administrador de paquetes ejecutando >/dev/null 2>&1 dpkg --version && { ... }
Quinto axioma
fuente