Re: locale warning and postgresql

2016-11-29 Thread Ludovic Courtès
Hi!

Myles English  skribis:

> on [2016-11-28] at 20:48 Ludovic Courtès writes:
>
>> Myles English  skribis:
>>
>>> I have always had trouble with my locale after installing guix on Arch
>>> Linux (with zsh and a basic window manager, bspwm).  I have set
>>> GUIX_LOCPATH in ~/.zshenv and it appears correct in my shell.  The
>>> system-wide locale looks right.
>
> I should say that I have tried guix several times and usually (always?)
> get the locale warning.
>
>>> When I install postgresql it gives the usual "warning: failed to
>>> install locale: Invalid argument".  When I try to initialise a
>>> database cluster, passing the locale doesn't work.
>>>
>>> Does anyone using Arch Linux and a basic WM know which file to put
>>> GUIX_LOCPATH in so that the warning goes away?
>>>
>>> How can I find out what guix thinks its locale is or what are available?
>>>
>>> Is there a way to use initdb even though there is a locale warning?
>>>
>>> Shell experiments:
>>>
>>> $ locale
>>> LANG=en_GB.UTF-8
>>> LC_CTYPE="en_GB.UTF-8"
>>> LC_NUMERIC="en_GB.UTF-8"
>>> LC_TIME="en_GB.UTF-8"
>>> LC_COLLATE="en_GB.UTF-8"
>>> LC_MONETARY="en_GB.UTF-8"
>>> LC_MESSAGES="en_GB.UTF-8"
>>> LC_PAPER="en_GB.UTF-8"
>>> LC_NAME="en_GB.UTF-8"
>>> LC_ADDRESS="en_GB.UTF-8"
>>> LC_TELEPHONE="en_GB.UTF-8"
>>> LC_MEASUREMENT="en_GB.UTF-8"
>>> LC_IDENTIFICATION="en_GB.UTF-8"
>>> LC_ALL=
>>>
>>> $ echo $GUIX_LOCPATH
>>> /home/myles/.guix-profile/lib/locale
>>
>> What does “ls $GUIX_LOCPATH/2.24” show?
>
> $ ls $GUIX_LOCPATH/2.24
> ls: cannot access '/home/myles/.guix-profile/lib/locale/2.24': No such file 
> or directory
>
> Ah Hah!

See?  :-)

>> You must make sure you have the ‘glibc-locales’ or ‘glibc-utf8-locales’
>> that correspond to the glibc version of the program you are using (if
>> you just installed postgresql, it’s using glibc 2.24.)
>
> So I need to reinstall glibc-utf8-locales?  But alas...
>
> $ guix package -i glibc-utf8-locales
> warning: failed to install locale: Invalid argument <<< Gr! Bad guix! 
> Naughty!

At this point, I wouldn’t mind getting rid of this message altogether.
:-)

> Then I tried:
>
> $ guix graph --type=bag-emerged postgresql | dot -Tpdf > dag.pdf
>
> which I think shows that postgresql 9.5.3 depends on
> glibc-utf8-locales-2.23.

This is showing you compile-time (not run-time) dependencies of
postgresql, possibly a version other than the one you installed.

> How can I install  glibc 2.24 ?

If you install a postgresql from a recentish Guix, it’ll be linked
against glibc 2.24.

Ludo’.



Re: locale warning and postgresql

2016-11-28 Thread Leo Famulari
On Tue, Nov 29, 2016 at 12:53:59AM +, Myles English wrote:
> 
> on [2016-11-28] at 23:37 Myles English writes:
> 
> > $ initdb --locale=en_GB -E UTF8 -D '/home/myles/pgdata-guix'
> > The files belonging to this database system will be owned by user "myles".
> > This user must also own the server process.
> >
> > initdb: invalid locale name "en_GB"
> 
> Excuse my arrogance, I thought that en_GB was important enough to make
> it into glibc-utf8-locales.  After installing glibc-locales it works.

Glibc-ut8-locales is a small subset of glibc-locales. It's partially
intended for test environments, where using the full set of locales
could be impractical:

$ guix size glibc-utf8-locales
store item   totalself
/gnu/store/bhj5xdwwd2dg770lmlks7hyny8vzjm9x-glibc-utf8-locales-2.24 6.3 
6.3 100.0%
total: 6.3 MiB
$ guix size glibc-locales 
store item   totalself
/gnu/store/hyi7svs0ds79wrcg5l0nr36zzjikqj7i-glibc-locales-2.24 474.5   
474.5 100.0%
total: 474.5 MiB

Almost two orders of magnitude difference!



