RHEL/RPMベースの展開検出

RHEL/RPMベースの展開検出

RHEL / RPMベースのディストリビューションで実行されていることを検出するスクリプトを作成しようとしています。

dpkg私は2つを同時にインストールするように構成された奇妙なシステムを見つけました。rpmwhich rpm

私はこれを試みます:

if [[ "$(cat /etc/*[_-][rv]e[lr]*)" == (CentOS|Fedora) ]]; then
  #...
fi

ただし、これを行うには、すべてのRHEL / RPMベースのディストリビューションの名前を知る必要があります。

答え1

目標がrpmシステムにパッケージマネージャを持っているかどうかを検索することであれば、RPMパッケージデータベースが空でないことは良い経験的な方法です。

if [ -n "$(rpm -qa)" ] 2>/dev/null; then
  echo "This looks like an rpm-based system"
else
  echo "Either there is no rpm command, or the rpm package database has no entries"
fi

答え2

このファイルには、ローカルオペレーティングシステムが派生した基本リリースを識別する/etc/os-releaseこのフィールドが含まれています。以下が含まれてID_LIKE=いることを確認できます。rhelgrep

cat /etc/os-release | grep ID_LIKE= | grep rhel

このファイルに関する追加文書:無料デスクトップ

答え3

/etc/redhat-release または /etc/fedora-release があることを確認します。

答え4

次の出力を確認できます/proc/version

$ cat /proc/version 
Linux version 3.14.8-200.fc20.x86_64 ([email protected]) 
(gcc version 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) ) #1 SMP Mon Jun 16 21:57:53 UTC 2014

例:

$ grep -q 'Red Hat' /proc/version && echo "Redhat based distro"
Redhat based distro

関連情報