[devel] /etc/ld.so.cache
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Пт Сен 19 11:02:56 MSD 2008
On Mon, Sep 15, 2008 at 02:05:27PM +0400, Dmitry V. Levin wrote:
> > /usr/lib/rpm/0ldconfig.filetrigger
> > 1 #!/bin/sh
> > 2
> > 3 IFS=
> > 4 while read -r f; do
> > 5 case "$f" in
> > 6 /lib/lib*/*.so* |\
> > 7 /lib64/lib*/*.so* |\
> > 8 /usr/lib/lib*/*.so* |\
> > 9 /usr/lib64/lib*/*.so* )
> > 10 # false positives
> > 11 continue ;;
> > 12 /lib/lib*.so |\
> > 13 /lib64/lib*.so |\
> > 14 /usr/lib/lib*.so |\
> > 15 /usr/lib64/lib*.so )
> > 16 # maybe soname
> > 17 if set $f.* && [ -f "$1" ]; then
> > 18 continue
> > 19 fi
> > 20 ;;
> > 21 /lib/lib*.so.* |\
> > 22 /lib64/lib*.so.* |\
> > 23 /usr/lib/lib*.so.* |\
> > 24 /usr/lib64/lib*.so.* )
> > 25 # soname
>
> Могут возникнуть (раньше были) дополнительные каталоги,
> возможно стоит запустить /usr/lib/rpm/dump_ld_config.
dump_ld_config не документирован, а из исходников не совсем очевидно,
какой у него synopsis и что он должен выводить.
В любом случае, идея понятна: лучше исходить не из фиксированного набора
каталогов, которые перечисляются в шаблонах, а из списка каталогов в
общем виде.
while read -r f; do
case "$f" in
/etc/ld.so.conf.d/*.conf)
exec /sbin/ldconfig
;;
esac
case "${f##*/} in
lib*.so*) ;;
*) continue ;;
esac
found=
for dir in $dirs; do
case "$f" in
# XXX /usr/lib64/sse2
"$dir"/*/*) continue ;;
"$dir"/*) found=1; break ;;
*) continue ;;
esac
done
[ -n "$found" ] || continue
case "${f##*/} in
lib*.so)
if set "$f".* && [ -f "$1" ]; then
continue
fi
;;
esac
exec /sbin/ldconfig
done
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?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/20080919/5c180794/attachment-0002.bin>
Подробная информация о списке рассылки Devel