[devel] Неупакованные каталоги

Alexey Shabalin a.shabalin на gmail.com
Пн Авг 7 17:26:17 MSK 2023


сб, 5 авг. 2023 г. в 21:29, Vitaly Lipatov <lav на altlinux.ru>:
>
> При сборке пакета файлы иногда попадают в каталоги, которыми никто не
> владеет (на момент установки пакета), или владеет да не тот. Я сделал
> небольшую выборку из таких бесхозных каталогов на основе логов сборки
> заданий за последние двенадцать месяцев.
>
> Некоторые из таких каталогов некоторые дистрибутивы пакуют в filesystem,
> но возможно было бы странно увидеть там /usr/share/metainfo.
> Или вот /usr/share/help. По сути, он принадлежит только librarian,
> которую никто не использует. Однако, кладут файлы туда множество
> пакетов, в том числе и равноудалённые от GNOME (или MATE), для которого
> каталог задумывался.
>
> По некоторым каталогам нужно принять решение, что их будет паковать себе
> каждый, кто использует.

Лучше никто, чем каждый.
Если каждый начнет паковать один и тот же каталог, с зависимостями
будем играть в рулетку.

>
> Для остальных достаточно добавить зависимость на пакет, содержащий
> каталог.
> Допустим, если кладём файл в /usr/share/polkit-1, у пакета должна быть
> зависимость на polkit.

Это как раз к вопросу, а должны ли плагины и конфиги требовать
установку основной программы.
Ответ не очевиден. Например на минимальной системе может быть не
установлен polkit, и на этой системе я ничего никому не хочу
делегировать, все что необходимо запущу прямо от root.
Но есть пакеты, которые содержат настройки для polkit, если в них
будет зависимость на polkit, то я не смогу удалить из системы polkit.
Вырезать конфиги в отдельный подпакет тоже не целесообразно. (ну какой
смысл плодить отдельные пакеты с настройками для polkit).
Так что ругань на никому не принадлежащий каталог /usr/share/polkit-1
я считаю меньшим злом, чем зависимость на polkit.

>
>
>
> /etc/bash_completion.d:

https://lists.altlinux.org/pipermail/devel/2021-November/216047.html
- Паковать completion файлы вместе с основным пакетом (не делать подпакетов)
- Упаковывать в /usr/share (/etc для администратора)
- Не указывать зависимость на bash-completion или другие shell (zsh, fish)
- Только bash-completion должен владеть директориями
%_datadir/bash-completion/completions и %_sysconfdir/bash_completion.d

>      hub: /etc/bash_completion.d
>      ninja-build: /etc/bash_completion.d
>      openscap-scanner: /etc/bash_completion.d
>      bash-completion: /etc/bash_completion.d
>      bash-completion-mercurial: /etc/bash_completion.d
>      bash-completion-source-highlight: /etc/bash_completion.d
>      python3-module-cinderclient: /etc/bash_completion.d
>      python3-module-glanceclient: /etc/bash_completion.d
>      python3-module-magnumclient: /etc/bash_completion.d
>      python3-module-mistralclient: /etc/bash_completion.d
>      python3-module-neutronclient: /etc/bash_completion.d
>      python3-module-novaclient: /etc/bash_completion.d
>      python3-module-swiftclient: /etc/bash_completion.d
>      python3-module-vitrageclient: /etc/bash_completion.d
>      python3-module-zunclient: /etc/bash_completion.d
>      rinse: /etc/bash_completion.d
>      salt-master: /etc/bash_completion.d
>      xen-tools: /etc/bash_completion.d
>
> /usr/share/bash-completion:
>      ethtool: /usr/share/bash-completion
>      gopass: /usr/share/bash-completion
>      nnn: /usr/share/bash-completion
>      pcp: /usr/share/bash-completion
>      powertop: /usr/share/bash-completion
>      bash-completion: /usr/share/bash-completion
>      bash-completion-mercurial: /usr/share/bash-completion
>      clufter-cli: /usr/share/bash-completion
>      driverctl: /usr/share/bash-completion
>      rpmdevtools: /usr/share/bash-completion
>
> /lib/firmware:
>      firmware-alsa-sof: /lib/firmware
>
> /usr/lib/systemd/user:
>      systemd: /usr/lib/systemd/user
>      canto-next: /usr/lib/systemd/user

canto-next - это ошибка

>
> /usr/lib/systemd:
>      systemd: /usr/lib/systemd
>      canto-next: /usr/lib/systemd

canto-next - это ошибка

>
> /lib/dbus-1/system-services:
>
> /usr/share/polkit-1/actions:
>      deepin-api: /usr/share/polkit-1/actions
>      kdiskmark: /usr/share/polkit-1/actions
>      lxqt-admin: /usr/share/polkit-1/actions
>      polkit: /usr/share/polkit-1/actions

Только polkit должен владеть.

>
> /usr/share/dbus-1:
>      ayatana-indicator-keyboard: /usr/share/dbus-1
>      ayatana-indicator-sound: /usr/share/dbus-1
>      dbus: /usr/share/dbus-1
>      libdbus-devel: /usr/share/dbus-1

