Невозможно кастомизировать LC_ALL через опцию systemd юнита Environment. Например, FreeIPA использует drop-in конфиг для apache именно с такой опцией, из-за этого не работает часть функционала из коробки. Воспроизведение: - используется система с systemd. - по умолчанию в юните для httpd2 указано `Environment=LANG=C` или кастомный drop-in конфиг с идентичным `Environment=` - httpd получает LANG=LANGUAGE=LC_ALL=POSIX Причина: - apachechtl2 импортирует `/etc/init.d/functions`, в котором: ```bash if [ "$UID" = 0 ]; then LANG=POSIX LANGUAGE=POSIX LC_ALL=POSIX ``` `/usr/sbin/envvars` не поможет, так как импорт вышеуказанного файла происходит после импорта envvars. В настоящее время существует возможность кастомизировать указанные переменные _только_ через `EnvironmentFile=/etc/sysconfig/httpd2` или какой-то другой EnvironmentFile. Если так и задумано, то можно удалить из юнита httpd2.service Environment=LANG=C , чтобы не вводить пользователей в заблуждение, что это работает, и добавить полезный комментарий, как переопределить в АЛЬТЕ?
Зачем это нужно описано тут http://blog.dscpl.com.au/2014/09/setting-lang-and-lcall-when-using.html
> В настоящее время существует возможность кастомизировать указанные > переменные _только_ через `EnvironmentFile=/etc/sysconfig/httpd2` или > какой-то другой EnvironmentFile. > Неправильно выразился. Конечно, EnvironmentFile не работает также, как и Environment. Помогает установка переменных через /etc/sysconfig/httpd2 (сорсится apachectl2).
Стас, сделай так как тебе нужно и удобно. Я приму изменения.
Я бы, например, не использовал apachectl2 в systemd юните совсем, но это на уровне идеи.
(In reply to Stanislav Levin from comment #4) > Я бы, например, не использовал apachectl2 в systemd юните совсем, но это на > уровне идеи. Убрал apachectl2 из юнит файла в таске 283135, apache запускается с правильным LANG. Стас, можешь проверить у себя пожалуйста.
(Ответ для Egor Ignatov на комментарий #5) > (In reply to Stanislav Levin from comment #4) > > Я бы, например, не использовал apachectl2 в systemd юните совсем, но это на > > уровне идеи. > > Убрал apachectl2 из юнит файла в таске 283135, apache запускается с > правильным LANG. > Стас, можешь проверить у себя пожалуйста. Слепое(?) копирование патчей может быть опасно. Пожалуйста, укажите причину зачем нужен патч из Федоры и почему его нет в апстриме(если нет).
Вы точно хотите включать mod_systemd на системах без systemd?
Мы уже обсудили это с Егором и он сейчас переосмыслит сделанные изменения.
(In reply to Stanislav Levin from comment #6) > Слепое(?) копирование патчей может быть опасно. > Пожалуйста, укажите причину зачем нужен патч из Федоры и почему его нет в > апстриме(если нет). Патч взят с апстрима федоры (httpd-2.4.43-mod_systemd.patch) и добавляет вывод доп информации в логи systemd. Он не является обязательным, но не вижу причин его не брать. (In reply to Stanislav Levin from comment #7) > Вы точно хотите включать mod_systemd на системах без systemd? Включение mod_systemd на системах с sysv, не делает ничего плохого кроме того, что добавляется runtime зависимость на libsystemd. А вот вынос его в отдельный пакет создает проблему с обновлением httpd.service. Могу, разве что, добавить post скрип убирающий автозагрузку mod_systemd для sysv.
если модуль ничего плохого на sysvinit не сделает, то лучше если его отключит администратор.
(Ответ для Egor Ignatov на комментарий #9) > (In reply to Stanislav Levin from comment #6) > > Слепое(?) копирование патчей может быть опасно. > > Пожалуйста, укажите причину зачем нужен патч из Федоры и почему его нет в > > апстриме(если нет). > Патч взят с апстрима федоры (httpd-2.4.43-mod_systemd.patch) и добавляет > вывод доп информации в логи systemd. > Он не является обязательным, но не вижу причин его не брать. А я не вижу причин его брать. Посмотрел историю патча, он только в федоре, без каких-либо привязок к багзилле или каким-либо тикетам. Не надо тащить то, что хз что исправляет/улучшает. > > (In reply to Stanislav Levin from comment #7) > > Вы точно хотите включать mod_systemd на системах без systemd? > Включение mod_systemd на системах с sysv, не делает ничего плохого кроме > того, что добавляется runtime зависимость на libsystemd. > А вот вынос его в отдельный пакет создает проблему с обновлением > httpd.service. > > Могу, разве что, добавить post скрип убирающий автозагрузку mod_systemd для > sysv. Лучше так и сделать.
Собрал таск без патча, еще раз проверил на системах с systemd и sysv, все работает. Отправляю в сизиф.
apache2-1:2.4.48-alt5 -> sisyphus: Wed Aug 18 2021 Egor Ignatov <egori@altlinux> 1:2.4.48-alt5 - enable mod_systemd, drop apachectl2 in unit file (closes: #40688)
Спасибо, проверил, оригинальной проблемы нет, но есть проблема при обновлении: filetrigger 90-apache2-base-httpd.filetrigger срабатывает раньше, чем systemd.filetrigger (который перечитывает юниты), поэтому первый должен это сделать самостоятельно или надо переименовать. 14: apache2-base-1:2.4.48-alt3.1 ####################################### [100%] Warning: The unit file, source configuration file or drop-ins of httpd2.service changed on disk. Run 'systemctl daemon-reload' to reload units. То есть после обновления нужно перезапустить httpd для применения изменений. Открыть новый тикет?
Открыл https://bugzilla.altlinux.org/40861