apt-0.5.15lorg2-alt18 Looks like https://bugzilla.altlinux.org/show_bug.cgi?id=4707#c1 . Steps to Reproduce: Valid for any package: # ftp_proxy= http_proxy= apt-shell Reading Package Lists... Done Building Dependency Tree... Done Welcome to the APT shell. Type "help" for more information. apt> install libnotify-devel apt> commit The following NEW packages will be installed: libnotify-devel 0 upgraded, 1 newly installed, 0 removed and 1234 not upgraded. Need to get 5710B of archives. After unpacking 8343B of additional disk space will be used. Do you want to continue? [Y/n] n Abort. #
Воспроизводится: # rpm -q apt rpm apt-0.5.15lorg2-alt33 rpm-4.0.4-alt100.1
Reproduced with: apt-0.5.15lorg2-alt38 rpm-4.0.4-alt100.24
Это ужасно неприятная бага, мешающая методом подбора подобрать хорошее решение. Там специально написан такой код, который вызывает завершение просто при ответе "нет". Предлагаю внести следующее исправление (на себе проверил): diff --git a/apt/cmdline/apt-shell.cc b/apt/cmdline/apt-shell.cc index 1dcfc06..c26885f 100644 --- a/apt/cmdline/apt-shell.cc +++ b/apt/cmdline/apt-shell.cc @@ -1101,8 +1101,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, c2out << flush; if (AnalPrompt(Prompt) == false) { - c2out << _("Abort.") << endl; - exit(1); + return true; } } else @@ -1120,8 +1119,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, if (YnPrompt() == false) { - c2out << _("Abort.") << endl; - exit(1); + return true; } }
Может быть, любое другое продолжение работы apt-shell после отказа от коммита переводит apt-shell в неконсистентное состояние?
(В ответ на комментарий №4) > Может быть, любое другое продолжение работы apt-shell после отказа от коммита > переводит apt-shell в неконсистентное состояние? Из функции InstallPackage много раз выходят с помощью return. К тому же на этом этапе ничего ещё дельного не произошло. Так что я считаю, что никакого неконсистентного состояния там не возникает. На себе проверил.
apt-0.5.15lorg2-alt41 -> sisyphus: * Thu May 24 2012 Dmitry V. Levin <ldv@altlinux> 0.5.15lorg2-alt41 - apt-get, apt-shell: when a package could not be found, print the unmangled package request string (by Igor Vlasenko; closes: #27364). - apt-shell: do not abort when commit is cancelled (closes: #13877); Unlike one may suppose, this change will not cause the cache of accumulated changes to be cleared by cancelled "commit" operation, but this is exactly what Vitaly Lipatov has proposed in his comments to #13877.
Спасибо!