Только dbus должен владеть.

>
> /usr/share/polkit-1:
>      kdiskmark: /usr/share/polkit-1
>      polkit: /usr/share/polkit-1

Только polkit должен владеть.

>
> /usr/share/zsh:
>      gopass: /usr/share/zsh
>      pcp: /usr/share/zsh
>      radare2: /usr/share/zsh
>      zsh: /usr/share/zsh
>      bash-completion-mercurial: /usr/share/zsh

Все, кроме zsh, ошибки.

>
> /usr/share/zsh/site-functions:
>      environment-modules: /usr/share/zsh/site-functions
>      gopass: /usr/share/zsh/site-functions
>      pcp: /usr/share/zsh/site-functions
>      radare2: /usr/share/zsh/site-functions
>      bash-completion-mercurial: /usr/share/zsh/site-functions
>      ddgr: /usr/share/zsh/site-functions

Все, кроме zsh, ошибки.

>
> /usr/share/help:
>      librarian: /usr/share/help
>      mate-file-manager-actions-doc: /usr/share/help
>
> /usr/share/help/C:
>      gnucash-docs: /usr/share/help/C
>      mate-file-manager-actions-doc: /usr/share/help/C
>
> /usr/share/icons/hicolor/symbolic:
>
> /usr/share/icons/hicolor/symbolic/apps:
>
> /usr/share/icons/hicolor/512x512/apps:
>      endless-sky: /usr/share/icons/hicolor/512x512/apps
>      hedgewars: /usr/share/icons/hicolor/512x512/apps
>      kdiskmark: /usr/share/icons/hicolor/512x512/apps
>      texworks: /usr/share/icons/hicolor/512x512/apps
>
> /usr/share/themes:
>      libgtk+2: /usr/share/themes
>      gtk-theme-qogir: /usr/share/themes
>      gtk2-themes-aurora: /usr/share/themes
>      gtk2-themes-murrine: /usr/share/themes
>
> /usr/share/gtk-doc/html:
>      libjcat-devel: /usr/share/gtk-doc/html
>      libldm1.0-devel: /usr/share/gtk-doc/html
>      libunique3.0-devel: /usr/share/gtk-doc/html
>      libxmlb-devel: /usr/share/gtk-doc/html
>      tomoe-devel: /usr/share/gtk-doc/html
>      gnome-latex-devel-doc: /usr/share/gtk-doc/html
>      gtk-doc: /usr/share/gtk-doc/html
>      libgwyddion-doc: /usr/share/gtk-doc/html
>      libmessaging-menu-doc: /usr/share/gtk-doc/html
>      power-profiles-daemon-docs: /usr/share/gtk-doc/html

Все, кроме gtk-doc, ошибки.

>
> /usr/lib64/qt5/mkspecs/modules:
>      qt5-base-devel: /usr/lib64/qt5/mkspecs/modules
>
> /usr/share/gtk-doc:
>      libjcat-devel: /usr/share/gtk-doc
>      libunique3.0-devel: /usr/share/gtk-doc
>      libxmlb-devel: /usr/share/gtk-doc
>      tomoe-devel: /usr/share/gtk-doc
>      gtk-doc: /usr/share/gtk-doc
>      libgwyddion-doc: /usr/share/gtk-doc
>      libmessaging-menu-doc: /usr/share/gtk-doc
>      power-profiles-daemon-docs: /usr/share/gtk-doc

Все, кроме gtk-doc, ошибки.

>
> /usr/lib64/qt5/mkspecs:
>      qt5-base-devel: /usr/lib64/qt5/mkspecs
>
> /usr/lib/cmake:
>
> /usr/lib64/cmake:
>      cmake: /usr/lib64/cmake
>      errut: /usr/lib64/cmake
>      ispc: /usr/lib64/cmake
>      libfastpfor-devel: /usr/lib64/cmake
>      liblapack-devel: /usr/lib64/cmake
>      librabbitmq-c-devel: /usr/lib64/cmake
>      libsavitar-devel: /usr/lib64/cmake
>      qt5-base-devel: /usr/lib64/cmake
>      qt6-base-devel: /usr/lib64/cmake

Все, кроме cmake, ошибки.

>      libleatherman-devel: /usr/lib64/cmake/leatherman/cmake
А этот что? пусть себе владеет этим каталогом, если кто0то там сможет
найти cmake файлы, но это уже другая история.

>
> /usr/share/metainfo:
>      doomsday: /usr/share/metainfo
>      endless-sky: /usr/share/metainfo
>      fritzing: /usr/share/metainfo
>      imhex: /usr/share/metainfo
>      texworks: /usr/share/metainfo
>      vlc-mini: /usr/share/metainfo
>      nicotine-plus: /usr/share/metainfo
>      shutter: /usr/share/metainfo
Не знаю кто тут должен владеть, может filesystem.

-- 
Alexey Shabalin


Подробная информация о списке рассылки Devel