On Mon, Sep 15, 2008 at 11:11:47AM +0400, Alexey Tourbin wrote: > On Fri, Sep 12, 2008 at 12:53:29AM +0400, Dmitry V. Levin wrote: > > > > Кстати, вот как это сделано в Мандриве (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 > > > > > > Кстати, при подобном раскладе (если содержать триггер в glibc-core), > > > у пакета glibc-core появится зависимость на sh (а у sh уже есть > > > зависимость на glibc-core). Впрочем, триггер можно написать на Си... > > > > В glibc-core уже есть несколько таких скриптов на C. > > А вот если там появится зависимость на @RPMCONFIGDIR@, то будет не очень > > здорово. > > Вот как я себе представляю более аккуратную реализацию. > > /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. -- ldv