Linux 从源代码构建RPM,如何安装在spec文件中构建所需的软件包
我对构建Linux 从源代码构建RPM,如何安装在spec文件中构建所需的软件包,linux,centos,package,rpm,rpm-spec,Linux,Centos,Package,Rpm,Rpm Spec,我对构建RPM软件包和为此编写spec文件不熟悉。 我必须从github用golang编写的源代码编写一个规范文件来构建包。 我没有安装golang,而是尝试下载tar并提取和使用它,因为在生产系统中不允许安装它。 除了尝试使用bin/go build构建代码时出现系统头文件失败的部分:致命错误:systemd/sd journal.h:没有这样的文件或目录。 当我在该系统上安装system-devel软件包时,这种方法很有效。 但我如何通过在spec文件中提及而不是手动安装它呢。 当我在Bui
RPM
软件包和为此编写spec
文件不熟悉。
我必须从github
用golang
编写的源代码编写一个规范文件来构建包。
我没有安装golang,而是尝试下载tar并提取和使用它,因为在生产系统中不允许安装它。
除了尝试使用bin/go build
构建代码时出现系统头文件失败的部分:致命错误:systemd/sd journal.h:没有这样的文件或目录
。
当我在该系统上安装system-devel
软件包时,这种方法很有效。
但我如何通过在spec文件中提及而不是手动安装它呢。
当我在BuildRequires
或Requires
部分中指定它时,启动失败。
我无法yum安装
,因为它需要sudo访问权限,并且正在使用非sudo访问权限构建rpm。
我还可以怎样安装它,任何建议都是值得考虑的
感谢在这里,构建RPM分为两个不同阶段:
rpmbuild
命令。它只能对依赖项使用Require
或BuildRequire
。正如您所注意到的,它作为普通用户运行,因此无法安装依赖项。它只能检查它们并中止。这是正常的(也是预期的)
第一阶段实际上由构建服务器(例如Fedora的
koji
)或手动运行,但它不在rpmbuild
的范围内。如果您必须在rpmbuild
工作之前手动sudo-yum安装systemd-devel
,这是非常好的。但是构建服务器实际上使用yum builddep
(或dnf build dep
)命令将其自动化。这些命令获取一个规范文件并安装它们列出的所有依赖项。感谢@omajid对此的解释。构建服务器是否有办法检测和下载此类依赖关系,在我的情况下,构建将由team city代理运行,因此考虑添加一些机制来安装这些软件包yum builddep/path/to/file.spec-y
应使用yum
安装依赖关系。需要sudo,就像所有其他yum
命令一样。如答案中所述,您需要安装这些东西。如果你在机器上没有根,那么考虑一下或者是虚拟机。你可能会发现这个有用的词:谢谢你的回应,它帮助了你。我主要使用了本页中的概念。但是我认为在构建之前安装依赖项是独立于golang概念的,所以我正在寻找一种方法来安装golang软件包工作所需的那些软件包。