私は、カスタム(小さい)Linuxビルドを搭載したボックスで作業を開始しています。これがDebianベースのビルドかRed Hatベースのビルドかを確認するにはどうすればよいですか?
これは私がこれまでに知っていることです:
$ 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
uname -a
を実行すると、システムに関する一般的な情報が得られます。また、apropos "package manager"
または同様のキーワードを使用して、パッケージマネージャーの詳細を確認できます。 /etc
でxyz-release
という名前のファイルを探します。ここで、xyz
は実行中のディストリビューションです。
Debianシステムのテストでは、/etc/debian_version
が存在するかどうかを確認できます。
if [ -f "/etc/debian_version" ]; then
# do stuff
fi
Debianとそれに基づくシステム(Ubuntuとその派生物を含む)が含まれている必要がありますが、ない場合もあります。この場合は、/etc/*release
ファイルを確認できます。
if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
# do stuff
fi
ここで、debian|buntu|mint
は、検索するディストリビューション名のリストです(大文字と小文字は区別されません)- here からの一般的な派生物のアイデアがありますが、Ubuntuのようなdebian派生物 独自の派生物があります =。
RedHatベースのシステムの場合、派生物はより広い範囲のファイルを使用し、lsb-releaseがインストールされていない可能性があるため、次の方法を適用できます。
からリリース名を取得
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
lsb-release
ファイルのDISTRIB-IDを確認してください-「最近のシステムではおそらく不要なフォールバックメソッド」。また、このファイルはFedoraでは見当たらず、OpenSUSEでDISTRIB_IDが含まれていないようです
次のいくつかの存在を確認します
/etc/Fedora-release
または/etc/redhat-release
/etc/SuSE-release
/etc/mandriva-release
後者のdebianと同様の方法を使用します。
if [ "$(grep -Ei 'Fedora|redhat' /etc/*release)" ]; then
...
私がGoogle Chromeのアップデートcronから入手した最初の3つのポイントなので、詳細を調べるためにそれを調べることができます(パッケージマネージャーも決定します)
より広い範囲のOSについては、 SOに関するこの投稿 を読むと役立ちます。
次の出力を確認します。
lsb_release -a
そして:
cat /etc/issue
RedHatの場合はrpm
、Debianの場合はdpkg
の低レバーパッケージコマンドを確認することもできます。
組み込みデバイス(SoHoルーターなど)の場合、「デスクトップ/サーバー」ディストリビューションにはならないでしょう。デバイスのマニュアル、製造元のWebサイト(GPLライセンスコードのソースが必要)、およびWeb全体を調べてみます。
uname -a
とcat /proc/version
(スーパーユーザーは読み取り専用)は、正直なところ、lsb_release
のように、この質問に対する唯一の正しい答えです。 /etc/issue
またはcat /proc/sys/kernel/version
-すべてのシステムで使用できる/使用できない(公式のDebianディストリビューションでさえも)。また、/etc/*releases
、/etc/*version
は変更される可能性があるため、使用しないでください。後者は、すべてのDebianディストリビューションで利用できるわけではありません。
その他のオプションは次のとおりです(私の推奨ではありません)。
dash
を確認するか、sh
がdash
にリンクされているかどうかを確認します(スクリプトを実行するためのデフォルトである必要があります)>/dev/null 2>&1 dpkg --version && { ... }
を実行してパッケージマネージャーを確認します