0

現在のマシンが Ubuntu を実行しているかどうか、どのアーキテクチャを使用しているか、実行している Ubuntu のバージョンをプログラムで判断する最良の方法は何ですか?

1 つの方法は、の出力をスキャンしuname -aて、適切なカーネル バージョンとアーキテクチャを確認することです。

/etc/apt/sources.list別の方法は、Ubuntu ディストリビューション キーワード (eq precisequantalなど)をスキャンすることです。

より良い方法はありますか?

4

4 に答える 4

4

以外 uname -aにも、現在のディストリビューションに関する情報を取得する方法がいくつかあります。

  1. 最善の方法は、リリース ファイルを解析することです。それらは通常、-releaseまたはで終わり、_releaseにあり/etcます。次のコマンドはそれらをすべて見つけます。

    ls /etc/*{-,_}release
    
    • Ubuntu の使用lsb_release
    • Redhat/Fedora の使用redhat-release
    • Slackware の使用slackware-release
    • Gentoo の使用gentoo-release

Debian の対応ファイルは/etc/debian_version. ただし、このファイルは Ubuntu システムにも (多少誤解を招きますが、正当な理由で) 存在します。

  1. 別のファイルは/etc/issueマシンの識別に使用され、ログイン前のプロンプトを使用して現在の配布情報を確認できます。

  2. システム情報も見つかり/proc/versionます。

    cat /proc/version
    
于 2013-01-12T11:18:46.150 に答える
3

1 つの方法は、una​​me -a の出力をスキャンして、適切なカーネル バージョンとアーキテクチャを確認することです。

しかし、そのようなツールの出力はエレガントではないため、通常は解析したくありません (いわばハックと見なされます)。

ただし、uname()関数/syscallを使用できます。

#include <sys/utsname.h>

struct utsname sysinfo;
if (uname(&sysinfo) < 0) {
    printf("Cannot determine OS\n");
    exit(-1);
}

printf("Operating system name: %s\n", sysinfo.sysname);
于 2013-01-12T11:16:20.957 に答える
2

ライブラリは、オペレーティング システムの中立として使用できます。解決策はlsbで、あなたの質問はlsb question を使用することに近づきました。

于 2013-01-12T11:33:49.703 に答える
0

Afaik ほとんどの Linux ディストリビューションも/etc/issue. その中のテキストはもちろん、管理者が別のログイン メッセージを表示するように変更している可能性があります。

フェドラからのサンプル:

Fedora release 17 (Beefy Miracle)
Kernel \r on an \m (\l)

Ubuntu からのサンプル:

Ubuntu 11.04 \n \l
于 2013-01-12T11:23:23.637 に答える