我有一个大小 > 4.9GB 的内部软件安装程序, 它安装了一堆 rpms/库并在最后设置了一些配置。 我需要使用 rpmbuild 创建一个 RPM(我是这个 rpm 创建的新手)以便安装 RPM 并继续安装/执行这个安装程序(它是一个 bash 文件)。
我的 rpm 规范目前正在执行此操作(您可以查看下面的代码):
%安装
- 将 2 个 zip 文件复制到特定文件夹中。 这是实际软件文件夹中的 2 个 zip 文件,我只是将其拆分 将内容分成两部分并将它们压缩以避免最大大小限制(如果我是 4gbs 没错)。
%发布
将这些文件解压缩到特定文件夹中。
运行这些 zip 文件中的 bash 脚本安装程序(它将静默运行,因为它有一个 -s 标志)。
成功完成 bash 和 rpm 安装。
我已经构建了 rpm,所以当我尝试:
yum 安装 .rpm,
它很好地完成了 zip 部分,但它在 bash 安装部分永远什么都不做,可能是因为这个 rpm 锁定的事情,但我不确定。
顺便说一下,我完全不确定最后这是否是一个好的方法,我的意思是结合这个 rpm 和安装的东西
因为 install.sh 部分给了我这个问题,所以我尝试了不同的更改:
sudo/root/sotfware/install.sh -silent/root/software/silent_configfile.conf
/root/sotfware/install.sh -silent/root/software/silent_configfile.conf
./root/sotfware/install.sh -silent/root/software/silent_configfile.conf
你们觉得我做错了什么?, 最好的方法是什么?或者 您对此有何建议?
这是规范文件:
Name: software-19
Version: 1.0
Release: 1
Summary: software 2019
License: N/A
URL: https://
AutoReqProv: no
AutoReq: no
%description
Some description
%install
mkdir -p %{buildroot}/root/software2019
cp /root/software/software-1.zip %{buildroot}/root/software2019/software-1.zip
cp /root/software/software-2.zip %{buildroot}/root/software2019/software-2.zip
%post
unzip /root/software/software-1.zip -d /root/software2019/
unzip /root/software/software-2.zip -d /root/software2019/rpm/
sudo /root/software/install.sh -s /root/software2019/silent_configfile.conf
rm -rf /root/software/
%clean
rm -rf %{buildroot}
%files
/root/software/*
%changelog
* Tue Jan 20 2019 1.0
- Initial release
希望我已经清楚了,提前致谢!
最佳答案
这里有多个问题
您正在以
root
身份构建 RPM,这很危险,如果您没有正确编写内容,可能会删除您的机器。由于您才刚刚起步,所以这更有可能。源文件不应该有绝对路径。
您不应使用
sudo
,因为 RPM 安装始终以root
运行。silent_configfile.conf
未包含在 RPM 中,因此目标计算机可能没有它。%post
会删除您告诉 RPM 您要安装的文件,这可能会导致错误。- 这也会破坏
rpm -V
验证。
- 这也会破坏
您在
%post
中进行第三方安装是在滥用 RPM 系统。- 这会破坏
rpm -q --whatprovides/root/software19/myfile
之类的东西。 - 这会破坏
rpm -V
,因为它无法验证您安装的文件。 - 这打破了卸载/升级的任何概念,因为您没有提供
%preun
和相关文件来“做正确的事”。
- 这会破坏
为了正确地做事并且不让您的管理员在未来几年头疼,您需要让这些安装程序在 RPM 创建期间运行(同样,不是 root
!)目标为 %{buildroot}
,然后将生成的文件结构作为 RPM 分发。如果这不是可以完成的事情,那么 RPM 可能不适合您,您需要查看其他分发选项,例如自定义脚本。
关于linux - 如何运行从当前 rpm 规范文件安装 rpm 的 bash 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282081/