시스템 서비스 스크립트에서 로컬로 구축된 ntpd를 시작할 수 없습니다.

시스템 서비스 스크립트에서 로컬로 구축된 ntpd를 시작할 수 없습니다.

나는 소스에서 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/sbin 대신 /usr/local/sbin에서 서비스를 실행하려면 어떻게 해야 합니까?

솔루션(허용된 답변 기준):

분명히 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 줄입니다.

답변1

당신은 선택의 여지 ntpd없이 상황을 구성했습니다 --enable-linuxcaps. 이것이 없으면 ntpd인식할 수 없다.사용자옵션 -u.

귀하의 옵션은 다음과 같습니다:

  • 올바른 옵션으로 다시 컴파일

  • -u $UGIDNTPD_OPTS행 에서 제거/etc/init.d/ntp

관련 정보