Ubuntu
自動啟用使用 deb 安裝的 systemd 服務?
我正在建構一堆服務以安裝在我自己的(自動創建的)伺服器上。我正在從 Ubuntu 14.04 上的 upstart 遷移,預設情況下啟用服務(如果我們不想在安裝時啟動,我們必須做額外的工作),到 Ubuntu 16.04,我們想使用 systemd 作為新的本地服務框架。
這些服務是使用我自己創建的 deb 包安裝的。我已經通過添加和添加帶有 systemd 單元規範的 deb 創建
--with systemd
來升級。rules``package-name.service
我發現的問題是,即使我添加一個
[Install]
帶有 的部分WantedBy=multi-user.target
,該服務也不會在系統上啟動。相反,該服務被安裝,然後
systemctl status package-name
顯示:● package-name.service - My Service Loaded: loaded (/lib/systemd/system/package-name.service; disabled; vendor preset: enabled) Active: inactive (dead)
我的 中沒有任何 systemd 覆蓋
rules
,正如我從Debian 包裝與 systemd 頁面以及dh_systemd_enable 手冊頁中了解到的那樣,如果我選擇不啟用服務,我可以使用它來不啟用服務。同樣從狀態顯示的外觀來看,
dh-systemd
確實啟用了服務(供應商預設位),但這還不夠。我錯過了什麼?
我通過從規則中的 override_dh_auto_install 目標手動呼叫 dh_systemd_enable (使服務預設執行)和 dh_systemd_start (在安裝後實際啟動它)解決了這個問題,所以它看起來像這樣:
%: dh $@ --with-systemd override_dh_auto_install: dh_auto_install dh_systemd_enable || true dh_systemd_start || true
實際上,您不需要在
override_dh_auto_install
.您需要(沒有和
--with systemd
之間的破折號)在安裝的包中。with``systemd``rules``dh-systemd