首页 > 解决方案 > 为什么spec-file中使用的%systemd_post在安装后没有启用或启动服务?

问题描述

我有一个非常简单的单元文件,它带有我打包到 RPM 文件的服务。这个 RPM 文件是在 Fedora 28 上构建和安装的。

我的服务文件再简单不过了:

[Unit]
Description=Hello Work

[Service]
ExecStart=/usr/bin/executable

[Install]
WantedBy=multi-user.target

在我的规范文件中,我添加了这些部分:

%post
%systemd_post %{name}.service

%preun
%systemd_preun %{name}.service

%postun
%systemd_postun_with_restart %{name}.service

服务文件通过正确复制

mkdir -p %{buildroot}%{_unitdir}/
cp %{name}.service %{buildroot}%{_unitdir}/

在 - 部分%install

当我安装软件包时,服务没有启动。当我手动运行

systemctl enable <service-name>

有用。

安装没有启用和启动我的服务的错误在哪里?

标签: fedorasystemdrpmbuild

解决方案


查看文档时,并没有说%systemd_post启动您的服务。它们指的是systemd.preset:您需要定义并打包一个%{name}.preset文件,该文件指定您的服务应默认启用。

这应该默认启用您的包。

我不完全确定现在您的包将默认启动,但看起来像这样:)


推荐阅读