Дефектные обновления [Core, Extra, Community, Multilib]

В воскресенье обновил ноут с lxQt...
Обновление прошло успешно, но после ребута не видить сеть, блютуз и звук (как минимум).
В понедельник с утра обновил десктоп с кедами - полёт нормальный...

Кто что может подсказать?... В планах - загрузка с флешки, монтирование разделов arch-chroot c попыткой обновить систему...
Если не повезёт - перебить...
OSKiller
подсказать
Поставьте дополнительно lts ядро и хедеры на него , фирмарь обновите. Скорее всего драйвера не завелись на новом ядре. Смотрите вывод
lspci -k
После одного из последних обновлений (точнее не скажу, ибо компьютер перезагружаю довольно редко, только после обновления ядра; поэтому заметил только сейчас) remind стал блокировать отработку скрипта /home/user/.config/openbox/autostart.sh. Если remind прописан в этом скрипте высоко (поближе к началу), то записанные после него в автозапуск программы не запускаются вообще, а те, что до него, не выводятся на экран (например, tint2 видно, что запущена, но поставлена на паузу, и на экране её нет; попытка снять с паузы приводит к зависанию openbox).
Периодически также не отрабатывают скрипты, запускаемые в фоне другими программами (тут всё рандомно - может отработать, а может и нет; например, у меня компьютер просыпается утром по systemd .timer и запускает будильник через systemd .service; так вот этот будильник может отработать, а может и нет). Самое интересное, что сама программа remind исправно выдаёт все предупреждения, которые в неё записаны.
Решение: либо вообще убрать из autostart.sh программу remind и запускать её после нормального входа в сессию и автозагрузки всех программ. Либо опустить её в самый низ скрипта, возможно, добавив ещё и sleep секунд на 15-30.
Характеристики: kernel 6.6.10.arch1-1; openbox 3.6.1-10; remind 4.2.7-1. DM и менеджеры логина не используются, вход происходит примерно по такой схеме.
konstantinov-ms
записанные после него в автозапуск программы не запускаются вообще,
Реминд как записан
remind
Или
remind &
?
konstantinov-ms
Решение: либо вообще убрать из autostart.sh программу remind и запускать её после нормального входа в сессию и автозагрузки всех программ. Либо опустить её в самый низ скрипта, возможно, добавив ещё и sleep секунд на 15-30.
А если создать unit ... remind.service ...?
Ошибки не исчезают с опытом - они просто умнеют
vs220
konstantinov-ms
записанные после него в автозапуск программы не запускаются вообще,
Реминд как записан
remind
Или
remind &
?
Не, ну это совсем детский вариант был бы :)))) Программа исправно работала многие годы; проблемы с ней буквально только что проявились. Конечно, стоит амперсанд (&), иначе бы скрипт ждал завершения программы remind, прежде чем двигаться дальше.
Полностью запись выглядела так:
remind -z -b1 -m -k'notify-send  --urgency=critical %s & mpg123 /home/user/Sounds/arrive.mp3' ~/.reminders &
Кстати, сейчас подумал, а не в mpg123 ли дело? Довольно давно она вела себя очень плохо, вешая openbox, и я её занёс в IgnorePkg. Она теперь у меня отстаёт на несколько версий (актуальная версия 1.32.3-1, а у меня стоит 1.29.3-2). Надо бы попробовать её обновить и проверить, не заработает ли. Или проигрывать оповещения чем-то другим, например 'aplay'. Надо поэкспериментировать на досуге.

vasek
А если создать unit … remind.service …?
Кстати, хорошая идея, спасибо! Попробую. Сервисы systemd оказались довольно удобной штукой - я напихал в них очень много разных программ от Thunar до caffeine и redshift-gtk. Удобно!

UPD (РАБОЧИЙ ЮНИТ): Сделал через remind.service:

[Unit]
Description=Remind
Documentation=XXX
After=graphical-session.target

