[PLUG] Having chroot Problems with MySQL and Locales

Carlos Konstanski ckonstanski at pippiandcarlos.com
Wed Jun 2 15:50:25 UTC 2010


On 06/02/2010 07:46 AM, Mark Phillips wrote:
> I have created a 32 bit chroot (Debian Lenny) on my 64 bit Debian Squeeze
> machine. I am having a problem installing mysql into this chroot, as well as
> a problem with locales.
> 
> 1. I have run dpk-reconfigure locales, answered all the questions but I
> still get locale warnings:
> perl: warning: Falling back to the standard locale ("C").
> perl: warning: Setting locale failed.
> perl: warning: Please check that your locale settings:
>     LANGUAGE = (unset),
>     LC_ALL = (unset),
>     LANG = "en_US.UTF-8"
>     are supported and installed on your system.
> 
> 2. MySQL fails the configuration, but there are no error messages to say
> what is failing:
> Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
> invoke-rc.d: initscript mysql, action "start" failed.
> dpkg: error processing mysql-server-5.0 (--configure):
>  subprocess post-installation script returned error exit status 1
> dpkg: dependency problems prevent configuration of mysql-server:
>  mysql-server depends on mysql-server-5.0; however:
>   Package mysql-server-5.0 is not configured yet.
> dpkg: error processing mysql-server (--configure):
>  dependency problems - leaving unconfigured
> Errors were encountered while processing:
>  mysql-server-5.0
>  mysql-server
> 
> I have mounted /proc and /dev/pts to the chroot. Am I missing anything else?
> I can't seem to find a good mysql chroot example on the web - many of them
> work by installing mysql and then moving it to the chroot (won't for for me
> as I have a 64 bit system) or compiling from source. i could do that, but I
> was hoping not to have to.
> 
> Thanks!
> 
> Mark

In order to help you properly, I would have to try building a 32 bit chroot
on a debian box myself. I won't be able to do that until the weekend. So
here's a shot in the dark:

First run "locale -a". Do you see en_US.utf8 in the list? Good. If not, try
running "locale-gen" and then seeing if "locale -a" returns anything different.

Does your 32 bit filesystem contain a file /etc/default/locale? I see that
in my Ubuntu VM. It contains this line:

LANG="en_US-UTF8"

Try making it look like this:

LANG=en_US.utf8
LC_CTYPE=en_US.utf8
LC_MESSAGES=en_US.utf8
LC_PAPER=en_US.utf8
GDM_LANG=en_US.utf8

(Stay away from LC_ALL if possible; it is for clobbering all your LANG
settings in one felswoop, useful for scripts and such.)

I don't know whether you have to run some command to make changes to this
file "stick". In Gentoo the file would be called /etc/env.d/02locale, and
you'd have to run "env-update". Try logging out and back in(to your chroot),
and see what that does for you. Test the results by running the command
"locale", which will show you your current locale settings.

But I'm not sure that having your locale set to C is a bad thing for a
package installation. Some builds explicitly set the locale with LC_ALL="C"
in the makefile so that the output of the build commands will be predictable
and parseable. Though locale is a big deal once your database is running.

As for the mysql problem, all I can suggest at the moment is to try starting
it manually with the appropriate mysqld command. Maybe use "ps fauxw |grep
mysqld" to see the command line that your "good" mysql is using. Starting
mysql manually from a shell may cause more useful error messages to be
printed to stdout. There may be some debugging options to the mysqld command
as well.

You could locate the mysqld binary and run "file mysqld" to see if it is
really a 32 bit ELF executable. Though it could just as easily be a shell
script. Somewhere in the mysql installation there ought to be some binaries
which would work for this test.

Carlos



More information about the PLUG mailing list