[sisyphus] Доигрался...
Ivan Zakharyaschev
=?iso-8859-1?q?vanyaz_=CE=C1_mccme=2Eru?=
Вт Янв 9 17:36:38 MSK 2001
Hello, Andrey!
On Tue, 9 Jan 2001, Andrey Brindeew wrote:
> В общем, обновил initscripts и еще кучу пакетов.
> После этого система не перегружается. Видно, что не стартует
> portmap и другие сервисы. После загрузки у меня стоял запуск
> Иксов. Теперь просто мигает экраном и ничего не происходит.
Чтобы вновь запускались нужные сервисы при загрузке, придется заново их
включить вручную, например:
$ chkconfig --add syslog
$ chkconfig --add portmap
и так же с любым другим понравившимся скриптом из /etc/rc.d/init.d/.
Или то же самое наверняка можно сделать из меню: linuxconf, drakxconf...
О возможностях более тонкого управления набором стартовых скриптов -- man
chkconfig.
syslog и, вероятно, portmap не стартуют вот почему:
Старые пакеты с ними (из Mdk 7.0) напрямую ставили нужные ссылки в
/etc/rc.d/rc?.d/ (файлы-ссылки входили в состав пакетов), тут можно
увидеть некоторые из них:
$ rpm -qf `rpm -qal | grep '/etc/rc\.d/rc.\.d/.*'` | sort -u
apache_rus-common-1.3.12_PL29.4-ipl7mdk
initscripts-5.49-ipl4mdk
lpr-0.48-1mdk
netkit-base-0.11-15mdk
portmap-4.0-8mdk
(syslog я уже обновил, он тоже после этого не запускался)
А новые пакеты для этой цели используют систему систему управления этими
сервисами -- chkconfig.
Обновление пакета идет по схеме:
1. установка нового
2. удаление старого
Поэтому при обновлении такого пакета на этапе 1 вызывается chkconfig
--add, что оказывается совершненно бесполезным из-за того, что на этапе 2
установленные chkconfig'ом ссылки удаляются как принадлежащие старому
пакету и не принадлежащие новому.
Могу предложить несколько способов борьбы с этим при создании пакетов:
1. закрыть на это глаза
2. в новых пакетах указывать эти ссылки из /etc/rc.d/rc?.d/ в секции
%files с директивой %ghost или чем-нибудь в этом роде (по моему, это
плохой способ: все преимущества использования chkconfig теряются)
3. Проописать в новом пакете соответсвующий trigger на старый пакет. Вот
так это сделано в console-tools из Сизифа:
%triggerpostun -- console-tools < 0.2.3-ipl1mdk
/sbin/chkconfig --add keytable || echo "chkconfig failed adding keytable:
add it manually if you need"
(он-то исполнится после всего, т.е. после этапа 2)
Недостаток в том, что загромождается spec-файл пакета.
4. Запихать все такие триггеры в один пакет, например initscripts или
специально для этого созданный. Тогда spec-файлы отдельных пакетов можно
оставить такими, какими они есть.
Дополнение к 3: в соответсвии с packaging HOWTO, учитывая то, что этот
кусок spec-файла (trigger-script) будет использован многократно, нужно
создать макрос для него, например %{chkconfigSince:scriptname version}.
Если до этого дойдет дело, то тогда можно попробовать создать и макрос
более широкого назначения для пакетов, предоставляющих стартовые скрипты:
%{initscript:name chkconfigSince}.
--
С наилучшими пожеланиями,
Ivan Z.
Подробная информация о списке рассылки Sisyphus