linux - RPM SPEC Systemd 启用并启动

标签 linux centos7 rpm

我已经创建了一个 RPM SPEC 文件,但我正在努力启用和启动 Systemd。通过 yum 更新软件包会禁用并停止该服务。 发行版为Centos 7.x

我已经在/etc/systemd/system 下安装了该服务。 这是我尝试过的方法,但它不起作用。

我还没有找到任何好的工作示例来说明如何做到这一点。

我使用此页面作为引用。 https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax

    #Pre installation/upgrade of RPM section
    %pre      
      #Upgrading
      if [ $1 -eq 2 ]; then
        /usr/bin/systemctl stop %{pkgname}.service >/dev/null 2>&1 ||:
      fi

    %post
    %systemd_post %{pkgname}.service

      if [ $1 -eq 1 ]; then        
        /usr/bin/systemctl daemon-reload
        /usr/bin/systemctl start %{pkgname}.service
      fi
      if [ $1 -eq 2 ]; then
        /usr/bin/systemctl daemon-reload
        /usr/bin/systemctl start %{pkgname}.service    
      fi

   %preun
   %systemd_preun %{pkgname}.service
    #old package
    #uninstall
    if [ $1 -eq 0 ]; then
      /usr/bin/systemctl --no-reload disable %{pkgname}.service
      /usr/bin/systemctl stop %{pkgname}.service >/dev/null 2>&1 ||:
      /usr/bin/systemctl disable %{pkgname}.service

    fi
    if [ $1 -eq 1 ]; then
      /usr/bin/systemctl --no-reload disable %{pkgname}.service
      /usr/bin/systemctl stop %{pkgname}.service
    fi

最佳答案

1) %{pkgname}.service 应该放在 %{_unitdir} 中,扩展为 /usr/lib/systemd/system/

2) 当你使用 %systemd_post %{pkgname}.service 宏时,不需要有:

  if [ $1 -eq 1 ]; then        
    /usr/bin/systemctl daemon-reload
    /usr/bin/systemctl start %{pkgname}.service
  fi
  if [ $1 -eq 2 ]; then
    /usr/bin/systemctl daemon-reload
    /usr/bin/systemctl start %{pkgname}.service    
  fi

对于 %pre%preun 也是一样的。

关于linux - RPM SPEC Systemd 启用并启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55378760/

相关文章:

linux - centOS 7 上的 Docker-CE 无法运行容器

linux - 在centos 7上安装phpmyadmin的问题

linux - 可以使用 RPM 分发 *.bin 文件吗

linux - 执行单个命令时 Bash 'swallowing' 子 shell 子进程

linux - Git 别名 - 分支名称的命令行自动补全

centos - 如何在 CentOS 上禁用 Nouveau 内核驱动程序

linux - 如何在 rpmbuild 规范文件中检查操作系统版本

centos - 来自/var/tmp/rpm-tmp.ajKra4 (%prep) 的错误退出状态

linux - 使用 docker remove 获取权限被拒绝错误

php - 无法加载动态库 'newrelic.so'