[Service]
ExecStart=/usr/bin/remind -z -b1 -m -k'notify-send  --urgency=critical %%s & play /home/user/Sounds/arrive.mp3' /home/user/.reminders
Restart=always
RestartSec=10

[Install]
WantedBy=graphical-session.target
Работает. Всё, что ниже, уже неактуально, но оставлю на память о потенциальных проблемах. Экранирование в systemd делается при помощи знака '%'; спасибо alien175, не брезгующему чтением манов! :).

НЕАКТУАЛЬНО:
Единственно, что systemd не пропустил такую конструкцию: "~/.reminders", пришлось указывать путь полностью: "/home/user/.reminders".
Будем наблюдать.

UPD2: Нет, не работает. Почему-то скрипт передаёт вместо переменной '%s' окружение '/bin/bash' и, соответственно, выдаёт сообщения '/bin/bash' вместо тех сообщений, которые прописаны в .reminders. Пока нет времени разбираться с юнитом. Вернул как было. На досуге попробую разобраться.

UPD3: Короче, через костыль, но сделал юнитом. Пришлось сделать скрипт, в котором прописана команда запуска remind (приводил её выше), а этот скрипт уже запускается юнитом systemd. Всё так, как приведено выше, но вместо команды запуска reimind указана команда запуска скрипта. Да ещё добавлен Type=forking, иначе systemd ругается. Да ещё добавил опцию RestartSec=10, чтобы не мельтешил в случае сбоя. В исправленном виде всё работает корректно.
переменной '%s'
*Systemd:
"%s"	User shell	This is the shell of the user running the service manager instance.

Если это внутренняя переменная Remind, то экранировать символ % обязательно. То, что у вас это где-то и как-то раньше работало - просто случайность.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE
alien175
переменной '%s'
*Systemd:
"%s"	User shell	This is the shell of the user running the service manager instance.

Если это внутренняя переменная Remind, то экранировать символ % обязательно. То, что у вас это где-то и как-то раньше работало - просто случайность.
1. Экранирование – это первое, что пришло мне в голову. Но оно не помогает. Или подскажите, как это делать правильно. Буду благодарен. Обратный слэш не работает. Пробовал через 'Environment', но то ли что-то не так делал, то ли эта опция для другого. Короче, ума не хватило пока использовать эту опцию.
2. Раньше это запускалось из скрипта /home/user/.config/openbox/autostart.sh С чего бы это было случайностью? Это полностью соответствует man remind. И заключалось в одинарные кавычки. Не вижу здесь случайностей.
konstantinov-ms
Единственно, что systemd не пропустил такую конструкцию: "~/.reminders", пришлось указывать путь полностью: "/home/user/.reminders".
Для указания домашнего каталога можно использовать %h, например: %h/.reminders
И запускать сервис от пользователя
systemctl --user start <name>.service 
vantu5z
Для указания домашнего каталога можно использовать %h, например: %h/.reminders
Спасибо! Но и полный путь работает: /home/user/.reminders

vantu5z
И запускать сервис от пользователя
Именно так и запускаю.

Там в другом проблема. Есть переменная '%s' программы remind, которая говорит программе считать MSG из .reminders и передать его в виде сообщения в notify-send. Но как справедливо указал alien175, в systemd эта переменная означает 'User shell'. Поэтому ничего удивительного в том, что unit systemd передаёт эту переменную в виде '/usr/bash'. Что потом и выводится в сообщениях. Вариант экранировать '%s' обратным слэшем не работает. Была мысль, нагугленная в интернетах, использовать для этой цели 'Environment'. Но пока не разобрался, как это делать правильно. Да и вообще в верном ли направлении копаю.
В целом, программа remind работает и через обычный запуск при помощи bash, и через юнит systemd (правда, через костыль, описанный выше). Тут чисто спортивный интерес: можно ли заставить юнит запускать программу корректно, с передачей переменной '%s' (без передачи всё работает).
 
Зарегистрироваться или войдите чтобы оставить сообщение.