-->

你如何让这个cpack并不需要的库添加到RPM?(How do you make it so tha

2019-08-16 16:41发布

我想我们在工作中构建系统转换到cmake并遇到了与它生成(通过cpack)RPM包一个有趣的问题:它会自动添加所有它认为你的RPM有其所需的列表之间的依赖关系库。

在一般情况下,这是伟大的,但对我来说,这是灾难性的。 不幸的是,我们建立最终的开发包越来越安装与使用rpm从系统中的一个单独的RPM数据库安装它们一个我们本土的工具。 这是愚蠢的,但我不能改变它。 这意味着所有,任何正常库将依赖(如libc的或的libpthread)的系统库都没有在正在与我们的开发包使用的RPM数据库。 所以,如果我们的开发包之一的RPM列出为被需要的系统库,那么我们就可以不安装它,因为转速会认为他们没有安装(因为他们在正常的数据库正在上市,而不是一个,它的被告知我们的安装包)时使用。 我们目前建立的东西处理这只是罚款,因为它没有列出任何系统库中的RPM依赖关系,但cpack自动填充所需的库的RPM的列表和使系统库在那里。 我需要一种方法来这样做停止它。

我试着设置CPACK_RPM_PACKAGE_REQUIRES"" ,但没有任何效果。 的RPM cpack产生仍与列为被要求的系统库结束。 所有我能想到在这一点上做的是复制RPM cpack发生器和劈它做什么,我想和用它来代替标准之一,但我宁愿避免这种情况。 没有人有任何想法,我怎么能拿cpack停止填充与所需的库RPM?

Answer 1:

见底部

http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

该autoreqprov标签 - 禁用自动依存性处理

当不期望RPM的自动依存性处理有时可能。 在这些情况下,autoreqprov标签可用来禁用它。 这种标签带有一个是/否或0/1值。 例如,可禁用自动依存性处理,下面的行,可以使用:

AutoReqProv:无

编辑:

为了设置这个在cmake的,你需要做的set(CPACK_RPM_PACKAGE_AUTOREQPROV " no") 额外空间似乎在(或后面)的无锋被需要 ,以便为它工作。 看来,对于cpack的RPM模块,这使得它,这样它不会让你设置一些变量什么比长3个字符短的缺陷。



Answer 2:

为了增加马克Lakata的回答以上,有“最大RPM”文档的快照

http://www.rpm.org/max-rpm-snapshot/s1-rpm-depend-auto-depend.html

也补充道:

autoreqautoprov标签可以用于禁用的要求自动处理或只,分别为“提供”。

至少我的版本CPackRPM的,似乎是你可以设置如类似的变量

set(CPACK_RPM_PACKAGE_AUTOREQ " no")

仅禁用的自动依存性处理“需要”。



文章来源: How do you make it so that cpack doesn't add required libraries to an RPM?
标签: cmake rpm cpack