Bug 51546

Summary: Неправильное форматирование списка удаляемых системных пакетов и других
Product: Sisyphus Reporter: Сергей Жидких <1lion23550>
Component: aptAssignee: Ivan Zakharyaschev <imz>
Status: REOPENED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: boyarsh, glebfm, imz, iv, ldv, liannnix, placeholder, sin, vt
Version: unstable   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=56936
Bug Depends on:    
Bug Blocks: 56936    
Attachments:
Description Flags
Снимок проблемы none

Description Сергей Жидких 2024-09-24 14:27:18 MSK
Created attachment 16899 [details]
Снимок проблемы

Версия пакета: 0.5.15lorg2-alt88
Эмулятор терминала: Konsole (23.08.5-alt1)
Размер шрифта и разрешение экрана не играют роли.

Команда для воспроизведения (с правами root):
apt-get remove libpcre2
Comment 1 Ivan A. Melnikov 2024-11-08 18:43:45 MSK
ShowEssential оказывается передаёт List с пробелами. Я думал, что такое невозможно: ведь тогда VersionList будет выдан криво. Но разработчики оригинального apt'а оригинальны и хитры: они не заполняют VersionList в ShowEssential, оставляя его закомментированным с тремя знаками вопроса:

//VersionsList += string(Cache[I].CurVersion) + "\n"; ???

Это можно использовать, чтобы по традиции запилить минимально инвазивный костыль:

https://git.altlinux.org/people/iv/packages/apt.git?a=commitdiff;h=3f21b7afaed7f7bbd4abefbea7c56adeef877952

Я проверял, работает. Назовём его вариант номер 0.

Есть и другие варианты решения проблемы:
1. попытаться как-то подетектить круглые скобочки в List и разбить список по ним;
2. бекпортировать с апстрима то, что они сделали с ShowList (они его превратили в template);
3. реализовать свой ShowListEx, который будет брать List и VersionList как вектора строк; текущий ShowList реализовать в терминах ShowListEx и оставить для обратной совместимости;
4. просто поставить APT::Get::List-Columns в false по умолчанию, признать, что мы не готовы к таким продвинутым технологиям.

