मैं किस संस्करण का उपयोग कर रहा हूं?


151

शेल से और रूट विशेषाधिकारों के बिना, मैं यह कैसे निर्धारित कर सकता हूं कि मैं Red Hat Enterprise Linux संस्करण क्या चला रहा हूं?

आदर्श रूप से, मैं मुख्य और मामूली दोनों रिलीज संस्करण प्राप्त करना चाहता हूं, उदाहरण के लिए आरएचईएल 4.0 या आरएचईएल 5.1, आदि।

जवाबों:


154

आप lsb_releaseविभिन्न लिनक्स वितरण पर कमांड का उपयोग कर सकते हैं :

lsb_release -i -r 

यह आपको वितरण और संस्करण बताएगा और उन फ़ाइलों तक पहुँचने से थोड़ा अधिक सटीक है जो व्यवस्थापक या किसी सॉफ़्टवेयर पैकेज द्वारा संशोधित नहीं किए गए हैं या हो सकते हैं। साथ ही साथ कई विकृतियों पर काम कर रहा है।

RHEL के लिए, आपको उपयोग करना चाहिए:

cat /etc/redhat-release

5
मेरे CentOS 5.4 बॉक्स पर कमांड नहीं मिला :(
gbjbaanb

@ जीबीजैनब: यह अजीब है मैंने इसे एक ताजे 5.4 न्यूनतम इंस्टॉल पर परीक्षण किया और यह ठीक काम किया ...
ज़ीरफ़र

26
lsb_release -i -r-बाश: lsb_release: कमांड नहीं मिला। हालाँकि, cat /etc/redhat-releaseRed Hat Enterprise Linux सर्वर रिलीज़ 5.6 (टिकंगा)
टॉम

7
सिर्फ रिकॉर्ड के लिए: RHEL 6.5 न्यूनतम इंस्टॉल पर काम नहीं करता है। कमांड lsb_release कहीं नहीं पाया जाता है।
sborsky

4
lsb_release एक हल्का पैकेज नहीं है, यह CUPS में '/ usr / bin / lp' प्रदान करने के लिए खींचता है, जो कुछ pdf ट्रांसलेशन goop में खींचता है, जो कुछ रेंडरिंग लाइब्रेरी में खींचता है ...
Jens Timmerman 21:14 '

142

आप / etc / redhat-release की सामग्री को देख सकते हैं, जो कुछ इस तरह दिखाई देगी:

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)

सामग्री एक वास्तविक आरएचईएल प्रणाली के लिए अलग हैं। यह तकनीक सभी रेडहैट डेरिवेटिव पर काम करती है, जिसमें CentOS, Fedora और अन्य शामिल हैं।


14
यह प्रश्न का सबसे उपयुक्त उत्तर है।
fsoppelsa

lsb_releaseकोशिश करने के लिए पहली बात है, लेकिन जब से फ़ाइलों को देखने के लिए स्थापित नहीं किया जा सकता है एक अच्छी योजना बी है
लड़कियों

1
@chicks यह देखते हुए कि प्रश्न Redhat सिस्टम के लिए एक परीक्षण के लिए पूछता है, और lsb_release redhat सिस्टम पर डिफ़ॉल्ट रूप से स्थापित नहीं है और / etc / redhat-release है, तो lsb_release स्पष्ट रूप से कोशिश करने वाली पहली चीज़ नहीं है!
बाय

@ यह पहली कोशिश है (कम से कम मेरी राय में), आप हमेशा उन चीजों की कोशिश करते हैं जो पहले सभी वितरणों पर आम होनी चाहिए, फिर केवल आप वितरण-विशिष्ट समाधानों पर स्विच करते हैं।
डेनिस नोल्टे

25

मैं / etc / इश्यू फ़ाइल का उपयोग करना पसंद करता हूं।

$ cat /etc/issue

मैंने कई स्थितियों को देखा है जहां / etc / redhat-release को सॉफ्टवेयर संगतता आवश्यकताओं (डेल या एचपी के प्रबंधन एजेंटों, उदाहरण के लिए) को पूरा करने के लिए संशोधित किया गया है।


1
/etc/issueअन्य OSes पर भी काम करता है, जैसे कि डेबियन और Ubuntu, और लिनक्स OSes के साथ काम करता है जो Linux मानक बेस के अनुरूप नहीं है, और हल्के OSs जिसमें lsb * उपयोगिताओं स्थापित नहीं हैं।
स्टीफन लासिवस्की

5
यह विश्वसनीय नहीं है। स्पष्ट /etc/issueरूप से एगेटी द्वारा पार्स करने का मतलब है , जो उचित जानकारी के साथ भागने के क्रम को बदल देता है। यदि आप catइसे करते हैं, तो परिणाम बहुत कम हो सकता है। फेडोरा पर, एक मिलता है Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), जो आपको कुछ बताता है, लेकिन आरएचईएल 7 पर, एक बस मिलता है \S Kernel \r on an \m
डेविड टोनहोफर

ध्यान दें कि /etc/issueस्थानीय व्यवस्थापक द्वारा प्रतिस्थापित किया जा सकता है और इसलिए यह जानकारी का एक विश्वसनीय स्रोत नहीं है।
लार्क्स

13

स्थापित नहीं होने पर सबसे विश्वसनीय तरीका है:lsb_release

# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server

# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6

न्यूनतम इंस्टॉल पर, lsb_releaseगायब है।

रेड हैट क्लोन के साथ यह काम करने के लिए भी (क्रेडिट टिप्पणियों में जाता है):

# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')

