Ubuntu

自動啟用使用 deb 安裝的 systemd 服務?

  • November 6, 2018

我正在建構一堆服務以安裝在我自己的(自動創建的)伺服器上。我正在從 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

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