dce8ec5 systemd: enforce en_US.UTF-8 locale in systemd units

Authored and Committed by abbra 3 years ago
    systemd: enforce en_US.UTF-8 locale in systemd units
    
    Python code does detection of the system encoding based on the locale
    settings. On RHEL 8.4 development images we somehow get LANG=en_US which
    defaults to iso8859-1 _inside_ the systemd-started service, even though
    the whole environment defaults to LANG=en_US.UTF-8.
    
    When instrumented with ExecStartPre=/usr/bin/locale, the following
    output can be seen:
    
    locale[45481]: LANG=en_US
    locale[45481]: LC_CTYPE="en_US"
    locale[45481]: LC_NUMERIC="en_US"
    locale[45481]: LC_TIME="en_US"
    locale[45481]: LC_COLLATE="en_US"
    locale[45481]: LC_MONETARY="en_US"
    locale[45481]: LC_MESSAGES="en_US"
    locale[45481]: LC_PAPER="en_US"
    locale[45481]: LC_NAME="en_US"
    locale[45481]: LC_ADDRESS="en_US"
    locale[45481]: LC_TELEPHONE="en_US"
    locale[45481]: LC_MEASUREMENT="en_US"
    locale[45481]: LC_IDENTIFICATION="en_US"
    locale[45481]: LC_ALL=
    ipactl[45483]: Unexpected error
    ipactl[45483]: SystemEncodingError: System encoding must be UTF-8, 'iso8859-1' is not supported. Set LC_ALL="C.UTF-8", or LC_ALL="" and LC_CTYPE="C.UTF-8".
    systemd[1]: ipa.service: Main process exited, code=exited, status=1/FAILURE
    
    Set the environment to explicit LC_ALL=C.UTF-8 to please the Python
    code. FreeIPA server side only cares about actual encoding, not the
    language itself. We already use LC_ALL=C.UTF-8 in httpd service snippet.
    
    Fixes: https://pagure.io/freeipa/issue/8617
    Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com>
    Reviewed-By: Thomas Woerner <twoerner@redhat.com>
    Reviewed-By: Thomas Woerner <twoerner@redhat.com>
    
        
file modified
+1 -0