¿Cómo determinar la versión de CentOS?

125

¿Cómo determino la versión de un servidor CentOS sin acceso a ninguna interfaz gráfica? He intentado varios comandos:

# cat /proc/version
Linux version 2.6.18-128.el5 ([email protected])
(gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) …

# cat /etc/issue
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

pero cuál es correcto: 4.1.2-4 desde /proc/versiono 5.3 desde /etc/issue?

Philippe Blayo
fuente

Respuestas:

43

Como puede ver /etc/issue, está usando CentOS 5.3. (Dice Red Hat porque CentOS se basa en las fuentes RH, y algunas verificaciones de software /etc/issuepara identificar la distribución en uso; por lo tanto, fallarían si esto se cambiara a CentOS).

El 4.1.2-4en /proc/versionreferencia a la versión del gcccompilador de C utilizado para construir el núcleo.

Renan
fuente
3
Solo agregaré, lo que podría usar uname -a para detectar, si es compatible con 32 o 64 bits.
Fedir RYKHTIK
15
En CentOS 7, 'cat / etc / issue' produce gobbledygook: \S Kernel \r on an \m
Urhixidur
99
Respuesta correcta debería ser el uno por h3rrmiller ... cat /etc/*elease. /etc/issuea menudo se reemplaza por el MOTD / descargo de responsabilidad de una organización
batfastad
El /etc/issuearchivo muestra que es RHEL, no CentOS.
Michael Hampton
161

En casos como CentOS, generalmente se coloca la versión real /etc/*elease.

cat /etc/*elease

dado que este archivo generalmente contiene la versión de todo el sistema operativo menos el kernel (ya que puede elegir cuál cargar). Este archivo tendrá la misma información que / etc / issue pero con CentOS en lugar de RedHat

h3rrmiller
fuente
1
cat / etc / * release también funcionará, y no está omitiendo una carta de lo que está buscando;) porque no siempre es fácil adivinar elease. *puede ser nada, todos, uno o más elementos a la vez. Gracias, siempre olvidé la forma de obtener la versión de lanzamiento.
erm3nda
99
La razón por la que dejo la "R" desactivada es porque en algunos casos la "R" en "versión" está en mayúscula.
h3rrmiller 01 de
Solo para decir, hacer ls /etc/*eleaseen mi sistema da /etc/centos-release /etc/redhat-release /etc/system-release. Entonces, supongo por todo esto que los archivos de lanzamiento tienden a estar dentro /etc/*-release, pero posiblemente con algo de capitalización.
mwfearnley
2
Esto es correcto. Encuentro en muchos sitios que /etc/issuese ha sobrescrito con un MOTD o descargo de responsabilidad de seguridad para usar con la Banneropción ensshd_config
batfastad
cat /etc/*os-releasedebería producir resultados más específicos para CentOS y seguir funcionando en Ubuntu y otros.
webaholik
19

La forma más confiable de encontrar la versión PRINCIPAL de CentOS (5 o 6, etc.) es:

# rpm -q --queryformat '%{VERSION}' centos-release
6

Para RHEL haga esto:

# rpm -q --queryformat '%{RELEASE}' redhat-release-server | awk -F. '{print $1}'
7

La única forma portátil de encontrar una versión sin lsb_release u otras herramientas es:

# grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release
6.5
lzap
fuente
3
Se puede simplificar a:cat /etc/redhat-release | grep -o '[0-9]\.[0-9]'
Dave Johansen
1
+1 rpm -q centos-releasees la única forma en que todavía he encontrado para obtener la versión menor en versiones anteriores de CentOS5 donde / etc / redhat-release solo contiene la versión principal. Gracias por la pista.
PolyTekPatrick
1
Para obtener la versión principal:cat /etc/redhat-release | grep -oP '(?<= )[0-9]+(?=\.)'
Rockallite
1
Simplemente curioso: ¿por qué "cat file | grep pattern" en lugar de "grep pattern file"?
barrycarter
Correcto, excavé eso del historial de shell y pude corregir esto. Fijo.
lzap
13

Puede determinarlo simplemente llamando al siguiente comando:

hostnamectl

Que volverá como lo siguiente:

Static hostname: mgbcctli01
     Icon name: computer-vm
       Chassis: vm
    Machine ID: de14d80a0900427894dbcf6137e058e7
       Boot ID: 6865f9839c064bc9be32281d0f262cc8
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
   CPE OS Name: cpe:/o:centos:centos:7
        Kernel: Linux 3.10.0-514.2.2.el7.x86_64
  Architecture: x86-64

También puede usar rpmpara encontrar detalles sobre la versión de CentOS:

rpm --query centos-release

Que volverá en mi caso:

centos-release-7-3.1611.el7.centos.x86_64
hd84335
fuente
1
hostnamectlsolo devuelve el número de lanzamiento principal
fpmurphy
1
Así es, usando rpm, puede obtener una versión detallada
hd84335
6

La forma correcta es lsb_release -d.

gena2x
fuente
8
En CentOS 7: lsb_release: Comando no encontrado.
Dereckson
yum install redhat-lsb-core ...
gena2x
77
Claro, pero quise decir: no estoy seguro de que sea valioso tener que instalar un nuevo paquete para obtener la versión actual.
Dereckson
1
Si desea algún comando que pueda hacerlo en varias distribuciones, puede valer la pena instalarlo.
gena2x
5
# echo "I am running: `cat /etc/redhat-release` (`arch`)"

Produce lo siguiente:

I am running: CentOS release 6.7 (Final) (x86_64)
Ivan Novikov
fuente
3

Se puede encontrar en la ubicación /etc, dentro del archivo os-release. Entonces escriba:

cat /etc/os-release
Lijo George
fuente
¿Fue esto compatible con CentOS 5 o 6? Si no, esto es principalmente útil en el futuro ...
mattdm
CentOS lo hizo disponible a partir de CentOS 7: no he visto un backport.
webaholik
3

La mayor parte verdaderamente de forma fiable (y corto) para obtener la versión principal de cualquiera de CentOS o RHEL es:

rpm -E %{rhel}

Le dará un valor de 6, por ejemplo , 7o 8(ahora que RHEL 8 está fuera).

Danila Vershinin
fuente
2

Corre rpm --eval '%{centos_ver}'para obtener la versión MAYOR de centos.

tvorog
fuente