Centos 如何制作一个rpm规范,基于arch将库安装到/usr/lib xor/usr/lib64?

Centos 如何制作一个rpm规范,基于arch将库安装到/usr/lib xor/usr/lib64?,centos,rpm,rpm-spec,Centos,Rpm,Rpm Spec,我正在为centos编写RPM规范,如果arch为64位,它需要将共享库安装到/usr/lib64,否则需要安装到/usr/lib64?库的安装路径将由您创建的包的类型决定。这不是它应该如何工作的。不是内核类型决定了库的位置,而是库类型本身——64位。所以我们转到/usr/lib64,32位转到/usr/lib 您不能让一个RPM同时包含两种体系结构,结果应该是两个不同的RPM,如果我没有弄错的话,如果您使用%\u libdir,RPM宏应该为您解决这个问题。对于Redhat(和CentOS)6

我正在为centos编写RPM规范,如果arch为64位,它需要将共享库安装到/usr/lib64,否则需要安装到/usr/lib64?

库的安装路径将由您创建的包的类型决定。

这不是它应该如何工作的。不是内核类型决定了库的位置,而是库类型本身——64位。所以我们转到/usr/lib64,32位转到/usr/lib


您不能让一个RPM同时包含两种体系结构,结果应该是两个不同的RPM,如果我没有弄错的话,如果您使用%\u libdir,RPM宏应该为您解决这个问题。

对于Redhat(和CentOS)6,RPM宏似乎已经注入了-libdir=/usr/lib64

这是RH/CentOS 6通过RPM规范文件设置lib64的方式

在RH/CentOS 6上,在x86_64 arch类型的情况下,执行automake/configure不会(根据RH,也不会)将库前缀设置为/usr/lib64


对于RH/CentOS 7和更高版本,所有这些都已修复

我需要编写.spec文件来实现这一点,在.spec文件中,我需要为每个文件添加安装位置。如何指定?标准安装位置有宏。对于常规列表:。你的目标发行版可能会增加更多。如果你这样说的话,这似乎很明显:)%\u libdir耶!我在centos 6上这样做,%{u libdir}解析为/usr/lib