我想知道如何用自己的版本替换某个软件包中的服务单元文件。也就是说,我在该服务单元文件中发现了一些问题,并已对其进行了纠正。但是,随着该软件包的下一次更新,我的更改将丢失。
我知道我可以修改原始程序包,使用固定功能等。但是,在这种情况下,这似乎过于复杂,我真的很想以正常方式获取相应程序包的更新。它只是我想保留在更正版本中的服务单元文件。
我想到以下解决方案:
这是一个合理的方法吗?是否有针对此问题的“官方”解决方案?
默认情况下,systemd将使用来自的服务文件/usr/lib/systemd/system/daemon.service
。但是,如果在中找到了服务单元/etc/systemd/system/daemon.service
,它将自动使用该服务单元,并忽略默认的服务单元。
所以基本上
cp /usr/lib/systemd/system/daemon.service /etc/systemd/system/daemon.service
并在文件中进行所需的任何更改/etc/systemd/system/daemon.service
。
替代方法:
如果您不喜欢这样或仅需进行一些较小的编辑,则可以在systemctl edit daemon.service
那里运行并进行更改。这些更改将合并到systemd将尝试运行的服务单元中,无论该单元位于/usr/lib/...
还是之下/etc/...
。
优点:
如果软件包提供的单位文件得到更新,则这些更改将自动与您的调整合并。
缺点:
如果软件包提供的单位文件得到更新,则这些更改将自动与您的调整合并。(开个玩笑。有时候,您真的不想要这个。)
很难看-systemd/etc/systemd/system/daemon.overrides.d/
在您的更改所在的目录中创建目录。这有点时髦,容易错过,所以将来可能会咬你。
您不能用这种方式替换事物,只能添加一些新事物,因为替代内容已合并到单元中。(虽然不确定,但是我上次使用它是在前一阵子。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句