Linux 如何确定编译rpm的操作系统版本?

Linux 如何确定编译rpm的操作系统版本?,linux,rpm,Linux,Rpm,如何确定为其编译rpm数据包的Linux版本(发行版)?没有这种方法可以根据文件内容确定操作系统名称和版本 通常,RPM文件名包含所有这些详细信息。根据RPM文件命名约定,文件名必须如下所示: name-version-release.architecture.rpm 请查看此详细信息。我相信这就是您想要的 $ rpm -q gnome-speech --queryformat '%10{NAME} %20{VENDOR} %20{RELEASE} %20{ARCH}\n' gnome

如何确定为其编译rpm数据包的Linux版本(发行版)?

没有这种方法可以根据文件内容确定操作系统名称和版本

通常,RPM文件名包含所有这些详细信息。根据RPM文件命名约定,文件名必须如下所示:

name-version-release.architecture.rpm

请查看此详细信息。

我相信这就是您想要的

$ rpm -q gnome-speech --queryformat '%10{NAME} %20{VENDOR} %20{RELEASE} %20{ARCH}\n'
    gnome-speech Red Hat, Inc.                1.fc6                 i386

$ rpm -q hwdata --queryformat '%10{NAME} %20{VENDOR} %20{RELEASE} %20{ARCH}\n'
    hwdata       Red Hat, Inc.                1.el5               noarch
您可以使用queryformat查找许多有趣的内容,请参阅以获取参考。

有关的常规参考。

您可以使用
rpm-q
从rpm中的OS标记获取OS数据,但需要指定查询格式,因为它不在正常的
-i
输出中。您可以使用
-p
引用特定的RPM文件进行测试


$rpm-q-p myfiletotest.rpm--查询格式“%10{NAME}%10{OS}%10{VERSION}%10{RELEASE}%10{ARCH}\n
mypackage linux 2.2.10 1_14.el6 x86_64


OS名称是此输出中的第二个字段。RPM并不区分操作系统的不同版本;您将只看到“linux”、“aix”、“darwin”等,而不是“centos-6”。

您是指编程方式还是一般方式?它通常在名称和次要版本号中,例如.el5。对于RHEL5或兼容的.fc13。对于Fedora 13等,它也可能在签名密钥名称中(例如“CentOS 5签名密钥”或类似名称)。除此之外,我认为它不会被编码。不过,这些都不是操作系统的名称和版本?实际上,它通常是在release字段中设置的,例如release=1.el5,但该页面上没有描述。我认为%{OS}标记就是想要的,所以这可能更好
rpm-q-p myfiletotest.rpm--queryformat'%10{NAME}%10{OS}%10{VERSION}%10{RELEASE}%10{ARCH}\n'