Bug 60173
| Summary: | После `plymouth-set-default-theme --reset` не работает установка темы | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vladislav Glinkin <glinkinvd> | ||||||
| Component: | plymouth | Assignee: | Антон Мидюков <antohami> | ||||||
| Status: | RESOLVED FIXED | QA Contact: | qa-sisyphus | ||||||
| Severity: | normal | ||||||||
| Priority: | P5 | CC: | antohami | ||||||
| Version: | unstable | ||||||||
| Hardware: | x86_64 | ||||||||
| OS: | Linux | ||||||||
| Attachments: |
|
||||||||
Created attachment 22018 [details]
Патч
Vladislav Glinkin, спасибо. С первой заменой понятно, 3-й строчки нет, вот sed и не меняет. Поэтому вы меняете замену на добавление строки. А вторую строчку меняете по какой причине? (Ответ для Антон Мидюков на комментарий #2) > Vladislav Glinkin, спасибо. > С первой заменой понятно, 3-й строчки нет, вот sed и не меняет. Поэтому вы > меняете замену на добавление строки. > А вторую строчку меняете по какой причине? С исправлением работы установки темы будет другая проблема: `sed -ie` создаёт бэкап-файл `plymouthd.confe` из-за неверной интерпретации флага `-e` как суффикса бэкапа. ``` # plymouth-set-default-theme bgrt-alt # plymouth-set-default-theme details # ls /etc/plymouth/plymouthd.conf* /etc/plymouth/plymouthd.conf /etc/plymouth/plymouthd.confe ``` Ну а разделитель - дело вкуса. (Ответ для Vladislav Glinkin на комментарий #3) > (Ответ для Антон Мидюков на комментарий #2) > > Vladislav Glinkin, спасибо. > > С первой заменой понятно, 3-й строчки нет, вот sed и не меняет. Поэтому вы > > меняете замену на добавление строки. > > А вторую строчку меняете по какой причине? > > С исправлением работы установки темы будет другая проблема: > `sed -ie` создаёт бэкап-файл `plymouthd.confe` из-за неверной интерпретации > флага `-e` как суффикса бэкапа. > > ``` > # plymouth-set-default-theme bgrt-alt > # plymouth-set-default-theme details > # ls /etc/plymouth/plymouthd.conf* > /etc/plymouth/plymouthd.conf /etc/plymouth/plymouthd.confe > ``` > > Ну а разделитель - дело вкуса. Так достаточно же написать -i -e Завёл issue в апстриме: https://gitlab.freedesktop.org/plymouth/plymouth/-/work_items/348 К сожалению, мне там не дают сделать merge-request. (Ответ для Антон Мидюков на комментарий #5) > Завёл issue в апстриме: > https://gitlab.freedesktop.org/plymouth/plymouth/-/work_items/348 > > К сожалению, мне там не дают сделать merge-request. Один из разработчиков сделал merge request: https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/488 Разработчик решил добавлять новую строку, когда её не хватает. plymouth-1:26.134.222-alt2 -> sisyphus:
Fri Aug 21 2026 Anton Midyukov <antohami@altlinux> 1:26.134.222-alt2
- Add upstream fix:
+ plymouth-set-default-theme: Add lines to the config file when a new line
needs to be added (Closes: 60173).
|

Description
Vladislav Glinkin 2026-08-17 11:58:26 MSKCreated attachment 22017 [details] Запуск под bash -x Версия пакета: plymouth-26.134.222-alt1 После выполнения `plymouth-set-default-theme --reset` попытка установить новую тему командой `plymouth-set-default-theme <имя>` завершается без ошибок, но ключ `Theme=` фактически не записывается в `/etc/plymouth/plymouthd.conf`. В результате тема сбрасывается на `text`. Шаги воспроизведения: 1) plymouth-set-default-theme --reset 2) plymouth-set-default-theme bgrt-alt 3) cat /etc/plymouth/plymouthd.conf # Строка Theme= отсутствует 4) plymouth-set-default-theme # Возвращает "text" вместо "bgrt-alt" Ожидаемый результат: Запись `Theme=bgrt-alt` должна появиться под секцией `[Daemon]` в файле `/etc/plymouth/plymouthd.conf`. Фактический результат: ``` # plymouth-set-default-theme --reset # cat /etc/plymouth/plymouthd.conf # Administrator customizations go in this file [Daemon] # plymouth-set-default-theme bgrt-alt # echo $? 0 # cat /etc/plymouth/plymouthd.conf # Administrator customizations go in this file [Daemon] ``` Исправление: ``` --- a/usr/sbin/plymouth-set-default-theme +++ b/usr/sbin/plymouth-set-default-theme @@ -138,9 +138,8 @@ function read_or_set_file_ini_value () if [[ $CONFIG_VALUE_LINE_NUMBER == 0 ]]; then - CONFIG_FILE_LINE_COUNT=$(( $INI_SEGMENT_LINE_NUMBER + 1 )) - sed -i "$CONFIG_FILE_LINE_COUNT i $CONFIG_FILE_VALUE_NAME=$CONFIG_FILE_VALUE_NEW_VALUE" "$CONFIG_FILE_PATH" + sed -i "${INI_SEGMENT_LINE_NUMBER}a\\${CONFIG_FILE_VALUE_NAME}=${CONFIG_FILE_VALUE_NEW_VALUE}" "$CONFIG_FILE_PATH" else - sed -ie "${CONFIG_VALUE_LINE_NUMBER}s/.*/$CONFIG_FILE_VALUE_NAME=$CONFIG_FILE_VALUE_NEW_VALUE/" "$CONFIG_FILE_PATH" + sed -i "${CONFIG_VALUE_LINE_NUMBER}s|.*|${CONFIG_FILE_VALUE_NAME}=${CONFIG_FILE_VALUE_NEW_VALUE}|" "$CONFIG_FILE_PATH" fi fi ``` Патч и запуск под bash -x до исправления во вложении.