gpt4 book ai didi

linux - rpm build .spec 更新时删除我的程序配置目录

转载 作者:行者123 更新时间:2023-12-04 19:39:43 33 4
gpt4 key购买 nike

uniin-cluster-agent 是我的程序和 etc是我的程序配置。/usr/bin/uniin-cluster-agent -c /etc/unilin_cluster_agent/config.yml这是启动命令

Name: uniin-cluster-agent
Version: %{?agent_version}
Release: %{?dist}

Summary: uniin-cluster-agent servcie
Group: Applications/System
License: xxx


%description





%install
mkdir -p %{buildroot}%{_bindir}
cp uniin-cluster-agent %{buildroot}%{_bindir}
cp -r etc %{buildroot}


%clean
rm -rf %{_builddir}/*

%files
%{_bindir}/uniin-cluster-agent
/etc/unilin_cluster_agent/*
/etc/systemd/system/uniin-cluster-agent.service

%post
systemctl daemon-reload
systemctl enable uniin-cluster-agent.service
systemctl restart uniin-cluster-agent.service

%preun
systemctl stop uniin-cluster-agent.service
systemctl disable uniin-cluster-agent.service

%postun
systemctl daemon-reload
rm -rf /etc/unilin_cluster_agent
安装很好,但是当我更新时使用 rpm -Uvh xxx.rpm我可以看到系统安装了我的新版本 rpm,然后清理并删除了旧版本。
但它也删除了目录 /etc/unilin_cluster_agent/usr/bin/uniin-cluster-agent ,更新后。
我不知道为什么?

最佳答案

这是我注意到的几件事。如果我知道这是什么版本的 CentOS,我可以更好地针对这些建议。

  • Group: Applications/System已过时且不需要。
  • %cleanrm -rf %{_builddir}/*通常暗示,至少在最近的 CentOS/Fedora/RHEL 版本中。你可能会忽略它
  • 您应该拥有 %files 中的集群代理目录(连同子目录) .我会改变 /etc/unilin_cluster_agent/*/etc/unilin_cluster_agent .这就是说“拥有目录和其中的所有内容。一个很好的好处是,当软件包被卸载时,文件/目录将被自动删除。
  • 配置文件(安装在 /etc/ 下的文件)应标记为 %config (或 %config(noreplace) )。见 https://www.cl.cam.ac.uk/~jw35/docs/rpm_config.html有关它们含义的详细信息以及哪一个更好地解决您的用例。
  • %pre , %post , %preun%postun有完全不直观的排序。所有这些都将在软件包升级期间运行。见 https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#ordering订购。
  • 要真正正确检测升级/卸载,您应该测试 $1 的值在运行脚本时。该值是操作(安装、升级、删除)完成时将留在系统上的软件包数。见 https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax有关完整的详细信息。
  • 对于 systemd 命令,您应该使用 $1 进行测试查看软件包是否是第一次安装、升级或删除以决定运行哪个确切的 systemd 命令。 https://fedoraproject.org/wiki/Systemd_Packaging_Draft#Scriptlets有一组您可能想做的事情的示例。例如,如果这是一次升级,您想要 daemon-reloadrestart (或 try-restart ?)。
  • 一般情况下,从不 rm -rf %post期间和 friend 。这些文件应该由 RPM 本身管理,并且应该由 RPM 删除。除非您确切知道自己在做什么,否则您的脚本不应该接触它们。
  • 关于linux - rpm build .spec 更新时删除我的程序配置目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69989768/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com