Shared publicly  - 
 
initscripts: DAEMON_LOCALE now redundant, will go away soon

In the beginning, the LOCALE setting of rc.conf was exported to all user sessions, but there was no way to change the hardcoded locale exported to daemons.

Much later, the DAEMON_LOCALE feature was added so that the same locale that was exported to users could also be exported to daemons.

We now default to DAEMON_LOCALE="yes", so that your locale settings are exported to all user sessions and daemons alike. However, It turns out that a significant portion of people (yours truly included) would like the daemons to have a different locale from the users, but not the default locale ("C"). Moreover, one might imagine that as computers could potentially have more than one user, and those users might not necessarily have the same mother tongue a more flexible solution would be nice.

Therefore, we have refactored our locale handling, and this is now available in [testing]. In this new scheme: /etc/locale.conf (or optionally rc.conf) sets the system locale, which applies to all daemons. This is also the fall-back locale which applies to user-sessions if nothing else is defined. Each user can now configure his/hers own locale in $HOME/.config/locale.conf, which applies only to their user session.

The syntax of $HOME/.config/locale.conf is the same as /etc/locale.conf and this behavior is the same if you use systemd or initscripts.

I can now (finally) set LANG=en_US.UTF-8 in /etc/locale.conf, LANG=nb_NO.UTF-8 in /home/ME/.config/locale.conf and LANG=tl_PH.UTF-8 in /home/SO/.config/locale.conf and all is good in the world.

For now, DAEMON_LOCALE still works, but as it is now redundant it is scheduled for removal in the next initscripts release.

Please shout if you notice any problems :)
2
Arthur Țițeică's profile phototimofonic timofonic's profile photoPedro Alejandro López-Valencia's profile photoTom Gundersen's profile photo
7 comments
 
Something's wrong in here.

# cat locale.conf
LANG=en_US.UTF-8
LC_COLLATE=C

however this doesn't get set:
# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Pure systemd install here.
 
Hmm... posting issues seems to aid in resolving them.

I had to force installing the filesystem package which now provides locale.sh and after that I proceeded with installing systemd-sysvcompat which deleted the same file.

Reinstalling filesystem solves the issue.
 
+Pedro Alejandro López-Valencia except for the fact that systemd never understood DAEMON_LOCALE, it applies the same to systemd. All of the user-specific stuff is done by /etc/profile.d/locale.sh, which is independent of init daemon.
 
Make sure /etc/profile.d/locale.sh exists and is the one from the filesystem package. If it is, file a bug with all the relevant info (the forum thread contain several unrelated issues, so hard to figure it exactly what your problem is).
Add a comment...