سؤال ما هو إصدار RHEL الذي أستخدمه؟


من shell ومن دون امتيازات الجذر ، كيف يمكنني تحديد إصدار Red Hat Enterprise Linux الذي أقوم بتشغيله؟

من الناحية المثالية ، أود الحصول على إصدار الإصدار الرئيسي والثانوي ، على سبيل المثال RHEL 4.0 أو RHEL 5.1 ، إلخ.


142
2017-12-01 01:59


الأصل




الأجوبة:


يمكنك استعمال ال lsb_release الأمر على توزيعات Linux المختلفة:

lsb_release -i -r 

سيخبرك ذلك بالتوزيع والإصدار ويكون أكثر دقة من الوصول إلى الملفات التي ربما تكون قد تم تعديلها من قبل المشرف أو حزمة البرامج. وكذلك العمل عبر توزيعات متعددة.

بالنسبة إلى RHEL ، يجب عليك استخدام:

cat /etc/redhat-release

144
2017-12-01 06:47



الأمر لم يتم العثور على مربع بلدي CentOS 5.4 :( - gbjbaanb
gbjbaanb: هذا غريب أنا اختباره على تثبيت حد أدنى 5.4 جديدة وأنها عملت على ما يرام ... - Zypher
lsb_release -i -r -bash: lsb_release: الأمر غير موجود. ومع ذلك، cat /etc/redhat-release Red Hat Enterprise Linux Server Release 5.6 (Tikanga) - Tom
فقط للسجل: لا يعمل على تثبيت الحد الأدنى 6.5 RHEL. الأمر lsb_release في أي مكان يمكن العثور عليه. - sborsky
lsb_release ليست حزمة خفيفة الوزن ، تسحب في CUPS لتوفير '/ usr / bin / lp' ، والتي تسحب بعض goop الترجمة pdf ، والتي تسحب بعض مكتبات التقديم ... - Jens Timmerman


يمكنك الاطلاع على محتويات / etc / redhat-release ، والتي ستبدو شيئًا كالتالي:

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

تختلف محتويات نظام RHEL الفعلي. هذه التقنية تعمل على جميع مشتقات RedHat ، بما في ذلك CentOS و Fedora وغيرها.


140
2017-12-01 02:13



هذه هي الإجابة الأنسب على السؤال. - fsoppelsa
lsb_release هو أول شيء يجب تجربته ، ولكن نظرًا لأنه قد لا يتم تثبيت الملفات عند النظر إليها ، فستكون خطة جيدة. - chicks
@ chicks بالنظر إلى أن السؤال يسأل عن اختبار لأنظمة Redhat ، ولا يتم تثبيت lsb_release بشكل افتراضي على أنظمة redhat و / etc / redhat-release ، فمن الواضح أن lsb_release ليس أول شيء يجب تجربته! - bye
bye هذا هو أول شيء يجب تجربته (على الأقل في رأيي) ، فأنت تحاول دائمًا تجربة الأشياء التي يجب أن تكون شائعة في جميع التوزيعات أولاً ، ثم تقوم فقط بالتبديل إلى حلول خاصة بالتوزيع. - Dennis Nolte


أنا أفضل استخدام ملف / etc / issue.

$ cat /etc/issue

لقد رأيت العديد من المواقف التي تم فيها تعديل / etc / redhat-release لتلبية متطلبات توافق البرامج (Dell أو وكلاء إدارة HP ، على سبيل المثال).


24
2017-12-01 05:35



/etc/issue كما يعمل أيضًا على أنظمة تشغيل أخرى ، مثل Debian & Ubuntu ، ويعمل مع أنظمة تشغيل Linux التي لا تتوافق مع قاعدة معايير Linux ، وأنظمة تشغيل خفيفة الوزن لا تحتوي على lsb * أدوات مساعدة مثبتة. - Stefan Lasiewski
هذا غير موثوق. كما يبدو /etc/issue من المفترض أن يتم تحليلها agetty، والتي تحل محل تسلسل الهروب مع المعلومات المناسبة. إذا كنت فقط cat قد تكون النتيجة محبطة. على فيدورا ، يحصل المرء Fedora release 20 (Heisenbug) Kernel \r on an \m (\l)، والتي تخبرك شيئا ولكن على RHEL7 ، واحد يحصل فقط \S Kernel \r on an \m. - David Tonhofer
لاحظ أن /etc/issue قد يتم استبداله من قبل المسؤول المحلي وبالتالي لا يعد مصدرا موثوقا للمعلومات. - larsks


الطريقة الأكثر موثوقية متى  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" يتم تنفيذها):

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

استعمال sed/cut والنص الآخر الذي يتلاعب بأدوات UNIX للحصول على ما تريد.


12
2018-06-05 11:15



يبدو أن هذا يعمل ، بشكل أكثر عمومية: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl هو لـ Linux العلمي ؛ إذا كنت تعرف الاسم الصحيح لإعادة بناء RHEL أخرى ربما التعليق أدناه. تحذير - لم يتم اختباره على نطاق واسع. - Dan Pritts
نعم شكرا ، ملاحظة واحدة: لا يعمل مع RHEL Worstation. - lzap
ملاحظة واحدة - وهذا يعمل بشكل أبطأ من إعراب / etc / foo-release. - Dan Pritts
أو rpm -qa | grep release هو أسهل - warren


إذا افترضنا أنه إصدار Red Hat (وليس Centos):

rpm -q redhat-release

أو مجرد تشغيل:

uname -r

وتعيين الإخراج. 2.6.9 حبات هي RHEL4 ، 2.6.18 حبات هي RHEL5. إذا لزم الأمر ، يمكنك تعيين الإصدار الكامل لإصدارات التحديث المحددة من Red Hat (أي 2.6.9-89 هو RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release فقط يعود package redhat-release is not installed بالنسبة لي و uname -r فقط يقول لي الافراج عن نواة. - Mark Booth
أوه! والآن بعد مرور الوقت ، ماذا سيكون RHEL6؟ RHEL7؟ همهمة ... هنا هي الإجابات: access.redhat.com/articles/3078#RHEL7 - mika


أنا تماما مثل استخدام /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)

1
2018-01-23 20:28



مثيرة للاهتمام ومفيدة. لسوء الحظ ، لم يكن موجودًا على RHEL6 ، لذا فإن قيمته محدودة في الوقت الحالي. - Dan Pritts


إذا كنت ترغب فقط في الحصول على أرقام الإصدارات ، فالأمر التالي قصير وبسيط كما يمكنني الحصول عليه.

تم اختباره على 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

0
2018-04-06 00:44





الوصول المتأخر إلى هذا ، ولكن كان لدي متعة في محاولة لمعرفة إصدار RHEL على العديد من العقد البعيدة. لذا ، إذا كان لديك مجموعة من الخوادم التي تستخدم كلمة المرور نفسها (أعلم ، أعلم ...) هنا سريع وساخن للتحقق من إصدار RedHat:

إنشاء برنامج نصي متوقع

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 ~]#

...

0
2017-10-05 12:31



إذا كنت ستفعل أشياء بعيدة على العديد من الأجهزة ، فإنني أوصي بشدة باستخدام Ansible بدلاً من البرامج النصية bash اليدوية. - Neil Mayhew
كما أوصي بعدم تمكين تسجيل الدخول الجذر عبر ssh - Neil Mayhew