[devel] Проблемы при обновлении

Led led на altlinux.ru
Ср Ноя 14 01:35:04 MSK 2012


On Tuesday 13 November 2012 22:15:30 Ivan A. Melnikov wrote:
> On Tue, 13 Nov 2012 21:34:34 +0200
>
> Led <led на altlinux.ru> wrote:
> > On Tuesday 13 November 2012 21:05:18 Dmitry V. Levin wrote:
> > > On Tue, Nov 13, 2012 at 08:20:23PM +0200, Led wrote:
> > > > On Tuesday 13 November 2012 20:06:45 Ivan A. Melnikov wrote:
> > > > > Сегодня обновлял систему до свежего Сизифа, впервые за
> > > > > несколько дней, 204 пакета. Поймал вот такую ошибку:
> > > > >
> > > > >  97: libgtk+3
> > > > > ###################################################################
> > > > >#### #### ########################
> > > > >[ 45%] /usr/bin/gtk-query-immodules-3.0:
> > > > > error while loading shared libraries: libicule.so.48: cannot
> > > > > open shared object file: No such file or directory error:
> > > > > execution of %post scriptlet from libgtk+3-3.6.2-alt1 failed,
> > > > > exit status 127
> > > > >
> > > > > И в конце транзакции соответственно:
> > > > >
> > > > > E: Some errors occurred while running transaction
> > > > > [root на deimos ~]#
> > > > >
> > > > > Теперь у меня в системе две libgtk+3.
> > > > >
> > > > > Это точно баг. Но в каком пакете?
> > > >
> > > > Это похоже на следствие отказа от ldconfig в %post пакета.
> > >
> > > Каким образом отказ от ldconfig в %post мог бы сломать установку
> > > правильно собранных пакетов?
> >
> > Мне кажется, что выполнение в %post утилиты, слинкованной с вновь
> > установленной библиотекой (но с ещё неотработавшим ldconfig) может
> > быть неоднозначным. По крайней мере, когда-то синтетические тесты мне
> > показывали такие "неоднозначности".
>
> Наблюдение: gtk-query-immodules-3.0 из %post для libgtk+3
> требует 65 разделяемых библиотек из 47 различных пакетов, а PreReq
> только glib2, libpango и libatk.

Я всего лишь высказал предположение. После того, как вы предоставили список порядка установки пакетов, стало ясно, что 
это тот случай.

> Так что даже ldconfig не спасёт от 
> некоторой лотереи при установке.

В данном случае - не спасёт. Потому как здесь должна быть зависимость не просто Requires, а Requires(post), и она должна 
правильно обрабатываться rpm'ом и apt'ом.

> И вряд ли имеет смысл заставлять 
> майнтейнера все эти зависимости отслеживать.

Логично. Этим должен заминаться rpmbuild (правильно указывая Requires(...)-зависимости для скриптов) и, естественно, rpm 
с аптом.
Но даже это не поможет, если мейнтейнер накрутил ненужные циклические зависимости (на которые в других дистрибутивах и 
сборочницы, и установщики громко ругаются (как минимум)).

> Я бы предположил, что подобные "тяжёлые" утилиты вообще нельзя
> использовать в %post, а надо переносить куда-нибудь на-после-транзакции,
> например через pdeath-execute или файлтриггер.

-- 
Led


Подробная информация о списке рассылки Devel