Summary: | apt-shell segfault после прерывания downloading | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Nick S. Grechukh <gns> | ||||
Component: | apt | Assignee: | Sergey Bolshakov <sbolshakov> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P2 | CC: | boyarsh, dottedmag, glebfm, imz, ldv, mike, mouse, php-coder, placeholder, rider | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Bug Depends on: | 3091 | ||||||
Bug Blocks: | |||||||
Attachments: |
|
Description
Nick S. Grechukh
2004-07-06 17:07:13 MSD
поправка из #3091: валится если просто commit был прерван или обломался. apt-shell sux completely. а что так? имхо вещь удобная, с tab autoexpand намного легче жить. не надо постоянно apt-cache search, rpm -q, и т.д. apt> commit The following NEW packages will be installed: cdp libghttp orpheus 0 upgraded, 3 newly installed, 0 removed and 0 not upgraded. Need to get 0B/208kB of archives. After unpacking 449kB of additional disk space will be used. Do you want to continue? [Y/n] Err file: i586/classic cdp 0.33-ipl11mdk File not found Err file: i586/classic libghttp 1.0.9-alt4 File not found Err file: i586/classic orpheus 1.5-alt2 File not found Failed to fetch [...] File not found Failed to fetch [...] File not found Failed to fetch [...] File not found There are broken packages. Run `check' to see them. You can try to fix them automatically with `install -f'. E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? apt> commit Segmentation fault Created attachment 929 [details]
apt-0.5.15cnc6-alterator3.patch
Патч, исправляющий эту ошибку.
Небольшие комментарии:
судя по всему apt-shell был написан методом копирования кусков кода из
apt-get'а.
Т.к. apt-get никогда не был предназначен для дальнейшей работы после ошибочного
download'а пакетов, то соответственно лезут всякие баги.
В данном случае происходит следущее:
после установки пакетов apt-shell'у необходимо перечитать Cache, что бы
обновить информацию о состояниях.
а Cache не перечитывается, если произошла хоть одна ошибка.
но при этом авторы apt-shell'а считают, что удалить объект Cache надо в любом
случае.
Соответственно возникает недоделанный Cache, в котором все и падает.
После раздумья было принято решение обновлять в этом случае Cache всегда
(затрагивает поведение исключительно apt-shell), ибо часть пакетов могло
поставиться, а часть нет и нам безусловно хочется посмотреть после установки
unmet'ы, коих не будет видно пока не перечитается Cache.
В общем - так оно не сегфолтится.
Попутно в этом же патче исправлена еще одна ошибка, которая проявилась после
того, как apt-shell смог работать дальше после ошибки установки пакетов ;-)
да, патч скорее всего будет приложен в след. сборке apt'а, ибо мы нарвались на эту ошибку в альтератор-пакагес ;-) apt-shell'ом у нас теперь Сергей заведует. (In reply to comment #6) > да, патч скорее всего будет приложен в след. сборке apt'а, ибо мы нарвались на > эту ошибку в альтератор-пакагес ;-) Ну что, приложили? :)) apt-0.5.15lorg2-alt12 кажется, не ломается - прервал по ctrl-c, запустил в том же сеансе install, commit, снова прервал, запустил еще раз. вроде работает. (In reply to comment #9) > вроде работает. Ну тогда почему бы не закрыть баг? per c#9 Действительно, в честь НГ ;) |