[sisyphus] synaptic
Sviataslau Svirydau
=?iso-8859-1?q?Sviataslau=5FSvirydau_=CE=C1_epam=2Ecom?=
Пн Янв 19 02:33:04 MSK 2004
Dmitry Plotnikov пишет:
>>>При старте synaptic видим следующее:
>>>(synaptic:3985): Gtk-CRITICAL **: file gtkwidget.c: line 1827
>>>(gtk_widget_hide): assertion `GTK_IS_WIDGET (widget)' failed
>>>
>>>После обновления apt (apt-0.5.5cnc4.1-alt7) synaptic при обновлении
>>>списка пакетов вылетает с Segmentation fault.
>>>Если надо могу прислать вывод strace.
>>>
>>>
>>>
>>Попробуйте один раз выполнить apt-get update, далее обновление
>>списка пакетов в synaptic'е должно происходить без ошибок (баг
>>известен, но нет
>>
>>
>Не помогло.
>
>
>
>>смысла его фиксить это для libapt-0.5.5 нет смысла и желания ;-)).
>>Есть вполне обоснованная надежда, что synaptic >= 0.47-alt2.1 не
>>страдает этим (я пока не проверял).
>>
>>
>Ну тады ждём.
>
>
Похоже, мои надежды не оправдались :(
Ошибка всё ещё имеет место быть. Проявляется в libapt-pkg во время
проверки отпечатка ключа для репозитория. Может выражаться в виде
сегфолта или ошибки с сообщением о том, что метом вернул непонятный ответ.
Проблема в том, что в libapt-pkg при чтении vendors.list в pkgSourceList
создаётся vector<Vendor const *> VendorList. Далее указатели из этого
списка запоминаются также в списке репозиториев (см.
apt-pkg/rpm/rpmindexfile.cc). При чтении sources.list (а в synaptic это
может происходить несколько раз) таже перечитывается vendors.list,
причём содержимое VendorsList предварительно чистится (но ссылки в
списке репозиториев остаются!). Естественно, что после этого всякое
можно ожидать от программы...
Приложенный патч вроде бы как исправляет поведение libapt-pkg в этом
месте, но всё равно это dirty hack, исправлять надо бы глобально... А
что касается затронутого участка кода, то в обоих случаях (с патчем и
без) логика не совсем верна, как мне кажется. В одном случае
возвращаемому репозиторию всегда устанавливается запрошенный Vendor, в
другом случае - может вернуться репозиторий с другим Vendor'ом... и это
было правильно, если б не приводило к сегфолту, т.к. вроде бы
теоретически возможно существование нескольких репозиториев с одним
именем, но подписанных разными ключами.
Кстати об именах репозиториев. С точки зрения apt в sources.list
Sisyphus у нас обзывается i586. Предлагаю сделать в следующих сборках апт:
subst 's,/Sisyphus \(i[56]86\), Sisyphus/\1,' /etc/sources.list
Это ни на чём не должно отразиться, только предоставит моральное
удовлетворение :)
[ещё раз] кстати, неплохо было бы размазать sources.list по
sources.list.d...
--
Regards,
Sviatoslav Sviridov <Sviataslau_Svirydau at epam.com>
/* icq: 10845380; jid: svd at altlinux.org; */
--
You will be attacked by a beast who has the body of a wolf, the tail of
a lion, and the face of Donald Duck.
----------- следующая часть -----------
An embedded and charset-unspecified text was scrubbed...
Name: apt-0.5.15cnc5-alt-findrepos.patch
URL: <http://lists.altlinux.org/pipermail/sisyphus/attachments/20040119/2ce27452/attachment-0002.ksh>
Подробная информация о списке рассылки Sisyphus