RPM标头的Lead.archnum变量是否可用于任何目的?

时间:2016-09-09 17:33:47

标签: rpm rpmbuild

我正在对Redline rpm package进行一些更改,并且已经提出了有关指定体系结构的问题。该体系结构被指定为rpm文件名中的字符串,例如xyz-1.2.3-noarch.rpmxyz.1.2.3-i386.rpm,其中前者适用于没有二进制组件的包,例如java包,python包,脚本文件集等,后者适用于包含的包用于intel 386处理器的本机代码库。

这一切都很清楚。

但是,rpm文件的标头中还有一个名为Lead的内部值,此部分包含一个名为archnum的短成员。这是here所描述的:我们在其中看到了以下描述的结构

struct rpmlead {
    unsigned char magic[4];
    unsigned char major, minor;
    short type;
    short archnum;
    char name[66];
    short osnum;
    short signature_type;
    char reserved[16];
} ;

此处不会描述archnum中应放置的值。

您可以找到old and somewhat cryptic reference to this subject here。 在列出文档编写时正在使用的体系结构之后,它继续说:

  

这个清单几乎肯定会改变。对于最新的列表,   请参考文件/ usr / lib / rpmrc。它包含使用的信息   内部由RPM,包括架构和等效的列表   代号。

该评论已过时,因为rpmrc文件位于/usr/lib/rpm/rpmrc的更现代系统上,在这里我们确实找到了许多架构,一些代码和兼容性指示等。

这一切都很模糊。没有一个权威的列表,其中哪些架构应该使用哪些代码编号以及获取最新列表的参考资料"从你自己系统上的文件看起来相当古怪。

这提出了一个问题:rpm安装程序如何处理这些结构?谷歌搜索

  

archnum rpm

我发现了一些点击,让我看到了显示提到archnum的源代码的页面。

这将包括http://rpm.org/api/4.4.2.2/rpmlead_8c-source.html,其中readLead()和writeLead()方法是可见的,其中包含读取和写入这些值的代码。此源文件的其他版本还有许多其他链接,所有这些链接都具有类似的代码。还有指向rpmParse.c和定义上述结构的头文件的链接。

我在此搜索中找不到的是检查此值并根据它执行任何操作的任何代码。

所以我的问题。是Lead.archnum今天具有任何意义的价值,还是某些早期关于如何处理这些包的概念的残留痕迹,没有任何当前意义?

这对我很重要,因为我希望Redline-RPM软件包中的任何更改都是正确的。并且不完全清楚这实际上存在多严重的问题。 我怀疑lead.archnum不再重要,我希望有人能够证实这一点。

更新: archnum可能不再重要的另一个线索是rpmrc文件的这一点(来自rpm v.4.8.0安装):

#############################################################
# Canonical arch names and numbers

arch_canon:     athlon: athlon  1
arch_canon:     geode:  geode   1
arch_canon:     pentium4:       pentium4        1
arch_canon:     pentium3:       pentium3        1
arch_canon:     i686:   i686    1
arch_canon:     i586:   i586    1
arch_canon:     i486:   i486    1
arch_canon:     i386:   i386    1
arch_canon:     x86_64: x86_64  1
arch_canon:     amd64:  amd64   1
arch_canon:     ia32e:  ia32e   1
arch_canon:     em64t:  em64t   1

x86_64架构使用与i386相同的代码,尽管它们肯定不一样!

1 个答案:

答案 0 :(得分:2)

rpm引线是一个废弃的数据结构" 1997年(参见"最高转速"附录。

在本世纪的大部分时间里,领先的拱门不会用于任何目的。