Debian

嘗試通過 debian package install 啟用實例化服務

  • September 24, 2018

我有一個要在系統上安裝的內部配置 deb。除其他外,我希望該軟體包能夠啟用串列控制台,如http://0pointer.de/blog/projects/serial-console.html中所述。

感謝我可以systemd enable serial-getty@ttyS0.service在我的包的 postinst 中執行,感覺最好利用 debhelper 來確保正確的升級/解除安裝行為。但是,我發現:

  • 我不能只用實例單元的名稱dh_systemd_enable從我的文件中呼叫;rules它期望指向一個實際的文件(如果我執行結束執行並嘗試deb-systemd-helper直接呼叫,也是一樣的)。
  • 我可以使用 debhelper 安裝目標單元,但我認為無法讓它做正確的事情。

這是我的目標單位的樣子:

[Unit]
Description=Serial Console

[Install]
WantedBy=getty.target
Requires=serial-getty@ttyS0.service

我可以啟用和/或啟動它,它顯示為在 下執行systemctl status,但是它不會啟動它應該需要的實例服務。

所以我想我的問題分為兩部分:首先,為什麼我的目標單元沒有按預期工作,其次,在 Debian 打包下是否有最好的方法來實現這一點?

  1. Requires指令應出現在該[Unit]部分中,而不是在[Install].
  2. 而是/lib/systemd/system/getty.target.wants/serial-getty@ttyS0.service -> /lib/systemd/system/serial-getty@.service在你的包中發送一個符號連結。首先,我假設如果它存在,它serial-getty@ttyS0.service會自動拉入getty.target,但是如果它是串列設備,則只有為主核心控制台添加這樣的依賴關係systemd-getty-generator,這裡不是這種情況。有關詳細資訊,請參閱http://0pointer.de/blog/projects/serial-console.htmlman systemd-getty-generator

引用自:https://unix.stackexchange.com/questions/470353