Прошу мейнтейнера выссказаться.
Comment 2 Repository Robot 2025-04-09 00:00:57 MSK
apt-0.5.15lorg2-alt91 -> sisyphus:

 Tue Apr 08 2025 Ivan Zakharyaschev <imz@altlinux> 0.5.15lorg2-alt91
 - Fixes for ShowEssential output (showing the essential to-be-removed packages):
   + Applied a trick to fix a bad case of columnar output (thx iv@). (ALT#51546)
   + Restored a missing space in its translated output (be, ja, ru).
 - New sample configs in apt.conf.d:
   + 01-Debug-pkgMarkInstall.conf: the common options for bug reports (ALT#49565)
   + 01-Debug-Acquire.conf: for debugging fetching and connections
   + 01-UI.conf: to turn off the columnar output from 0.5.15lorg2-alt88 in the UI
Comment 3 Ivan Zakharyaschev 2026-04-16 23:49:16 MSK
(Ответ для Ivan A. Melnikov на комментарий #1)
> ShowEssential оказывается передаёт List с пробелами. Я думал, что такое
> невозможно: ведь тогда VersionList будет выдан криво. Но разработчики

Запишу сюда, что есть случаи, когда всё же криво и в режиме APT::Get::Show-Versions=yes, и в нашем APT::Get::List-Columns=yes -- список replaced. (В конце пример.)

> оригинального apt'а оригинальны и хитры: они не заполняют VersionList в
> ShowEssential, оставляя его закомментированным с тремя знаками вопроса:
> 
> //VersionsList += string(Cache[I].CurVersion) + "\n"; ???
> 
> Это можно использовать, чтобы по традиции запилить минимально инвазивный
> костыль:

> Я проверял, работает. Назовём его вариант номер 0.
> 
> Есть и другие варианты решения проблемы:
> 1. попытаться как-то подетектить круглые скобочки в List и разбить список по
> ним;

ну можно. Думаю написать (чтобы пробел перед скобкой не считать за пробел, и пропускать всё до парной скобки)

> 2. бекпортировать с апстрима то, что они сделали с ShowList (они его
> превратили в template);



Пример:

]# apt-get install ghc9.6-package-base
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  ghc9.6-package-array       ghc9.6-package-containers  ghc9.6-package-filepath     ghc9.6-package-ghc-heap  ghc9.6-package-parsec  ghc9.6-package-template-haskell  ghc9.6-package-time          ghc9.6-package-xhtml
  ghc9.6-package-binary      ghc9.6-package-deepseq     ghc9.6-package-ghc-bignum   ghc9.6-package-ghc-prim  ghc9.6-package-pretty  ghc9.6-package-terminfo          ghc9.6-package-transformers  rpm-macros-ghc9.6-common
  ghc9.6-package-bytestring  ghc9.6-package-exceptions  ghc9.6-package-ghc-boot-th  ghc9.6-package-mtl       ghc9.6-package-stm     ghc9.6-package-text              ghc9.6-package-unix
The following packages will be upgraded
  rpm-macros-ghc9.6-common
The following packages will be REPLACED:
  ghc9.6-array            ghc9.6-bytestring           ghc9.6-exceptions           ghc9.6-ghc-boot-th           ghc9.6-mtl              ghc9.6-stm                        ghc9.6-text                   ghc9.6-unix
  (by                     (by                         (by                         (by                          (by                     (by                               (by                           (by
  ghc9.6-package-array)   ghc9.6-package-bytestring)  ghc9.6-package-exceptions)  ghc9.6-package-ghc-boot-th)  ghc9.6-package-mtl)     ghc9.6-package-stm)               ghc9.6-package-text)          ghc9.6-package-unix)
  ghc9.6-base             ghc9.6-containers           ghc9.6-filepath             ghc9.6-ghc-heap              ghc9.6-parsec           ghc9.6-template-haskell           ghc9.6-time                   ghc9.6-xhtml
  (by                     (by                         (by                         (by                          (by                     (by                               (by                           (by
  ghc9.6-package-base)    ghc9.6-package-containers)  ghc9.6-package-filepath)    ghc9.6-package-ghc-heap)     ghc9.6-package-parsec)  ghc9.6-package-template-haskell)  ghc9.6-package-time)          ghc9.6-package-xhtml)
  ghc9.6-binary           ghc9.6-deepseq              ghc9.6-ghc-bignum           ghc9.6-ghc-prim              ghc9.6-pretty           ghc9.6-terminfo                   ghc9.6-transformers
  (by                     (by                         (by                         (by                          (by                     (by                               (by
  ghc9.6-package-binary)  ghc9.6-package-deepseq)     ghc9.6-package-ghc-bignum)  ghc9.6-package-ghc-prim)     ghc9.6-package-pretty)  ghc9.6-package-terminfo)          ghc9.6-package-transformers)
The following packages will be REMOVED:
  ghc9.6        ghc9.6-Cabal-syntax  ghc9.6-common     ghc9.6-ghc               ghc9.6-ghc-boot        ghc9.6-ghci       ghc9.6-hpc       ghc9.6-process
  ghc9.6-Cabal  ghc9.6-base-devel    ghc9.6-directory  ghc9.6-ghc-bignum-devel  ghc9.6-ghc-prim-devel  ghc9.6-haskeline  ghc9.6-libiserv
The following NEW packages will be installed:
  ghc9.6-package-array   ghc9.6-package-bytestring  ghc9.6-package-exceptions  ghc9.6-package-ghc-boot-th  ghc9.6-package-mtl     ghc9.6-package-stm               ghc9.6-package-text          ghc9.6-package-unix
  ghc9.6-package-base    ghc9.6-package-containers  ghc9.6-package-filepath    ghc9.6-package-ghc-heap     ghc9.6-package-parsec  ghc9.6-package-template-haskell  ghc9.6-package-time          ghc9.6-package-xhtml
  ghc9.6-package-binary  ghc9.6-package-deepseq     ghc9.6-package-ghc-bignum  ghc9.6-package-ghc-prim     ghc9.6-package-pretty  ghc9.6-package-terminfo          ghc9.6-package-transformers
1 upgraded, 23 newly installed, 23 replaced, 15 removed and 1889 not upgraded.
Need to get 6410kB of archives.
After unpacking 658MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
# rpm -q apt
apt-0.5.15lorg2-alt100.x86_64
# apt-get -o APT::Get::Show-Versions=yes install ghc9.6-package-base
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
   ghc9.6-package-array (0.5.8.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-binary (0.8.9.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-bytestring (0.11.5.4-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-containers (0.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-deepseq (1.4.8.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-exceptions (0.10.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-filepath (1.4.301.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-bignum (1.3-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-boot-th (9.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-heap (9.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-prim (0.10.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-mtl (2.3.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-parsec (3.1.16.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-pretty (1.1.3.6-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-stm (2.5.1.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-template-haskell (2.20.0.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-terminfo (0.4.1.6-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-text (2.0.2-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-time (1.12.2-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-transformers (0.6.1.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-unix (2.8.6.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-xhtml (3000.2.2.1-alt2:sisyphus+414302.200.2.2@1775496205)
   rpm-macros-ghc9.6-common (9.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
The following packages will be upgraded
   rpm-macros-ghc9.6-common (p11+383990.200.3.1@1750711102 => 9.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
The following packages will be REPLACED:
   ghc9.6-array (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   (by (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-array) (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
    (0.5.6.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-base (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   (by (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-base) (0.8.9.1-alt3:p11+383990.200.3.1@1750711102)
    (0.11.5.3-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-binary (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   (by (0.6.7-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-binary) (1.4.8.1-alt3:p11+383990.200.3.1@1750711102)
    (1.3.8.5-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-bytestring (0.10.7-alt3:p11+383990.200.3.1@1750711102)
   (by (1.4.300.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-bytestring) (9.6.6-alt3:p11+383990.200.3.1@1750711102)
    (1.3-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-containers (1.3-alt3:p11+383990.200.3.1@1750711102)
   (by (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-containers) (9.6.6-alt3:p11+383990.200.3.1@1750711102)
    (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-deepseq (0.10.0-alt3:p11+383990.200.3.1@1750711102)
   (by (0.10.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-deepseq) (9.6.6-alt3:p11+383990.200.3.1@1750711102)
    (0.8.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-exceptions (0.6.2.0-alt3:p11+383990.200.3.1@1750711102)
   (by (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-exceptions) (2.3.1-alt3:p11+383990.200.3.1@1750711102)
    (3.1.16.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-filepath (1.1.3.6-alt3:p11+383990.200.3.1@1750711102)
   (by (1.6.19.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-filepath) (2.5.1.0-alt3:p11+383990.200.3.1@1750711102)
    (2.20.0.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-bignum (0.4.1.6-alt3:p11+383990.200.3.1@1750711102)
   (by (2.0.2-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-ghc-bignum) (1.12.2-alt3:p11+383990.200.3.1@1750711102)
    (0.6.1.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-boot-th (2.8.4.0-alt3:p11+383990.200.3.1@1750711102)
   (by (3000.2.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-ghc-boot-th) ()
    (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-heap (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   (by (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-ghc-heap) (0.5.6.0-alt3:p11+383990.200.3.1@1750711102)
    (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-prim (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   (by (0.8.9.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-ghc-prim) (0.11.5.3-alt3:p11+383990.200.3.1@1750711102)
    (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-mtl (0.6.7-alt3:p11+383990.200.3.1@1750711102)
   (by (1.4.8.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-mtl) (1.3.8.5-alt3:p11+383990.200.3.1@1750711102)
    (0.10.7-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-parsec (1.4.300.1-alt3:p11+383990.200.3.1@1750711102)
   (by (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-parsec) (1.3-alt3:p11+383990.200.3.1@1750711102)
    (1.3-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-pretty (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   (by (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-pretty) (9.6.6-alt3:p11+383990.200.3.1@1750711102)
    (0.10.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-stm (0.10.0-alt3:p11+383990.200.3.1@1750711102)
   (by (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-stm) (0.8.2.1-alt3:p11+383990.200.3.1@1750711102)
    (0.6.2.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-template-haskell (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   (by (2.3.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-template-haskell) (3.1.16.1-alt3:p11+383990.200.3.1@1750711102)
    (1.1.3.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-terminfo (1.6.19.0-alt3:p11+383990.200.3.1@1750711102)
   (by (2.5.1.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-terminfo) (2.20.0.0-alt3:p11+383990.200.3.1@1750711102)
    (0.4.1.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-text (2.0.2-alt3:p11+383990.200.3.1@1750711102)
   (by (1.12.2-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-text) (0.6.1.0-alt3:p11+383990.200.3.1@1750711102)
    (2.8.4.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-time (3000.2.2.1-alt3:p11+383990.200.3.1@1750711102)
   (by ()
   ghc9.6-package-time) (9.6.6-alt3:p11+383990.200.3.1@1750711102)
    (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-transformers (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   (by (0.5.6.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-transformers) (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
    (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-unix (0.8.9.1-alt3:p11+383990.200.3.1@1750711102)
   (by (0.11.5.3-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-unix) (9.6.6-alt3:p11+383990.200.3.1@1750711102)
    (0.6.7-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-xhtml (1.4.8.1-alt3:p11+383990.200.3.1@1750711102)
   (by (1.3.8.5-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-package-xhtml) (0.10.7-alt3:p11+383990.200.3.1@1750711102)
The following packages will be REMOVED:
   ghc9.6 (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-Cabal (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-Cabal-syntax (3.10.3.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-base-devel (0.5.6.0-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-common (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-directory (4.18.2.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc (0.8.9.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-bignum-devel (0.11.5.3-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-boot (9.6.6-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghc-prim-devel (0.6.7-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-ghci (1.4.8.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-haskeline (1.3.8.5-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-hpc (0.10.7-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-libiserv (1.4.300.1-alt3:p11+383990.200.3.1@1750711102)
   ghc9.6-process (9.6.6-alt3:p11+383990.200.3.1@1750711102)
The following NEW packages will be installed:
   ghc9.6-package-array (0.5.8.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-base (4.18.3.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-binary (0.8.9.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-bytestring (0.11.5.4-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-containers (0.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-deepseq (1.4.8.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-exceptions (0.10.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-filepath (1.4.301.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-bignum (1.3-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-boot-th (9.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-heap (9.6.7-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-ghc-prim (0.10.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-mtl (2.3.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-parsec (3.1.16.1-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-pretty (1.1.3.6-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-stm (2.5.1.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-template-haskell (2.20.0.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-terminfo (0.4.1.6-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-text (2.0.2-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-time (1.12.2-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-transformers (0.6.1.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-unix (2.8.6.0-alt2:sisyphus+414302.200.2.2@1775496205)
   ghc9.6-package-xhtml (3000.2.2.1-alt2:sisyphus+414302.200.2.2@1775496205)
1 upgraded, 23 newly installed, 23 replaced, 15 removed and 1889 not upgraded.
Need to get 6410kB of archives.
After unpacking 658MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.