web-dev-qa-db-ja.com

ビルドがDebianベースかどうかを確認するにはどうすればよいですか?

私は、カスタム(小さい)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
9
Sparky1

uname -aを実行すると、システムに関する一般的な情報が得られます。また、apropos "package manager"または同様のキーワードを使用して、パッケージマネージャーの詳細を確認できます。 /etcxyz-releaseという名前のファイルを探します。ここで、xyzは実行中のディストリビューションです。

2
user13742

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が含まれていないようです

  • 次のいくつかの存在を確認します

    • RedHatまたはFedoraの場合は/etc/Fedora-releaseまたは/etc/redhat-release
    • SuSeの/etc/SuSE-release
    • mandriva/mageiaの/etc/mandriva-release
  • 後者のdebianと同様の方法を使用します。

    if [ "$(grep -Ei 'Fedora|redhat' /etc/*release)" ]; then
    ...
    

私がGoogle Chromeのアップデートcronから入手した最初の3つのポイントなので、詳細を調べるためにそれを調べることができます(パッケージマネージャーも決定します)


より広い範囲のOSについては、 SOに関するこの投稿 を読むと役立ちます。

7
Wilf

次の出力を確認します。

lsb_release -a

そして:

cat /etc/issue

RedHatの場合はrpm、Debianの場合はdpkgの低レバーパッケージコマンドを確認することもできます。

2
Michał Šrajer

組み込みデバイス(SoHoルーターなど)の場合、「デスクトップ/サーバー」ディストリビューションにはならないでしょう。デバイスのマニュアル、製造元のWebサイト(GPLライセンスコードのソースが必要)、およびWeb全体を調べてみます。

uname -acat /proc/versionスーパーユーザーは読み取り専用)は、正直なところ、lsb_releaseのように、この質問に対する唯一の正しい答えです。 /etc/issueまたはcat /proc/sys/kernel/version-すべてのシステムで使用できる/使用できない(公式のDebianディストリビューションでさえも)。また、/etc/*releases/etc/*versionは変更される可能性があるため、使用しないでください。後者は、すべてのDebianディストリビューションで利用できるわけではありません。

その他のオプションは次のとおりです(私の推奨ではありません)。

  • dashを確認するか、shdashにリンクされているかどうかを確認します(スクリプトを実行するためのデフォルトである必要があります)
  • >/dev/null 2>&1 dpkg --version && { ... }を実行してパッケージマネージャーを確認します
0
FifthAxiom