Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用rpmbuild构建32位和64位的组合包_Linux_Rpm - Fatal编程技术网

Linux 使用rpmbuild构建32位和64位的组合包

Linux 使用rpmbuild构建32位和64位的组合包,linux,rpm,Linux,Rpm,我有一个32位和64位Linux平台的组合包 在64位系统上,所有文件都将安装在spec文件的%files部分中提到的任何文件中。(32位和64位文件)。 此外,在32位系统上,所有文件都会安装在spec文件的%files部分中提到的任何文件中,但64位文件会在安装后删除(我编写了一个删除代码) 问题是,在32位计算机上,当查询包管理器时,它会显示所有文件,以显示包安装的文件。所以64位文件显示在32位机器上。(例如rpm-ql) 有什么好方法可以删除32位机器上的64位文件吗?没有,没有简单的

我有一个32位和64位Linux平台的组合包

在64位系统上,所有文件都将安装在spec文件的%files部分中提到的任何文件中。(32位和64位文件)。 此外,在32位系统上,所有文件都会安装在spec文件的%files部分中提到的任何文件中,但64位文件会在安装后删除(我编写了一个删除代码)

问题是,在32位计算机上,当查询包管理器时,它会显示所有文件,以显示包安装的文件。所以64位文件显示在32位机器上。(例如rpm-ql)


有什么好方法可以删除32位机器上的64位文件吗?

没有,没有简单的方法。RPM被设计为将32位和64位机器作为独立的体系结构,这是有充分理由的您应该构建两个RPM。


通过自行删除刚刚安装在
%post
部分中的文件,您正在RPM数据库中创建错误。正如您所注意到的,
rpm-ql
列出了存在的文件(根据数据库,它们应该存在)。另一个例子是,现在任何
rpm-V
rpm验证都将被破坏-您故意擦除的文件将被系统视为丢失
rpm-Va
(验证所有软件包)是许多人在尝试操作系统升级之前都会做的事情,用户会认为他们需要重新安装您的rpm。

是否有任何方法更新rpm DB中已删除的软件包文件,以便在使用rpm-ql查询时只能获得可用的文件。您能解释一下rpm-ql的价值吗spec文件中的“%ifarch”宏。要构建包,必须传递“-target”(比如i386)到rpmbuild cas参数。如果是,则%ifarch的值将变为i386。否则%ifarch是我们在其上构建包的计算机的体系结构,或者是我们在其上安装包的计算机的体系结构?如果您在构建具有buildarch=
noarch
的RPM呢?解释lan的RPM呢像Perl这样的语言?你还需要构建一个32位和64位版本吗?那么
noarch
是要避免的吗?