Re: Bad NTP in Fedora repository?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mike Klinke wrote:
22:17:28 # rpm -Uvh ntp-4.1.2-5.i386.rpm
Preparing... #################### [100%]
1:ntp warning: /etc/ntp.conf created as /etc/ntp.conf.rpmnew
###################### [100%]
error: %post(ntp-4.1.2-5) scriptlet failed, exit status 1


22:17:52 # rpm -qa | grep ntp-
ntp-4.1.2-0.rc1.2
ntp-4.1.2-5
===================================


Ay! The RPM, I think she's broke cap'n!

Regards, Mike Klinke

Good work Mike - I've repeated it here. I ran rpm using "rpm -U -vv " to get diagnostic output. Excluding a lot, we see the error:

D:   install: %post(ntp-4.1.2-5) synchronous scriptlet start
D:   install: %post(ntp-4.1.2-5)        execv(/bin/sh) pid 2714
+ /sbin/chkconfig --add ntpd
+ grep /etc/ntp/drift /etc/ntp.conf
+ olddrift=0
+ '[' 2 -ge 1 -a 0 -eq 0 ']'
+ service ntpd status
+ wasrunning=3
+ '[' 3 -eq 0 ']'
+ '[' -f /etc/ntp/drift ']'
+ cp /etc/ntp/drift /var/lib/ntp/drift
+ sed -e s#/etc/ntp/drift#/var/lib/ntp/drift#g /etc/ntp.conf
+ mv /etc/ntp.conf.rpmupdate /etc/ntp.conf
+ rm -f /etc/ntp.conf.rpmupdate
+ '[' 3 -eq 0 ']'
D:   install: waitpid(2714) rc 2714 status 100
error: %post(ntp-4.1.2-5) scriptlet failed, exit status 1
D: ========== --- ntp-4.1.2-0.rc1.2 i386-linux 0x1


From rpm -q --scripts ntp-4.1.2-5 we see: preinstall scriptlet (using /bin/sh): /usr/sbin/groupadd -g 38 ntp 2> /dev/null || : /usr/sbin/useradd -u 38 -g 38 -s /sbin/nologin -M -r -d /etc/ntp ntp 2>/dev/null || :


postinstall scriptlet (using /bin/sh): /sbin/chkconfig --add ntpd grep /etc/ntp/drift /etc/ntp.conf > /dev/null 2>&1 olddrift=$? if [ "$1" -ge "1" -a $olddrift -eq 0 ]; then service ntpd status > /dev/null 2>&1 wasrunning=$? # let ntp save the actual drift [ $wasrunning -eq 0 ] && service ntpd stop > /dev/null 2>&1 # copy the driftfile to the new location [ -f /etc/ntp/drift ] && cp /etc/ntp/drift /var/lib/ntp/drift # change the path in the config file sed -e 's#/etc/ntp/drift#/var/lib/ntp/drift#g' /etc/ntp.conf > /etc/ntp.conf.rpmupdate \ && mv /etc/ntp.conf.rpmupdate /etc/ntp.conf # remove the temp file rm -f /etc/ntp.conf.rpmupdate # start ntp if it was running previously [ $wasrunning -eq 0 ] && service ntpd start > /dev/null 2>&1 fi

The problem is if $wasrunning is non-zero, the test status is 1, indicating failure.
(man 3 exit - success == 0 !).  The rpm packager could fix their postinstall
script by adding some trivial final line like
   echo "ntp postinstall complete"
which will result in a 0 exit status, so that rpm completes successfully.


Here's the *real* kicker - if ntpd is running, the update succeeds. In this case:

D:   install: %post(ntp-4.1.2-5) synchronous scriptlet start
D:   install: %post(ntp-4.1.2-5)        execv(/bin/sh) pid 2895
+ /sbin/chkconfig --add ntpd
+ grep /etc/ntp/drift /etc/ntp.conf
+ olddrift=1
+ '[' 2 -ge 1 -a 1 -eq 0 ']'
D:   install: waitpid(2895) rc 2895 status 0
D: opening  db index       /var/lib/rpm/Triggername create mode=0x42
D: ========== --- ntp-4.1.2-0.rc1.2 i386-linux 0x1

% rpm -q ntp
ntp-4.1.2-5

The problem case only arises if ntpd isn't running prior to upgrade AND
a previous version was installed.

I've added this to the bugzilla.

Cheers,
-Bob Arendt





[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux