![尝试通过 debian 软件包安装启用实例化服务](https://linux22.com/image/11318/%E5%B0%9D%E8%AF%95%E9%80%9A%E8%BF%87%20debian%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%AE%89%E8%A3%85%E5%90%AF%E7%94%A8%E5%AE%9E%E4%BE%8B%E5%8C%96%E6%9C%8D%E5%8A%A1.png)
我有一个正在安装在系统上的内部配置 deb。除此之外,我希望该软件包能够启用串行控制台,如中所述http://0pointer.de/blog/projects/serial-console.html。
很高兴我可以在我的包的 postinst 中运行,感觉最好利用 debhelper 以确保正确的升级/卸载行为。然而,我发现:systemd enable [email protected]
- 我不能仅仅使用实例单元的名称
dh_systemd_enable
从我的rules
文件中调用;它需要指向一个实际的文件(如果我执行结束运行并尝试deb-systemd-helper
直接调用,也会发生同样的事情)。 - 我可以使用 debhelper 安装目标单元,但我认为无法使其执行正确的操作。
这是我的目标单位的样子:
[Unit]
Description=Serial Console
[Install]
WantedBy=getty.target
[email protected]
我可以启用和/或启动它,它显示为在 下运行systemctl status
,但是它不会启动它应该需要的实例服务。
所以我想我的问题分为两部分:第一,为什么我的目标单元没有按预期工作,第二,是否有最好的方法在 Debian 打包下实现这一目标?
答案1
- 该
Requires
指令应该出现在[Unit]
部分中,而不是出现在[Install]
. - 而是在你的包中发送一个符号链接。首先,我假设如果它存在,则会自动引入,但是如果它是串行设备,则仅为主内核控制台添加这样的依赖项,但这里不是这种情况。看
/lib/systemd/system/getty.target.wants/[email protected] -> /lib/systemd/system/[email protected]
[email protected]
getty.target
systemd-getty-generator
http://0pointer.de/blog/projects/serial-console.html并man systemd-getty-generator
了解更多详情。