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
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
?? Simplemente ejecutelsb_release -si
Respuestas:
La ejecución
uname -a
debería proporcionarle información general sobre el sistema. Además, puede ejecutarapropos "package manager"
o con palabras clave similares para obtener más información sobre el administrador de paquetes. Busque/etc
un archivo llamadoxyz-release
dondexyz
debería estar cualquier distribución que se esté ejecutando.fuente
Para probar los sistemas Debian, puede verificar si
/etc/debian_version
existe: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/*release
archivos:Donde
debian|buntu|mint
hay 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
Verifique el DISTRIB-ID en el
lsb-release
archivo: 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 OpenSUSEverificar la existencia de alguno de los siguientes
/etc/fedora-release
y / o/etc/redhat-release
para RedHat o Fedora/etc/SuSE-release
para SuSe/etc/mandriva-release
para mandriva / mageiause un método similar al último debian:
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.
fuente
Compruebe la salida de:
y:
También puede buscar más comandos de paquete de palanca baja
rpm
para RedHat ydpkg
Debian.fuente
apt-get install lsb-release
si no está instalado.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.
fuente
uname -a
ycat /proc/version
( solo lectura para superusuarios ), en mi sincera opinión, son las únicas respuestas correctas a esta pregunta ya que el resto, comolsb_release
,/etc/issue
ocat /proc/sys/kernel/version
no 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/*version
ya 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):
dash
o verifique sish
está vinculado adash
(debería ser el valor predeterminado para ejecutar scripts)>/dev/null 2>&1 dpkg --version && { ... }
fuente