Bug 51546

Summary: Неправильное форматирование списка удаляемых системных пакетов
Product: Sisyphus Reporter: 1lion23550
Component: aptAssignee: Ivan Zakharyaschev <imz>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: boyarsh, glebfm, imz, iv, ldv, liannnix, placeholder, sin
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Снимок проблемы none

Description 1lion23550 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 по умолчанию, признать, что мы не готовы к таким продвинутым технологиям.

Прошу мейнтейнера выссказаться.