Bug 11481 - Неправильная (?) %_libexecdir в пакетах KDE5
Summary: Неправильная (?) %_libexecdir в пакетах KDE5
Status: CONFIRMED
Alias: None
Product: ROSA Fresh
Classification: ROSA-based products
Component: Packages from Main (show other bugs)
Version: Plasma5
Hardware: All Linux
: Normal normal
Target Milestone: ---
Assignee: VictorR2007
URL:
Whiteboard:
Depends on:
Blocks: 11462
  Show dependency treegraph
 
Reported: 2021-09-05 13:52 MSK by Mikhail Novosyolov
Modified: 2021-09-28 18:41 MSK (History)
3 users (show)

See Also:
Platform: 2021.1
ROSA Vulnerability identifier:
RPM Package:
Upstream:


Attachments
Стандартный каталог (237.84 KB, image/jpeg)
2021-09-06 17:54 MSK, VictorR2007
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mikhail Novosyolov 2021-09-05 13:52:15 MSK
В пакете plasma5-baloo-5.85.0-1.x86_64 есть такой файл:
/usr/lib64/libexec/baloo_file

Это очень странный путь. В rosa2016.1 %_libexecdir было /usr/lib64, в 2021.1 это уже /usr/libexec

Здесь, очевидно, должно быть что-то одно, а не оба сразу.

Директория /usr/lib64/libexec не является стандартной системной, не входит в пакет filesystem:

$ rpm -qf /usr/lib64/libexec
файл /usr/lib64/libexec не принадлежит ни одному из пакетов
Comment 1 VictorR2007 2021-09-05 14:40:02 MSK
А при чём тут 2016.1?
Там был например rpm5, а здесь rpm4.
Тоже по другому.
А если серьёзно, это один из стандартных каталогов kde5, 
после перехода на rpm4.
Путь стандартный.
Но только, например у Neon, это путь

/usr/lib/x86_64-linux-gnu/libexec/

У нас, или например у ОМ путь

/usr/lib64/libexec/

Ну а если взять Федору или Магеиа, у них путь

/usr/libexec/

