どのLinuxディストリビューションで/ etc / os-releaseの存在に依存できますか?


17

Linuxディストリビューションの名前とバージョンを決定する方法を見つけようとしています。これは、ほとんどの(理想的にはすべての)最新のディストリビューションで動作します。私が/etc/os-release試したディストリビューション(CentOS、Debian)に必要な情報が含まれていることに気付きましたが、その存在に依存することはどれほど安全ですか?などのコマンドにuname -aは実際には同じ情報が含まれておらずlsb_release、たとえば最小のCentOSには存在しないようです。

どのディストリビューションに付属しているの/etc/os-releaseかを正確に調べる簡単な方法はありますか?また、されて/etc/os-release含むことが保証NAMEVERSIONおよびPRETTY_NAMEフィールド?


1
確かにUbuntu、Debian、Arch。とにかく、そのようにディストリビューションを検出することを省略します。前回ディストリビューションを区別する必要があるときは、特定のパッケージマネージャーの存在を確認していました(つまり、pacman-> Arch、apt-getおよびno pacman-> UbuntuまたはDebian)。それはちょっとトリッキーなタスクであり、より良い解決策があるかどうかも知りたいです。
-ddnomad

1
なぜディストリビューション名を知る必要があるのか​​疑問に思います。これは、機能検出を実行する必要がある場合に、ブラウザー検出の場合のように聞こえます。
-xDaizu

@xDaizuリモートホストでスクリプトを実行して、それらに関するさまざまな情報を取得しています。
w128

@ w128その場合、動作するディストリビューションの静的な可変リストに依存する代わりに、「機能」(/ etc / os-release)が存在するかどうかを確認できませんか?
xDaizu

1
@xDaizuが「他の方法」に戻ると、サポートする必要のあるいくつかの主要なディストリビューションで信頼できる質問で提案された簡単なソリューションを保証できる場合、不要な作業が必要になる可能性があります。この場合。
w128

回答:


14

systemdを実行しているシステムには/etc/os-release、systemdの一部として指定されているが必要です。systemdのない一部のシステムにもあるかもしれません(たとえば、systemdはオプションですが/etc/os-release、すべての場合にインストールされるDebian 8 )。

仕様によると、すべてのフィールドはオプションであり、いくつかは、デフォルト値を持っている(のための「Linux」NAMEPRETTY_NAME)。

あなたは/etc/os-release発表でより多くの背景を見つけるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.