Init-Script

無法從系統服務腳本啟動本地建構的 ntpd

  • September 14, 2014

我從原始碼建構了 ntpd,該過程將它放在 /usr/local/sbin 中。當然,ntp 服務指向 /usr/sbin。所以,我想我可以像這樣更改 init.d 配置文件中的路徑:

### BEGIN INIT INFO
# Provides:        ntp
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

. /lib/lsb/init-functions

DAEMON=/usr/local/sbin/ntpd
PIDFILE=/var/run/ntpd.pid
...[etc]

我更改了以“DAEMON”開頭的行以指向新二進製文件的位置。但是,當我嘗試重新啟動服務時,出現錯誤:

[ ok ] Stopping NTP server: ntpd.
[....] Starting NTP server: ntpd/usr/local/sbin/ntpd: The 'user' option has been disabled. -- built without --enable-clockctl or --enable-linuxcaps or --enable-solarisprivs
ntpd - NTP daemon program - Ver. 4.2.7p475
Usage:  ntpd [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \
               [ <server1> ... <serverN> ]
Try 'ntpd --help' for more information.
failed!

如何讓服務從 /usr/local/sbin 而不是 /usr/sbin 執行?

解決方案(基於接受的答案):

顯然,在 Linux 上建構時,您需要在 Linux 上--enable-linuxcaps建構時使用開關。以下是 Debian Wheezy 的必要步驟:

cd ~/install/ntp-dev-4.2.7p475     # or wherever you have the source unpacked
make clean                         # clean out the previous build
sudo apt-get install libcap-dev    # this library is required by linuxcaps
./configure --enable-linuxcaps     # this is the critical switch
make
sudo make install
sudo /etc/init.d/ntp restart       # restart ntp
ntpq -c "rv 0 version"             # make sure you are running the right version

如上所述,您在 /etc/init.d/ntp 中唯一更改的行是 DAEMON 行。

您已經在ntpd沒有--enable-linuxcaps選項的情況下建構了。沒有這個,ntpd將無法辨識使用者選項-u

您的選擇是:

  • 使用正確的選項重新編譯
  • -u $UGIDNTPD_OPTS行中刪除/etc/init.d/ntp

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