centos - 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
序言中?
谢谢!
解决方案
这不是您应该管理这些依赖项的方式。您应该寻找一种方法使该 rpm 在您的存储库中可用。我看到多个选项:
- 添加 harbottle 存储库:
yum-config-manager --add-repo https://harbottle.gitlab.io/harbottle-main/7/x86_64/
. 现在您yum
将能够自己找到tomcat8 rpm - 如果您想确保包裹仍然可用;除了其他 rpm 文件之外,最好将 tomcat8.rpm 复制到您自己的存储库中。
推荐阅读
- git - 如果我进行壁球合并,是否必须从分支提交历史记录中清除密码?
- vue.js - Vue 3 通过双向绑定将反应对象传递给组件
- java - 在 intellij 的本地 websphere 上部署 ear 时出错
- amazon-cloudwatch - 具有过滤模式的 AWS Secrets Manager 的事件模式
- r - 尝试解决 keras 中的数据维度不匹配问题
- bash - 使用 sed 从 XML 文件中提取值
- javascript - 在快照 Firestore JS 中返回文档 ID
- r - R中的变量案例(如SPSS)
- php - PHP 打印 - 如何在本地服务器打印机上直接从 PHP 打印?
- c++ - 如何正确地将 std::string 转换为整数向量