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 -siRespuestas:
La ejecución
uname -adeberí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/etcun archivo llamadoxyz-releasedondexyzdebería estar cualquier distribución que se esté ejecutando.fuente
Para probar los sistemas Debian, puede verificar si
/etc/debian_versionexiste: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: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
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 OpenSUSEverificar la existencia de alguno de los siguientes
/etc/fedora-releasey / o/etc/redhat-releasepara RedHat o Fedora/etc/SuSE-releasepara SuSe/etc/mandriva-releasepara 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
rpmpara RedHat ydpkgDebian.fuente
apt-get install lsb-releasesi 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 -aycat /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/issueocat /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):
dasho verifique sishestá vinculado adash(debería ser el valor predeterminado para ejecutar scripts)>/dev/null 2>&1 dpkg --version && { ... }fuente