On Tue, Apr 27, 2004 at 02:54:21PM +0400, Dmitry V. Levin wrote: > On Tue, Apr 27, 2004 at 02:34:29PM +0400, Sergey Vlasov wrote: > > On Tue, Apr 27, 2004 at 12:26:01PM +0300, Michael Shigorin wrote: > > > On Tue, Apr 27, 2004 at 12:49:43PM +0400, Leonid Khachaturov wrote: > > > > Означает ли это, что установка glibc-2.3.3 из Sisyphus сейчас, > > > > приведет к неработоспособности системы (или по-крайней мере её > > > > части)? > > > > > > Еще GL сломался (скринсейвер теперь CPU hog :). > > > > $ ls -la /usr/X11R6/lib/libGL.so.1 > > lrwxrwxrwx 1 root root 12 Апр 27 14:30 /usr/X11R6/lib/libGL.so.1 -> libMesaGL.so > > > > Старый ldconfig делает ссылку на libGLwrapper.so.0.1.8. Вообще по какому > > принципу ldconfig выбирает, на что поставить ссылку при наличии нескольких > > библиотек с совпадающими SONAME? > > Этот алгоритм несколько раз менялся, и какой действует сейчас, я не помню. На самом деле эта проблема возникает из-за следующего изменения: @@ -770,10 +790,27 @@ search_dir (const struct dir_entry *entr continue; } + + /* A link may just point to itself. */ + if (is_link) + { + /* If the path the link points to isn't its soname and it is not + .so symlink for ld(1) only, we treat it as a normal file. */ + const char *real_base_name = basename (real_file_name); + + if (strcmp (real_base_name, soname) != 0) + { + len = strlen (real_base_name); + if (len < strlen (".so") + || strcmp (real_base_name + len - strlen (".so"), ".so") != 0 + || strncmp (real_base_name, soname, len) != 0) + is_link = 0; + } + } + if (real_name != real_file_name) free (real_name); - /* Links will just point to itself. */ if (is_link) { free (soname); libMesaGL.so - это тоже ссылка (на libGL.so.1.4.501). Судя по комментарию, такая ссылка должна была бы игнорироваться, но на самом деле этого не происходит из-за третьей части написанного здесь условия (strncmp (real_base_name, soname, len) != 0). > Лучше не закладываться на тот или иной вариант и сделать нормальный > wrapper. Каким образом? Вынести все реальные libGL.so.* в другой каталог, оставив в /usr/X11R6/lib только libGLwrapper.so.*?