我有一个.spec
用于安装 rpm 的文件。我在安装后有以下代码片段 (%post scriplet)
%post -n %{package_name}
# Enable the service at boot time
%if %{?suse_version:1}0
/usr/lib/lsb/install_initd %{_initrddir}/%{package_name}
%else
chkconfig --add %{package_name}
%endi
在zypper install package_name
安装后阶段失败并出现以下错误:
/var/tmp/rpm-tmp.Z5R29N: line 2: /usr/lib/1sb/install _initd: No such file or directory
warning: %post (package_name.sles15.x86_64) scriptlet failed, exit status 127
我是 rpm .spec 文件的新手,但此 scriplet 失败,因为/usr/lib/lsb/
SLES 15 SP4 中不存在目录
我的问题是:
- 这个 scriplet 到底在做什么?
- 从哪里获取此
/lsb/
程序包以便我可以在 SLES 15 SP4 中创建此路径?我检查过 SLES 15 SP4 是否预装了 lsb-xxx 软件包,但它们在这里不起作用? - 我是否需要在此处针对此 scriplet 中的 sles 15 SP4 进行案例检查?喜欢:
%if 0%{?sle_version} == 150400 && 0%{?is_opensuse}
// do somthing
%endif
该规范非常过时
该代码段的作用是将脚本安装到
init.d
,由 用来sysv-init
在引导时启动服务自 SLE 12 以来,SUSE(以及大多数其他发行版也已切换)一直在使用
systemd
,呈现init.d
完全过时并保证切换到服务你不能,现在对这些启动和管理服务的方法的支持非常有限,其中之一是,这是一个解决方案,但如果这是一个重要的软件
systemd-sysv-generator
,我会选择本机解决方案。systemd
但是这个片段,照原样,永远不会在 SLES 15 上工作,它需要完全重写,因为它
chkconfig
不会也不会工作如果您仍然支持
SLE < 12
,并且需要保持旧的方式来做,是的,您可以这样做如果你想让它成为原生的,你需要做什么:
仅供参考,这是一个只匹配 openSUSE Leap 15.4 而不是 SLE 15.4 的条件,这不是问题,因为 Leap 和 SLE 是同一回事,但可能会令人惊讶