【问题标题】:CentOS 7 - how to install dependency using wget in an RPM spec fileCentOS 7 - 如何在 RPM 规范文件中使用 wget 安装依赖项
【发布时间】:2019-07-01 08:57:13
【问题描述】:

我正在尝试编写规范 RPM 文件来构建 RPM 包。 这实质上是我的规范文件:

[...]
Requires: nodejs java-1.8.0-openjdk java-1.8.0-openjdk-devel log4j 

%define _rpmdir ../
%define _rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
%define _unpackaged_files_terminate_build 0

%pre
[Some script]


%post
[Some script]

%preun
[Some script]

%postun
[Some script]

%install
[...]

%files
[...]

我已经成功地安装了带有序言 Requires 的包依赖项,期望一个不作为 yum package (tomcat8) 存在的包依赖项。我在网上查到,在centOS上的安装方式是:

wget https://harbottle.gitlab.io/harbottle-main/7/x86_64/00853071-tomcat8/tomcat8-8.5.37-2.el7.harbottle.x86_64.rpm
rpm -ivh tomcat8-8.5.37-2.el7.harbottle.x86_64.rpm

但是我应该把它放在规范文件的什么地方呢?我试图把它放在%pre 脚本中,但是rpm 上有一个锁,阻止了它的使用。我试图把它放在%install 部分,但它似乎不正确。你能帮我解决这个问题吗?有没有办法仍然把它放在Requires 序言中?

谢谢!

【问题讨论】:

    标签: centos packaging rpmbuild rpm-spec


    【解决方案1】:

    这不是您应该管理这些依赖项的方式。您应该寻找一种方法使该 rpm 在您的存储库中可用。我看到了多个选项:

    1. 添加 harbottle 存储库:yum-config-manager --add-repo https://harbottle.gitlab.io/harbottle-main/7/x86_64/。现在您的 yum 将能够自行找到 tomcat8 rpm
    2. 如果您想确保软件包仍然可用;除了其他 rpm 文件之外,最好将 tomcat8.rpm 复制到您自己的存储库中。

    【讨论】:

    • 感谢您的回复 :) > 这不是您管理这些依赖项的方式。您是在谈论我管理所有依赖项的方式还是仅管理 tomcat8?我正在尝试第二种解决方案。我在包工作区中创建了一个RPMS 目录并将tomcat8.rpm 放在那里。但是,将依赖项添加到规范文件的正确方法是什么?
    • 我的意思是你不应该在后期脚本中与 rpm 数据库进行交互。 requires: tomcat8 完美
    • 好的!现在,我已经绕过了将带有yum 安装的%build 添加到规范文件:%build yum install /home/dblab/dblab-frontend-1.0/RPMS/tomcat8-8.5.37-2.el7.harbottle.x86_64.rpm 的问题。这种方式正确吗?
    • 没有。您只需将requires 部分放入您的规范文件中。百胜会为您处理要求
    • 我很困惑。我尝试将requires: tomcat8 放在规范文件中,但是在安装软件包时,出现此错误:Error: Package: frontend-1.0-849.x86_64 (/frontend-1.0-849.x86_64) Requires: tomcat8
    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 2021-02-02
    • 2010-10-26
    • 1970-01-01
    • 2017-12-29
    • 2012-12-02
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多