On Sun, Oct 14, 2007 at 02:02:45AM +0400, Денис Смирнов wrote: > On Fri, Oct 12, 2007 at 11:12:03AM +0400, Vitaly Lipatov wrote: > > >> Да, поясню свою мысль -- после того как не останется > >> зависимостей на старую либу можно её убрать из Сизифа. Но имя > >> её заниматься другой версией той же либы не следует. > VL> Почему? Нормальные пакеты требуют библиотеку по soname, а не по > VL> названию пакета. Поэтому не ясно, зачем стремиться сохранять то > VL> же названия для пакета. > VL> Вообще стремление к появлению виндовых > VL> mfc40.dll > VL> mfc42.dll > VL> mfc42-u.dll > VL> меня не очень радует. > > Требуют-то требуют, но у apt-get крышу от этого сносит. Глупый он, этот > apt-get. Поясняю: > - есть пакет (скажем bash); > - есть пакет (скажем libreadline); > - у пакета libreadline сменился soname, старый пакет теперь называется > libreadline4 > - пакет bash был пересобран с новым libreadline, как и все остальные > пакеты в дистрибутиве; > > Если после всего этого счастья на старой машине набрать apt-get install > bash он вместо того чтобы: > - обновить bash > - поставить libreadline4 и обновить libreadline > > С высокой степенью вероятности поступает куда более мерзко. Он обновляет > bash/libreadline, и сносит все что зависело от libreadline.so.4. > > Виталий, теория и то "как оно должно быть" это одно, а вот практика, > связаная с тем что apt-get на самом деле далек от идеала, это соверенно > другое. > > Например конкретно из-за этой баги с libreadline приходилось объяснять > всем, что обновление системы начинается с: > > apt-get install libreadline4 libreadline Эта особенность касается тех библиотек, которые затрагивают множество пакетов, порождаемое пакетом basesystem. > мне, который в курсе подобных особенностей apt понадобилось потратить > заметно времени чтобы поймать виновника. Пользователь который не в курсе > что apt это вообще-то на редкость кривоватое поделие, не сможет > самостоятельно вычислить виновника, и вывод его будет прост -- "альты врут > про то, что у них можно пользоваться upgrade/dist-upgrade). > > Помнится именно в связи с этим я матерился чтобы libreadline4 хотя бы с > таким названием был добавлен обратно в репо, чтобы можно было проделать > эту операцию. Если бы libreadline был просто удален, а добавлен > libreadline5 этой засады бы не было. > > Кстати от этой засады даже dist-upgrade изредка крышу сносит. Не совсем так. Если в репозитории нет libreadline4, то apt-get dist-upgrade действительно сносит крышу. А если libreadline4 есть в репозитории, то обновление проходит нормально, причём по окончании обновления пакет libreadline4 установлен не будет, поскольку libreadline.so.4. никому в обновлённой системе не нужен. Эта особенность касается тех библиотек, которые затрагивают множество пакетов, порождаемое пакетом basesystem. -- ldv