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 从源代码构建RPM,如何安装在spec文件中构建所需的软件包_Linux_Centos_Package_Rpm_Rpm Spec - Fatal编程技术网

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分为两个不同阶段:

  • 所有依赖项都已安装

  • 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软件包工作所需的那些软件包。