[devel] /etc/ld.so.cache
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Пт Сен 12 00:38:23 MSD 2008
On Fri, Sep 12, 2008 at 12:20:12AM +0400, Dmitry V. Levin wrote:
> > > > Кстати, возможно, имеет ли смысл использовать 'ldconfig -X'.
> > > > Перестановка симлинков (по отношению к rpm пакетам) -- очень
> > > > сомнительная фича (и она даёт проблему в %post_ldconfig при
> > > > даунгрейде библиотек).
> > >
> > > Это объезд для пакетов, в которых забыли упаковать эти ссылки.
> >
> > А есть ли такие пакеты? Ведь lib.prov выставляет provides на soname
> > только в том случае, если имя файла/симлинка совпадает с названием
> > сонейма.
>
> Этот объезд гораздо старше lib.prov
Понятно.
> > $ /usr/lib/rpm/lib.prov -vv /lib64/libglib-2.0.so.0*
> > lib.prov: processing /lib64/libglib-2.0.so.0
> > libglib-2.0.so.0()(64bit)
> > libglib-2.0.so.0(GLIB_2.8)(64bit)
> > libglib-2.0.so.0(GLIB_2.10)(64bit)
> > libglib-2.0.so.0(GLIB_2.12)(64bit)
> > libglib-2.0.so.0(GLIB_2.14)(64bit)
> > libglib-2.0.so.0(GLIB_2.15.6)(64bit)
> > lib.prov: processing /lib64/libglib-2.0.so.0.1600.5
> > $
> >
> > Если бы мы забыли запаковать симлинк /lib64/libglib-2.0.so.0,
> > то бинарик /lib64/libglib-2.0.so.0.1600.5 не дал бы provides;
> > пакет, в котором забыли запаковать "значащий" симлинк, либо даст
> > анметы, либо просто этот сонейм никому не нужен (так что симлинк
> > можно и не делать).
>
> OK, есть ещё какие-нибудь основания запускать ldconfig таким образом,
> как это делается в пакетах сейчас?
В перспективе (но, наверное, не самой ближайшей) стоит отказаться
от вызова ldconfig в пакетах и сделать posttrans trigger. Кстати,
там уже можно вызывать ldconfig и без опции -X, потому что при окончании
транзакции проблемы даунгрейда библиотек не существует (старые файлы
полностью удалены). Так что даже можно обслужить и левые пакеты.
Кстати, вот как это сделано в Мандриве (glibc-2.8-1.20080520.5mnb2.src.rpm),
glibc.spec:
1015 # automatic ldconfig cache update on rpm installs/removals
1016 # (see http://wiki.mandriva.com/en/Rpm_filetriggers)
1017 install -d %buildroot%{_var}/lib/rpm/filetriggers
1018 cat > %buildroot%{_var}/lib/rpm/filetriggers/ldconfig.filter << EOF
1019 ^.((/lib|/usr/lib)(64)?/[^/]*\.so\.|/etc/ld.so.conf.d/[^/]*\.conf)
1020 EOF
1021 cat > %buildroot%{_var}/lib/rpm/filetriggers/ldconfig.script << EOF
1022 #!/bin/sh
1023 ldconfig -X
1024 EOF
1025 chmod 755 %buildroot%{_var}/lib/rpm/filetriggers/ldconfig.script
Кривовато, конечно (как и многое в Мандриве), можно сделать чуть лучше.
В идеале, конечно, нужен триггер не по файлам, а по provides.
Кстати, вот чем мне не понравился именно такой подход к реализации.
С одной стороны, они вделывают regcomp() в librpm, по-видимому, чтобы
избежать лишних зависимостей на уровне exec (внутренний glob+grep сидит
в librpm). C другой стороны, им не удаётся отказаться от /bin/sh даже
для ldconfig.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080912/ffca7757/attachment-0002.bin>
Подробная информация о списке рассылки Devel