Re: locale warning and postgresql
Hi! Myles Englishskribis: > 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
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
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
on [2016-11-28] at 21:47 Alex Kost writes: > Ludovic Courtès (2016-11-28 21:48 +0100) wrote: > >> Hi Myles, >> >> Myles Englishskribis: >> >>> 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
Ludovic Courtès (2016-11-28 21:48 +0100) wrote: > Hi Myles, > > Myles Englishskribis: > >> 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
Hi Myles, Myles Englishskribis: > 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’.