या, एक एकल आदेश के रूप में (दो "आरपीएम" निष्पादित होने के बजाय):

# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'

यूनिक्स उपकरणों का उपयोग करने के लिए sed/ cutऔर अन्य पाठ में हेरफेर करें जो आप चाहते हैं।


2
यह काम करने लगता है, अधिक उदारता से: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl वैज्ञानिक लिनक्स के लिए है; यदि आप अन्य आरएचईएल के लिए सही नाम जानते हैं तो शायद नीचे टिप्पणी करें। चेतावनी - बड़े पैमाने पर परीक्षण नहीं किया गया।
डेन प्रिट्स

1
हाँ धन्यवाद, एक नोट: RHEL Worstation के साथ काम नहीं करता है।
lzap

एक नोट - यह पार्सिंग / आदि / फू-रिलीज की तुलना में बहुत धीमा चलता है।
दान प्रिट्स

1
या rpm -qa | grep releaseइससे भी आसान है
वारेन

6

इसे सही मायने में रेड हैट रिलीज़ माना जाता है (सेंटोस नहीं):

rpm -q redhat-release

या बस चलाएं:

uname -r

और आउटपुट को मैप करें। 2.6.9 गुठली RHEL4, 2.6.18 गुठली RHEL5 हैं। यदि आवश्यक हो, तो आप Red Hat (यानी 2.6.9-89 आरएचईएल 5 यू 4 से विशिष्ट अपडेट रिलीज के लिए पूर्ण संस्करण को मैप कर सकते हैं)।


1
rpm -q redhat-releaseसिर्फ package redhat-release is not installedमेरे लिए लौटता है, और uname -rमुझे कर्नेल रिलीज़ बताता है।
मार्क बूथ

ओह! और अब वह समय बीत चुका है, तो RHEL6 क्या होगा? RHEL7? हम ... यहाँ उत्तर दिए गए हैं: access.redhat.com/articles/3078#RHEL7
mika

3

मैं पसंद करता हूँ hostnamectl:

$ hostnamectl
   Static hostname: xxxxxx.xxx.xxx
         Icon name: computer-server
           Chassis: server
        Machine ID: 3e3038756eaf4c5c954ec3d24f35b13f
           Boot ID: 958452e0088b4191a4ea676ebc90403b
  Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
            Kernel: Linux 3.10.0-862.3.3.el7.x86_64
      Architecture: x86-64

2

मुझे /etc/os-releaseफ़ाइल का उपयोग करना काफी पसंद है , जो रिलीज़ RPM में है:

# yum whatprovides /etc/os-release 
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: dl.za.jsdaav.net
 * extras: dl.za.jsdaav.net
 * updates: dl.za.jsdaav.net
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : base
Matched from:
Filename    : /etc/os-release

centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : @anaconda
Matched from:
Filename    : /etc/os-release

इस फाइल को स्क्रिप्ट्स में दिया जा सकता है, जैसे:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)

रोचक, उपयोगी। दुर्भाग्य से, फिलहाल RHEL6 पर मौजूद नहीं है, इसलिए फिलहाल इसका सीमित मूल्य है।
दान प्रीत

1

यदि आप केवल संस्करण संख्याएँ प्राप्त करना चाहते हैं तो निम्न के रूप में छोटा और सरल है जैसा कि मुझे मिल सकता है।

Rhel 6.7, rhel 7.2, debian 8.3 और ubuntu 14.04 पर परीक्षण किया गया:

lsb_release -s -r | cut -d '.' -f 1

एक व्यावहारिक उदाहरण के लिए, मान लें कि आप वितरण के प्रमुख और लघु संस्करण के लिए परीक्षण करना चाहते हैं और उस पर आधारित चीजें करना चाहते हैं:

#!/bin/bash

major=$(lsb_release -s -r | cut -d '.' -f 1)
minor=$(lsb_release -s -r | cut -d '.' -f 2)

if (( "$major" >= 7 ))
then
  echo "Do stuff, OS major version is $major"
  echo "OS minor version is $minor"
else
  echo "Do other things"
  echo "Your version is $major.$minor"
fi

1

इसमें देर से आगमन हुआ, लेकिन मुझे कई रिमोट नोड्स पर आरएचईएल संस्करण का पता लगाने में मज़ा आया। इसलिए, यदि आपके पास उसी पासवर्ड का उपयोग करने वाले सर्वर का एक बैच है (मुझे पता है, मुझे पता है ...) यहां रेडहैट संस्करण की जांच करने के लिए एक त्वरित और गंदा है:

एक उम्मीद की स्क्रिप्ट बनाएँ

vim server-version.sh

कई दूरस्थ होस्ट पर प्रमुख RedHat संस्करण की जाँच करने के लिए स्क्रिप्ट की अपेक्षा करें

#!/usr/bin/expect
log_user 0
spawn ssh -l root [lindex $argv 0]
expect "assword:"
send "sUp3rS3cr3tP4ssW0rd^\r"
expect "# "
log_user 1
send "cat /etc/redhat-release\r"
expect "*#"
log_user 0
send "exit\n"

अपने सभी नोड्स के लिए स्क्रिप्ट चलाएँ

[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;

उत्पादन

server1: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server1 ~]#

server2: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server2 ~]#

...

यदि आप बहुत सारी मशीनों पर रिमोट का सामान करने जा रहे हैं, तो मैं दृढ़ता से हाथ से लुढ़कने वाली बैश स्क्रिप्ट के बजाय Ansible का उपयोग करने की सलाह देता हूं।
नील मैय्यू

मैं यह भी सलाह देता हूं कि ssh
Neil Mayhew
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.