Re: locale warning and postgresql

2016-11-28 Thread Myles English

on [2016-11-28] at 23:37 Myles English writes:

> $ initdb --locale=en_GB -E UTF8 -D '/home/myles/pgdata-guix'
> The files belonging to this database system will be owned by user "myles".
> This user must also own the server process.
>
> initdb: invalid locale name "en_GB"

Excuse my arrogance, I thought that en_GB was important enough to make
it into glibc-utf8-locales.  After installing glibc-locales it works.

Myles



Re: locale warning and postgresql

2016-11-28 Thread Myles English

on [2016-11-28] at 21:47 Alex Kost writes:

> Ludovic Courtès (2016-11-28 21:48 +0100) wrote:
>
>> Hi Myles,
>>
>> Myles English  skribis:
>>
>>> I have always had trouble with my locale after installing guix on Arch
>>> Linux (with zsh and a basic window manager, bspwm).  I have set
>>> GUIX_LOCPATH in ~/.zshenv and it appears correct in my shell.  The
>>> system-wide locale looks right.  When I install postgresql it gives the
>>> usual "warning: failed to install locale: Invalid argument".  When I try
>>> to initialise a database cluster, passing the locale doesn't work.
>>>
>>> Does anyone using Arch Linux and a basic WM know which file to put
>>> GUIX_LOCPATH in so that the warning goes away?
>>>
>>> How can I find out what guix thinks its locale is or what are available?
>>>
>>> Is there a way to use initdb even though there is a locale warning?
>>>
>>> Shell experiments:
>>>
>>> $ locale
>>> LANG=en_GB.UTF-8
>>> LC_CTYPE="en_GB.UTF-8"
>>> LC_NUMERIC="en_GB.UTF-8"
>>> LC_TIME="en_GB.UTF-8"
>>> LC_COLLATE="en_GB.UTF-8"
>>> LC_MONETARY="en_GB.UTF-8"
>>> LC_MESSAGES="en_GB.UTF-8"
>>> LC_PAPER="en_GB.UTF-8"
>>> LC_NAME="en_GB.UTF-8"
>>> LC_ADDRESS="en_GB.UTF-8"
>>> LC_TELEPHONE="en_GB.UTF-8"
>>> LC_MEASUREMENT="en_GB.UTF-8"
>>> LC_IDENTIFICATION="en_GB.UTF-8"
>>> LC_ALL=
>>>
>>> $ echo $GUIX_LOCPATH
>>> /home/myles/.guix-profile/lib/locale
>>
>> What does “ls $GUIX_LOCPATH/2.24” show?
>>
>> You must make sure you have the ‘glibc-locales’ or ‘glibc-utf8-locales’
>> that correspond to the glibc version of the program you are using (if
>> you just installed postgresql, it’s using glibc 2.24.)
>>
>> Then you need to make sure GUIX_LOCPATH is set both in the environment
>> of the postgresql daemon, and in the environment of the commands you
>> invoke (initdb, etc.).
>
> Including the guix-daemon, as this warning:
>
>>> $ guix package -i postgresql
>>> warning: failed to install locale: Invalid argument
>>> The following package will be upgraded:
>>>postgresql   9.5.3 -> 9.5.3  
>>> /gnu/store/sfgg20a7jnwfisajsvqdijjm2zj905az-postgresql-9.5.3
>
> comes from the daemon, so make sure your "guix-daemon.service" has a
> line like this:
>
>   Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale

Thank you, I hadn't installed glibc-utf8-locales for root.  Perhaps this
step could be added to the documentation in "2.6.1 Locales"?

I also might have been using --locale wrong but I still can't get initdb
to use one:


$ initdb --locale=en_GB -E UTF8 -D '/home/myles/pgdata-guix'
The files belonging to this database system will be owned by user "myles".
This user must also own the server process.

initdb: invalid locale name "en_GB"


$ initdb --locale=en_GB.UTF-8 -E UTF8 -D '/home/myles/pgdata-guix'
The files belonging to this database system will be owned by user "myles".
This user must also own the server process.

initdb: invalid locale name "en_GB.UTF-8"


$ initdb -D '/home/myles/pgdata-guix'
The files belonging to this database system will be owned by user "myles".
This user must also own the server process.

initdb: invalid locale settings; check LANG and LC_* environment
variables


Any ideas?

Myles



Re: locale warning and postgresql

2016-11-28 Thread Alex Kost
Ludovic Courtès (2016-11-28 21:48 +0100) wrote:

> Hi Myles,
>
> Myles English  skribis:
>
>> I have always had trouble with my locale after installing guix on Arch
>> Linux (with zsh and a basic window manager, bspwm).  I have set
>> GUIX_LOCPATH in ~/.zshenv and it appears correct in my shell.  The
>> system-wide locale looks right.  When I install postgresql it gives the
>> usual "warning: failed to install locale: Invalid argument".  When I try
>> to initialise a database cluster, passing the locale doesn't work.
>>
>> Does anyone using Arch Linux and a basic WM know which file to put
>> GUIX_LOCPATH in so that the warning goes away?
>>
>> How can I find out what guix thinks its locale is or what are available?
>>
>> Is there a way to use initdb even though there is a locale warning?
>>
>> Shell experiments:
>>
>> $ locale
>> LANG=en_GB.UTF-8
>> LC_CTYPE="en_GB.UTF-8"
>> LC_NUMERIC="en_GB.UTF-8"
>> LC_TIME="en_GB.UTF-8"
>> LC_COLLATE="en_GB.UTF-8"
>> LC_MONETARY="en_GB.UTF-8"
>> LC_MESSAGES="en_GB.UTF-8"
>> LC_PAPER="en_GB.UTF-8"
>> LC_NAME="en_GB.UTF-8"
>> LC_ADDRESS="en_GB.UTF-8"
>> LC_TELEPHONE="en_GB.UTF-8"
>> LC_MEASUREMENT="en_GB.UTF-8"
>> LC_IDENTIFICATION="en_GB.UTF-8"
>> LC_ALL=
>>
>> $ echo $GUIX_LOCPATH
>> /home/myles/.guix-profile/lib/locale
>
> What does “ls $GUIX_LOCPATH/2.24” show?
>
> You must make sure you have the ‘glibc-locales’ or ‘glibc-utf8-locales’
> that correspond to the glibc version of the program you are using (if
> you just installed postgresql, it’s using glibc 2.24.)
>
> Then you need to make sure GUIX_LOCPATH is set both in the environment
> of the postgresql daemon, and in the environment of the commands you
> invoke (initdb, etc.).

Including the guix-daemon, as this warning:

>> $ guix package -i postgresql
>> warning: failed to install locale: Invalid argument
>> The following package will be upgraded:
>>postgresql9.5.3 -> 9.5.3  
>> /gnu/store/sfgg20a7jnwfisajsvqdijjm2zj905az-postgresql-9.5.3

comes from the daemon, so make sure your "guix-daemon.service" has a
line like this:

  Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale

-- 
Alex



Re: locale warning and postgresql

2016-11-28 Thread Ludovic Courtès
Hi Myles,

Myles English  skribis:

> I have always had trouble with my locale after installing guix on Arch
> Linux (with zsh and a basic window manager, bspwm).  I have set
> GUIX_LOCPATH in ~/.zshenv and it appears correct in my shell.  The
> system-wide locale looks right.  When I install postgresql it gives the
> usual "warning: failed to install locale: Invalid argument".  When I try
> to initialise a database cluster, passing the locale doesn't work.
>
> Does anyone using Arch Linux and a basic WM know which file to put
> GUIX_LOCPATH in so that the warning goes away?
>
> How can I find out what guix thinks its locale is or what are available?
>
> Is there a way to use initdb even though there is a locale warning?
>
> Shell experiments:
>
> $ locale
> LANG=en_GB.UTF-8
> LC_CTYPE="en_GB.UTF-8"
> LC_NUMERIC="en_GB.UTF-8"
> LC_TIME="en_GB.UTF-8"
> LC_COLLATE="en_GB.UTF-8"
> LC_MONETARY="en_GB.UTF-8"
> LC_MESSAGES="en_GB.UTF-8"
> LC_PAPER="en_GB.UTF-8"
> LC_NAME="en_GB.UTF-8"
> LC_ADDRESS="en_GB.UTF-8"
> LC_TELEPHONE="en_GB.UTF-8"
> LC_MEASUREMENT="en_GB.UTF-8"
> LC_IDENTIFICATION="en_GB.UTF-8"
> LC_ALL=
>
> $ echo $GUIX_LOCPATH
> /home/myles/.guix-profile/lib/locale

What does “ls $GUIX_LOCPATH/2.24” show?

You must make sure you have the ‘glibc-locales’ or ‘glibc-utf8-locales’
that correspond to the glibc version of the program you are using (if
you just installed postgresql, it’s using glibc 2.24.)

Then you need to make sure GUIX_LOCPATH is set both in the environment
of the postgresql daemon, and in the environment of the commands you
invoke (initdb, etc.).

HTH!

Ludo’.