나는 소스에서 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 $UGID
NTPD_OPTS
행 에서 제거/etc/init.d/ntp