Так собирает сборочная.
Будешь делать, чтобы собирало как у Федору и Магеиа?
Comment 2 Mikhail Novosyolov 2021-09-05 15:15:29 MSK
Да мне все равно, как, по-моему, путь, как у нас нелогичен. Либо %dir /usr/lib64/libexec должно принадлежать какому-то пакету, какому - не ясно.
Comment 3 Grigoriev Andrey 2021-09-05 15:29:16 MSK
Каталог принадлежит тем пакетам, в которых есть файлы по данному пути, очевидно.
Может раньше надо было все %dir прописывать, но довольно давно уже это не требуется.
Comment 4 Mikhail Novosyolov 2021-09-05 15:31:29 MSK
(In reply to Grigorev Andrey from comment #3)
> Каталог принадлежит тем пакетам, в которых есть файлы по данному пути,
> очевидно.
> Может раньше надо было все %dir прописывать, но довольно давно уже это не
> требуется.

Нет, каталог этот в установленной системе никому не принадлежит. Ты путаешь сборку пакета и установленный пакет.

Например, если в спеке прописать:
/usr/share/foo
то пакеты будет принадлежать и сам каталог /usr/share/foo , и что внутри него.
А если прописать так:
/usr/share/foo/dir1
/usr/share/foo/dir2
то после установлки пакета окажется, что dir1 и dir2 вместе с файлами внутри них принадлежат пакету, а вот /usr/share/foo никому не принадлежит.
Comment 5 Grigoriev Andrey 2021-09-05 15:50:26 MSK
Проверил. После удаления пакета с файлом каталоги остаются в системе.
Баг rpm похоже. Стоило бы всё же присваивать подкаталоги пакету хотя бы при установке каталогов, которые до того не существовали.
Comment 6 Mikhail Novosyolov 2021-09-05 16:00:39 MSK
(In reply to Grigorev Andrey from comment #5)
> Проверил. После удаления пакета с файлом каталоги остаются в системе.
> Баг rpm похоже. Стоило бы всё же присваивать подкаталоги пакету хотя бы при
> установке каталогов, которые до того не существовали.

Это фича. Один файл или директория должен принадлежать только одному пакету в штатном случае. В системе из коробки вообще не должно быть бесхозных каталогов (а они етсь). Если он никому не принадлежит, то и не удаляется, что логично. Рандомному пакету каталог принадлежать не должен. Существует %dir.
Comment 7 Grigoriev Andrey 2021-09-05 16:08:05 MSK
(In reply to Mikhail Novosyolov from comment #6)
> (In reply to Grigorev Andrey from comment #5)
> > Проверил. После удаления пакета с файлом каталоги остаются в системе.
> > Баг rpm похоже. Стоило бы всё же присваивать подкаталоги пакету хотя бы при
> > установке каталогов, которые до того не существовали.
> 
> Это фича. Один файл или директория должен принадлежать только одному пакету
> в штатном случае. В системе из коробки вообще не должно быть бесхозных
> каталогов (а они етсь). Если он никому не принадлежит, то и не удаляется,
> что логично. Рандомному пакету каталог принадлежать не должен. Существует
> %dir.

Проверил и на rpm5. То же самое. Каталоги выживают после удаления пакета.
Собственно, сохранение каталогов занимает мало места.
Однако, если по данному пути понадобится при дальнейшем использовании установить симлинк, по опыту получится ошибка установки пакета.

Рассмотрим три сторонних пакета:
А. Пакету принадлежит каталог, не существующий в основном репозитории.
Б. Пакету принадлежит файл в каталоге, но не принадлежит каталог.
С. Пакету принадлежит симлинк по пути каталога.

Итак, существует пакет, которому принадлежит каталог. Пусть к этому пакету нет доступа.
Тогда при установке и удалении Б последующая установка С приведёт к ошибке.
Очевидно, что для избегания такой ошибки требуется присваивать каталоги пакетам всегда.
Очевидно также, что стоит это делать автоматически.
Comment 8 Grigoriev Andrey 2021-09-05 16:15:46 MSK
Коталог можно создать/удалить через постскрипты. Не очень ясно, зачем, но случаи бывают разные.
Но тут он уже участвует в %files. Досадно.
Comment 9 VictorR2007 2021-09-05 16:21:10 MSK
(In reply to Grigorev Andrey from comment #7)

> Проверил и на rpm5. То же самое. Каталоги выживают после удаления пакета.
> Собственно, сохранение каталогов занимает мало места.
> Однако, если по данному пути понадобится при дальнейшем использовании
> установить симлинк, по опыту получится ошибка установки пакета.
> 
> Рассмотрим три сторонних пакета:
> А. Пакету принадлежит каталог, не существующий в основном репозитории.
> Б. Пакету принадлежит файл в каталоге, но не принадлежит каталог.
> С. Пакету принадлежит симлинк по пути каталога.
> 
> Итак, существует пакет, которому принадлежит каталог. Пусть к этому пакету
> нет доступа.
> Тогда при установке и удалении Б последующая установка С приведёт к ошибке.
> Очевидно, что для избегания такой ошибки требуется присваивать каталоги
> пакетам всегда.
> Очевидно также, что стоит это делать автоматически.

Что предлагаешь? Знаешь как такое можно исправить?
Можешь мне подсказать, и я сделаю, или сам сделай.
Но проще мне. У тебя других задач хватает.
Comment 10 Grigoriev Andrey 2021-09-06 08:41:22 MSK
(In reply to VictorR2007 from comment #9)

> Что предлагаешь? Знаешь как такое можно исправить?
> Можешь мне подсказать, и я сделаю, или сам сделай.
> Но проще мне. У тебя других задач хватает.

Мне пока три варианта на ум пришло:

1. Присваивать пакету те каталоги на этапе установки пакета, которые в системе никому не присвоены. Тогда вопрос к процессу установки пакета. Минус - между системами принадлежность каталогов станет более неоднозначна, так как тот же набор установленных пакетов даст другую принадлежность каталога.
Вариант требует развития, кстати. При удалении пакета по необходимости надо переприсваивать каталог другому пакету, файлы которого используют каталог, либо удалять при отсутствии такого пакета.

2. Присваивать все каталоги пакету вообще. Тогда вопрос к процессу сборки пакета.

3. Отказаться от присваивания каталогов пакету. Считать только файлы и каталоги с вручную выставленными правами, а точнее, эти самые права. Соответственно, пустые никому не принадлежащие каталоги считать сиротами.

Как это реализовать, я не знаю. Скорее всего лучше писать в апстрим. Вполне вероятно, что вопрос уже поднимался, и может даже есть более изящный вариант, чем предложенные выше.

Но даже если правка напишется, до нас она не скоро дойдёт. Конкретно данный баг на вид не слишком важен. Подумаешь, останется в системе путь /usr/lib64/libexec при удалении plasma5-baloo. Много ли вообще таких путей, подкаталоги каторых ни одному пакету не принадлежат? Скорее всего да. Чем конкретно этот случай лучше остальных?
Стоит ли рассматривать этот случай отдельно от остальных?
Можно скриптом откопать все неприсвоенные каталоги в дистрибутиве. А нужно ли, если всё равно хочется поменять автоматику?
Comment 11 VictorR2007 2021-09-06 17:54:16 MSK
Created attachment 5506 [details]
Стандартный каталог

(In reply to Grigorev Andrey from comment #10)
> Подумаешь, останется в системе путь
> /usr/lib64/libexec при удалении plasma5-baloo. Много ли вообще таких путей,
> подкаталоги каторых ни одному пакету не принадлежат?
Он и останется. С чего вы вообще взяли, что он только для plasma5-baloo.
Это стандартный каталог для kde5. С вложенными каталогами, куда устанавливают библиотеки и KDE Frameworks, и Plasma5 и Applications.
Приложил картинку с раскрытием одного из вложенных каталогов, у которого ещё есть вложенные папки.
Comment 12 VictorR2007 2021-09-06 18:47:03 MSK
Немного в дополнение к предыдущему моему сообщению.
Если посмотреть в пакет kde5-macros
 https://abf.rosalinux.ru/import/kde5-macros/blob/rosa2021.1/kde5.macros
то четвёртая сверху строка

%_kde5_libexecdir %{_kde5_libdir}/libexec

где

%_kde5_libdir %{_kde5_prefix}/%{_lib}

где

%_kde5_prefix %{_prefix}
Comment 13 Vladimir Potapov 2021-09-28 11:39:03 MSK
так что решим с этой ошибкой?
Comment 14 VictorR2007 2021-09-28 18:41:48 MSK
(In reply to Vladimir Potapov from comment #13)
> так что решим с этой ошибкой?

Да нет никакой проблемы.