我正在尝试安装新版本神经节,它提供了一个tar.gz
。我的程序是解压文件tar.gz
,进入文件夹,然后制作rpmbuild -ba ganglia.spec
,给出一个警告消息,说缺少依赖库,然后我通过安装它们yum
,然后再次给出rpmbuild
,这会生成一些.rpm
文件/usr/src/RPM/
我在centOS 5和centOS 6中执行了此操作。然后将其安装在一些服务器上。
我不知道我做的是否正确?(我只在网上阅读了一些教程)我的一个朋友说这是错误的,.rpm
我生成的代码compile
只适用于具有特定硬件的服务器,对吗?
.rpm
从.tar.gz
文件构建包的正确方法是什么?
答案1
这是正确的方法。如果要将其构建为 rpm,则发布 .tar.gz 的人有责任拥有正确的 rpm spec 文件。这就是您从 spec 文件构建 rpm 的方法。
您以这种方式生成的 rpm 文件可以安装在所有匹配的服务器上,前提是您没有故意做阻止它们工作的事情(例如安装“依赖项”的奇怪版本,但如果您只从 centos 基础存储库安装了软件包,则软件包会很好)。但这里的“匹配”意味着 centos/rhel 版本和体系结构。架构通常仅指 32 位或 64 位 x86,但也有 arm、powerpc 和其他架构。例如,Fedora 项目支持这些架构:https://fedoraproject.org/wiki/Architectures。
无论如何,某些 rpm(特定于体系结构)可以安装在特定体系结构上,因为它们包含编译代码。其他 rpm 可以是“noarch”,这意味着生成的 rpm 可以安装在任何体系结构上。这种 rpm 中没有编译的二进制文件,只有数据或解释语言程序(shell、perl、python 等)。