我可以从我自己的 rpm 包中安装不同的包吗?

Can I install different packages from my own rpm-package?

我可以在 CentOS 7 上安装我自己的 rpm 包中的不同包吗(这是我的任务,其他变体,如 shell-script 被拒绝)?我试图理解 rpmbuild 的规范文件格式,所以我使用了这个文件的一些最小配置。我正在创建一个 rpm 包(我们称它为 test.rpm),使用 "rpm -i test.rpm" 启动它并看到来自 %post 的 "yum install" 已启动,但卡在 "Running transaction" 安装级别。 SELINUX 被禁用。

这是我的 test.spec:

Name: test_script_name
Summary: It's just a test_script_summary
Version: 0.1 
Release: 1
Group: Applications/Internet
License: GPL 
BuildArch: noarch

%description
A test_script_description.

%prep 

%build

%install

%clean

%post
yum install -y lynx

%files
%defattr(-,root,root)

%changelog
* Tue Dec 08 2015 test test <test@test.com>
- test_script_changelog!

我正在构建我的 test.rpm:

rpmbuild --bb test.spec

启动它:

rpm -i test.rpm

这是在安装过程中显示的部分 yum 输出:

Total download size: 1.5 M
Installed size: 5.4 M
Downloading packages:
(1/2): centos-indexhtml-7-9.el7.centos.noarch.rpm                                               |  92 kB  00:00:00     
(2/2): lynx-2.8.8-0.3.dev15.el7.x86_64.rpm                                                      | 1.4 MB  00:00:00     
-----------------------------------------------------------------------------------------------------------------------
Total                                                                                  2.4 MB/s | 1.5 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.

这就是所有的输出。没有安装包。请帮我。谢谢。

如果您将此包定义为需求:

Requires: lynx

然后它会在以下命令后作为依赖安装:

yum localinstall test.rpm

look the question about autoinstallation dependencies

解决 OP 的问题:不,您不能从另一个 rpm 安装一个 rpm。要执行您想要的操作,您可以使用 Requires 标签将其他包列为 dependencies

进一步阅读:

此处讨论 RPM 依赖项:

通常,您应该使用 yum 安装(即使是本地构建的软件包)以保持其数据库最新。