Bug 56593 - Сломался вызов %post_service
Summary: Сломался вызов %post_service
Status: CLOSED DUPLICATE of bug 51911
Alias: None
Product: Sisyphus
Classification: Development
Component: service (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 major
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-24 13:25 MSK by Sergey Y. Afonin
Modified: 2025-11-18 09:01 MSK (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2025-10-24 13:25:31 MSK
Или не только %post_service

Просто так работает (p11):

# service ntpd restart
Stopping ntpd service:                    [ DONE ]
Starting ntpd service:                    [ DONE ]

rpm-4.13.0.1-alt40:

# rpm -Uvh --force ntpd_4.2.8p18-alt1%3ap11+374399.200.2.1@1739522518_x86%5f64.rpm
Preparing...                            ############################################################ [100%]
Updating / installing...
1: ntpd-4.2.8p18-alt1                   ############################################################ [100%]
Service ntpd is not running.[PASSED]
Starting ntpd service: daemon control: got EOF
[FAILED]

В p10 c rpm-4.13.0.1-alt34 всё хорошо:

# rpm -Uvh --force ntpd_4.2.8p18-alt1%3ap10+363449.100.1.1@1732654665_i586.rpm
Preparing...                            #################################################################### [100%]
Updating / installing...
1: ntpd-4.2.8p18-alt1                   #################################################################### [100%]
Stopping ntpd service: [ DONE ]
Starting ntpd service: [ DONE ]
Comment 1 Sergey Y. Afonin 2025-10-24 13:28:53 MSK
И ладно бы ntpd, взял и перезапустил. Но когда то же самое происходит с bird и отпадает маршрутизация на хосте в нескольких километрах, то начинаются немного нервные поиски решения, как попасть, особенно если OSPF нейбор коммутатор, у которого в ssh только старые алгоритмы...
Comment 2 Vitaly Chikunov 2025-10-24 18:33:43 MSK
1. Оно же пишет, что оно его пытается рестартануть, следовательно макрос выполнил свою функцию.

2. Но, с точки зрения service, он перед этим "не запущен":

 Service ntpd is not running.[PASSED]

и затем он не запустился:

 Starting ntpd service: daemon control: got EOF

Я меня внутри докера воспроизводится похожая ситуация:

 [root@43268c878a2a /]# service ntpd restart
 Service ntpd is not running. [PASSED]
 Starting ntpd service:       [ DONE ]
 [root@43268c878a2a /]# service ntpd restart
 Service ntpd is not running. [PASSED]
 Starting ntpd service: daemon control: got EOF

При этом ntpd процесс запущен.

В случае с докером ntpd не до конца проинициализировался и start-stop-daemon определяет, что процесс "не запущен", по причине, что процесс из /var/run/ntpd.pid хоть и существует, но не имеет нужный uid.

 [root@43268c878a2a /]# start-stop-daemon --start -N 0 --exec /sbin/ntpd --pidfile /var/run/ntpd.pid --user ntpd --test
 Would start /sbin/ntpd .

Для иллюстрации если убрать `--user ntpd`, то он его начинает замечать:

 [root@43268c878a2a /]# start-stop-daemon --start -N 0 --exec /sbin/ntpd --pidfile /var/run/ntpd.pid --test
 /sbin/ntpd already running.
Comment 3 Vitaly Chikunov 2025-10-24 19:36:24 MSK
Если проблема не в самом ntpd, то может service сломался?
Comment 4 Sergey Y. Afonin 2025-10-24 22:10:13 MSK
(Ответ для Vitaly Chikunov на комментарий #2)

> 2. Но, с точки зрения service, он перед этим "не запущен":
> 
>  Service ntpd is not running.[PASSED]

ТАк запущен же, если "service ntpd restart" делать, и всё происходит правильно. А если этот рестарт делается из rpm через обновление пакета, то всё. И это в p11 и Сизифе. Потом ntpd только прибивать, так как PID съезжает после такого рестарта. В p10 всё в порядке, при этом в p10 тоже самый пакет ntpd, только пересобранный в p10.

service-0.5.33-alt1 везде от p10 и до Сизифа. Если только в окружении что-то. Но почему только из-под rpm?
Comment 5 Vitaly Chikunov 2025-10-25 00:19:49 MSK
Воспроизвел баг.

В отличии от простого restart, при rpm -U происходит удаление старого бинарника и в start-stop-daemon, в этом случае, проверка через сравнение st_ino/st_dev невозможна и включается логика сравнения по имени бинарника указанного в --exec. Из-за usrmerge там не то же имя, что и в /proc/<pid>/exe

 + start-stop-daemon --stop --exec /sbin/ntpd --pidfile /var/run/ntpd.pid --user ntpd --test

 # ls -la /proc/$(cat /var/run/ntpd.pid)/exe
 lrwxrwxrwx 1 root root 0 Oct 24 20:52 /proc/2875/exe -> /usr/sbin/ntpd
Comment 6 Vitaly Chikunov 2025-10-25 03:30:55 MSK
Предлагаю такой фикс 
https://git.altlinux.org/tasks/398228/
Comment 7 Sergey Y. Afonin 2025-10-25 15:02:59 MSK
(Ответ для Vitaly Chikunov на комментарий #6)

> Предлагаю такой фикс 
> https://git.altlinux.org/tasks/398228/

У меня работает.
Comment 8 Sergey Y. Afonin 2025-11-01 12:11:41 MSK
Как там с аппрувом, или снова проблема с перфекционизмом,
как c https://bugzilla.altlinux.org/51235 ?
Comment 9 Sergey Y. Afonin 2025-11-18 09:01:00 MSK

*** This bug has been marked as a duplicate of bug 51911 ***