首页 > 解决方案 > CentOS 7 - 如何在 RPM 规范文件中使用 wget 安装依赖项

问题描述

我正在尝试编写一个规范 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序言中?

谢谢!

标签: centospackagingrpmbuildrpm-spec

解决方案


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

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

推荐阅读