Initial Commit
This commit is contained in:
754
database/perl/vendor/lib/DBD/mysql/INSTALL.pod
vendored
Normal file
754
database/perl/vendor/lib/DBD/mysql/INSTALL.pod
vendored
Normal file
@@ -0,0 +1,754 @@
|
||||
=encoding utf8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
DBD::mysql::INSTALL - How to install and configure DBD::mysql
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
perl Makefile.PL [options]
|
||||
make
|
||||
make test
|
||||
make install
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This document describes the installation and configuration of
|
||||
DBD::mysql, the Perl DBI driver for the MySQL database. Before
|
||||
reading on, make sure that you have the prerequisites available:
|
||||
Perl, MySQL and DBI. For details see the separate section
|
||||
L</PREREQUISITES>.
|
||||
|
||||
Depending on your version of Perl, it might be possible to
|
||||
use a binary distribution of DBD::mysql. If possible, this is
|
||||
recommended. Otherwise you need to install from the sources.
|
||||
If so, you will definitely need a C compiler. Installation
|
||||
from binaries and sources are both described in separate
|
||||
sections. L</BINARY INSTALLATION>. L</SOURCE INSTALLATION>.
|
||||
|
||||
Finally, if you encounter any problems, do not forget to
|
||||
read the section on known problems L</KNOWN PROBLEMS>. If
|
||||
that doesn't help, you should check the section on L</SUPPORT>.
|
||||
|
||||
=head1 PREREQUISITES
|
||||
|
||||
=over
|
||||
|
||||
=item Perl
|
||||
|
||||
Preferably a version of Perl, that comes preconfigured with
|
||||
your system. For example, all Linux and FreeBSD distributions
|
||||
come with Perl. For Windows, use L<ActivePerl|https://www.activestate.com/activeperl>
|
||||
or L<Strawberry Perl|http://www.strawberryperl.com>.
|
||||
|
||||
=item MySQL
|
||||
|
||||
You need not install the actual MySQL database server, the
|
||||
client files and the development files are sufficient. For
|
||||
example, Fedora Linux distribution comes with RPM files
|
||||
(using YUM) B<mysql> and B<mysql-server> (use "yum search"
|
||||
to find exact package names). These are sufficient, if the MySQL
|
||||
server is located on a foreign machine. You may also create client
|
||||
files by compiling from the MySQL source distribution and using
|
||||
|
||||
configure --without-server
|
||||
|
||||
If you are using Windows and need to compile from sources
|
||||
(which is only the case if you are not using ActivePerl or
|
||||
Strawberry Perl),
|
||||
then you must ensure that the header and library files are
|
||||
installed. This may require choosing a "Custom installation"
|
||||
and selecting the appropriate option when running the
|
||||
MySQL setup program.
|
||||
|
||||
=item DBI
|
||||
|
||||
DBD::mysql is a DBI driver, hence you need DBI. It is available
|
||||
from the same source where you got the DBD::mysql distribution
|
||||
from.
|
||||
|
||||
=item C compiler
|
||||
|
||||
A C compiler is only required if you install from source. In
|
||||
most cases there are binary distributions of DBD::mysql
|
||||
available. However, if you need a C compiler, make sure, that
|
||||
it is the same C compiler that was used for compiling Perl and
|
||||
MySQL! Otherwise you will almost definitely encounter problems
|
||||
because of differences in the underlying C runtime libraries.
|
||||
|
||||
In the worst case, this might mean to compile Perl and MySQL
|
||||
yourself. But believe me, experience shows that a lot of problems
|
||||
are fixed this way.
|
||||
|
||||
=item Gzip libraries
|
||||
|
||||
Late versions of MySQL come with support for compression. Thus
|
||||
it B<may> be required that you have install an RPM package like
|
||||
libz-devel, libgz-devel or something similar.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 BINARY INSTALLATION
|
||||
|
||||
Binary installation is possible in the most cases, depending
|
||||
on your system.
|
||||
|
||||
|
||||
=head2 Windows
|
||||
|
||||
=head3 Strawberry Perl
|
||||
|
||||
Strawberry Perl comes bundled with DBD::mysql and the needed
|
||||
client libraries.
|
||||
|
||||
=head3 ActiveState Perl
|
||||
|
||||
ActivePerl offers a PPM archive of DBD::mysql. All you need to
|
||||
do is typing in a cmd.exe window:
|
||||
|
||||
ppm install DBD-mysql
|
||||
|
||||
This will fetch the module via HTTP and install them. If you
|
||||
need to use a WWW proxy server, the environment variable
|
||||
HTTP_proxy must be set:
|
||||
|
||||
set HTTP_proxy=http://myproxy.example.com:8080/
|
||||
ppm install DBD-mysql
|
||||
|
||||
Of course you need to replace the host name C<myproxy.example.com>
|
||||
and the port number C<8080> with your local values.
|
||||
|
||||
If the above procedure doesn't work, please upgrade to the latest
|
||||
version of ActivePerl. ActiveState has a policy where it only
|
||||
provides access free-of-charge for the PPM mirrors of the last
|
||||
few stable Perl releases. If you have an older perl, you'd either
|
||||
need to upgrade your perl or contact ActiveState about a subscription.
|
||||
|
||||
|
||||
=head2 Red Hat Enterprise Linux (RHEL), CentOS and Fedora
|
||||
|
||||
Red Hat Enterprise Linux, its community derivatives such as
|
||||
CentOS, and Fedora come with MySQL and DBD::mysql.
|
||||
|
||||
Use the following command to install DBD::mysql:
|
||||
|
||||
yum install "perl(DBD::mysql)"
|
||||
|
||||
|
||||
=head2 Debian and Ubuntu
|
||||
|
||||
On Debian, Ubuntu and derivatives you can install DBD::mysql from
|
||||
the repositories with the following command:
|
||||
|
||||
sudo apt-get install libdbd-mysql-perl
|
||||
|
||||
|
||||
=head2 SLES and openSUSE
|
||||
|
||||
On SUSE Linux Enterprise and the community version openSUSE, you
|
||||
can install DBD::mysql from the repositories with the following
|
||||
command:
|
||||
|
||||
zypper install perl-DBD-mysql
|
||||
|
||||
|
||||
=head2 Other systems
|
||||
|
||||
In the case of other Linux or FreeBSD distributions it is very likely
|
||||
that all you need comes with your distribution.
|
||||
I just cannot give you names, as I am not using
|
||||
these systems.
|
||||
|
||||
Please let me know if you find the files in your favorite
|
||||
Linux or FreeBSD distribution so that I can extend the above list.
|
||||
|
||||
|
||||
=head1 SOURCE INSTALLATION
|
||||
|
||||
So you need to install from sources. If you are lucky, the Perl
|
||||
module C<CPAN> will do all for you, thanks to the excellent work
|
||||
of Andreas König. Otherwise you will need to do a manual
|
||||
installation.
|
||||
All of these installation types have their own section:
|
||||
L</CPAN installation>, L</Manual installation> and L</Configuration>.
|
||||
|
||||
The DBD::mysql Makefile.PL needs to know where to find your MySQL
|
||||
installation. This may be achieved using command line switches
|
||||
(see L</Configuration>) or automatically using the mysql_config binary
|
||||
which comes with most MySQL distributions. If your MySQL distribution
|
||||
contains mysql_config the easiest method is to ensure this binary
|
||||
is on your path.
|
||||
|
||||
Typically, this is the case if you've installed the mysql library
|
||||
from your systems' package manager.
|
||||
|
||||
e.g.
|
||||
|
||||
PATH=$PATH:/usr/local/mysql/bin
|
||||
export PATH
|
||||
|
||||
As stated, to compile DBD::mysql you'll need a C compiler. This should
|
||||
be the same compiler as the one used to build perl AND the mysql client
|
||||
libraries. If you're on linux, this is most typically the case and you
|
||||
need not worry. If you're on UNIX systems, you might want to pay
|
||||
attention.
|
||||
|
||||
Also you'll need to get the MySQL client and development headers on
|
||||
your system. The easiest is to get these from your package manager.
|
||||
|
||||
To run the tests that ship with the module, you'll need access to a
|
||||
running MySQL server. This can be running on localhost, but it can also
|
||||
be on a remote machine.
|
||||
|
||||
On Fedora the process is as follows. Please note that Fedora actually
|
||||
ships with MariaDB but not with MySQL. This is not a problem, it
|
||||
will work just as well.
|
||||
In this example we install and start a local server for running the
|
||||
tests against.
|
||||
|
||||
yum -y install make gcc mariadb-devel mariadb-libs mariadb-server
|
||||
yum -y install "perl(Test::Deep)" "perl(Test::More)"
|
||||
systemctl start mariadb.service
|
||||
|
||||
|
||||
=head2 Environment Variables
|
||||
|
||||
For ease of use, you can set environment variables for
|
||||
DBD::mysql installation. You can set any or all of the options, and
|
||||
export them by putting them in your .bashrc or the like:
|
||||
|
||||
export DBD_MYSQL_CFLAGS=-I/usr/local/mysql/include/mysql
|
||||
export DBD_MYSQL_LIBS="-L/usr/local/mysql/lib/mysql -lmysqlclient"
|
||||
export DBD_MYSQL_EMBEDDED=
|
||||
export DBD_MYSQL_CONFIG=mysql_config
|
||||
export DBD_MYSQL_NOCATCHSTDERR=0
|
||||
export DBD_MYSQL_NOFOUNDROWS=0
|
||||
export DBD_MYSQL_NOSSL=
|
||||
export DBD_MYSQL_TESTDB=test
|
||||
export DBD_MYSQL_TESTHOST=localhost
|
||||
export DBD_MYSQL_TESTPASSWORD=s3kr1+
|
||||
export DBD_MYSQL_TESTPORT=3306
|
||||
export DBD_MYSQL_TESTUSER=me
|
||||
|
||||
The most useful may be the host, database, port, socket, user, and password.
|
||||
|
||||
Installation will first look to your mysql_config, and then your
|
||||
environment variables, and then it will guess with intelligent defaults.
|
||||
|
||||
=head2 CPAN installation
|
||||
|
||||
Installation of DBD::mysql can be incredibly easy:
|
||||
|
||||
cpan DBD::mysql
|
||||
|
||||
Please note that this will only work if the prerequisites are
|
||||
fulfilled, which means you have a C-compiler installed, and you
|
||||
have the development headers and mysql client libraries available
|
||||
on your system.
|
||||
|
||||
If you are using the CPAN module for the first time, just answer
|
||||
the questions by accepting the defaults which are fine in most
|
||||
cases.
|
||||
|
||||
If you cannot get the CPAN module working, you might try manual
|
||||
installation. If installation with CPAN fails because the your local
|
||||
settings have been guessed wrong, you need to ensure MySQL's
|
||||
mysql_config is on your path (see L</SOURCE INSTALLATION>) or
|
||||
alternatively create a script called C<mysql_config>. This is
|
||||
described in more details later. L</Configuration>.
|
||||
|
||||
|
||||
=head2 Manual installation
|
||||
|
||||
For a manual installation you need to fetch the DBD::mysql
|
||||
source distribution. The latest version is always available
|
||||
from
|
||||
|
||||
https://metacpan.org/module/DBD::mysql
|
||||
|
||||
The name is typically something like
|
||||
|
||||
DBD-mysql-4.025.tar.gz
|
||||
|
||||
The archive needs to be extracted. On Windows you may use a tool
|
||||
like 7-zip, on *nix you type
|
||||
|
||||
tar xf DBD-mysql-4.025.tar.gz
|
||||
|
||||
This will create a subdirectory DBD-mysql-4.025. Enter this
|
||||
subdirectory and type
|
||||
|
||||
perl Makefile.PL
|
||||
make
|
||||
make test
|
||||
|
||||
(On Windows you may need to replace "make" with "dmake" or
|
||||
"nmake".) If the tests seem to look fine, you may continue with
|
||||
|
||||
make install
|
||||
|
||||
If the compilation (make) or tests fail, you might need to
|
||||
configure some settings.
|
||||
|
||||
For example you might choose a different database, the C
|
||||
compiler or the linker might need some flags. L</Configuration>.
|
||||
L</Compiler flags>. L</Linker flags>.
|
||||
|
||||
For Cygwin there is a special section below.
|
||||
L</Cygwin>.
|
||||
|
||||
|
||||
=head2 Configuration
|
||||
|
||||
The install script "Makefile.PL" can be configured via a lot of
|
||||
switches. All switches can be used on the command line. For
|
||||
example, the test database:
|
||||
|
||||
perl Makefile.PL --testdb=<db>
|
||||
|
||||
If you do not like configuring these switches on the command
|
||||
line, you may alternatively create a script called C<mysql_config>.
|
||||
This is described later on.
|
||||
|
||||
Available switches are:
|
||||
|
||||
=over
|
||||
|
||||
=item testdb
|
||||
|
||||
Name of the test database, defaults to B<test>.
|
||||
|
||||
=item testuser
|
||||
|
||||
Name of the test user, defaults to empty. If the name is empty,
|
||||
then the currently logged in users name will be used.
|
||||
|
||||
=item testpassword
|
||||
|
||||
Password of the test user, defaults to empty.
|
||||
|
||||
=item testhost
|
||||
|
||||
Host name or IP number of the test database; defaults to localhost.
|
||||
|
||||
=item testport
|
||||
|
||||
Port number of the test database
|
||||
|
||||
=item ps-protcol=1 or 0
|
||||
|
||||
Whether to run the test suite using server prepared statements or driver
|
||||
emulated prepared statements. ps-protocol=1 means use server prepare,
|
||||
ps-protocol=0 means driver emulated.
|
||||
|
||||
=item cflags
|
||||
|
||||
This is a list of flags that you want to give to the C compiler.
|
||||
The most important flag is the location of the MySQL header files.
|
||||
For example, on Red Hat Linux the header files are in /usr/include/mysql
|
||||
and you might try
|
||||
|
||||
-I/usr/include/mysql
|
||||
|
||||
On Windows the header files may be in C:\mysql\include and you might try
|
||||
|
||||
-IC:\mysql\include
|
||||
|
||||
The default flags are determined by running
|
||||
|
||||
mysql_config --cflags
|
||||
|
||||
More details on the C compiler flags can be found in the following
|
||||
section. L</Compiler flags>.
|
||||
|
||||
=item libs
|
||||
|
||||
This is a list of flags that you want to give to the linker
|
||||
or loader. The most important flags are the locations and names
|
||||
of additional libraries. For example, on Red Hat Linux your
|
||||
MySQL client libraries are in /usr/lib/mysql and you might try
|
||||
|
||||
-L/usr/lib/mysql -lmysqlclient -lz
|
||||
|
||||
On Windows the libraries may be in C:\mysql\lib and
|
||||
|
||||
-LC:\mysql\lib -lmysqlclient
|
||||
|
||||
might be a good choice. The default flags are determined by running
|
||||
|
||||
mysql_config --libs
|
||||
|
||||
More details on the linker flags can be found in a separate section.
|
||||
L<Linker flags>.
|
||||
|
||||
=back
|
||||
|
||||
If a switch is not present on the command line, then the
|
||||
script C<mysql_config> will be executed. This script comes
|
||||
as part of the MySQL distribution. For example, to determine
|
||||
the C compiler flags, we are executing
|
||||
|
||||
mysql_config --cflags
|
||||
mysql_config --libs
|
||||
|
||||
If you want to configure your own settings for database name,
|
||||
database user and so on, then you have to create a script with
|
||||
the same name, that replies
|
||||
|
||||
|
||||
=head2 Compiler flags
|
||||
|
||||
Note: the following info about compiler and linker flags, you shouldn't have
|
||||
to use these options because Makefile.PL is pretty good at utilizing
|
||||
mysql_config to get the flags that you need for a successful compile.
|
||||
|
||||
It is typically not so difficult to determine the appropriate
|
||||
flags for the C compiler. The linker flags, which you find in
|
||||
the next section, are another story.
|
||||
|
||||
The determination of the C compiler flags is usually left to
|
||||
a configuration script called F<mysql_config>, which can be
|
||||
invoked with
|
||||
|
||||
mysql_config --cflags
|
||||
|
||||
When doing so, it will emit a line with suggested C compiler
|
||||
flags, for example like this:
|
||||
|
||||
-L/usr/include/mysql
|
||||
|
||||
The C compiler must find some header files. Header files have
|
||||
the extension C<.h>. MySQL header files are, for example,
|
||||
F<mysql.h> and F<mysql_version.h>. In most cases the header
|
||||
files are not installed by default. For example, on Windows
|
||||
it is an installation option of the MySQL setup program
|
||||
(Custom installation), whether the header files are installed
|
||||
or not. On Red Hat Linux, you need to install an RPM archive
|
||||
F<mysql-devel> or F<MySQL-devel>.
|
||||
|
||||
If you know the location of the header files, then you will
|
||||
need to add an option
|
||||
|
||||
-L<header directory>
|
||||
|
||||
to the C compiler flags, for example C<-L/usr/include/mysql>.
|
||||
|
||||
|
||||
=head2 Linker flags
|
||||
|
||||
Appropriate linker flags are the most common source of problems
|
||||
while installing DBD::mysql. I will only give a rough overview,
|
||||
you'll find more details in the troubleshooting section.
|
||||
L</KNOWN PROBLEMS>
|
||||
|
||||
The determination of the C compiler flags is usually left to
|
||||
a configuration script called F<mysql_config>, which can be
|
||||
invoked with
|
||||
|
||||
mysql_config --libs
|
||||
|
||||
When doing so, it will emit a line with suggested C compiler
|
||||
flags, for example like this:
|
||||
|
||||
-L'/usr/lib/mysql' -lmysqlclient -lnsl -lm -lz -lcrypt
|
||||
|
||||
The following items typically need to be configured for the
|
||||
linker:
|
||||
|
||||
=over
|
||||
|
||||
=item The mysqlclient library
|
||||
|
||||
The MySQL client library comes as part of the MySQL distribution.
|
||||
Depending on your system it may be a file called
|
||||
|
||||
F<libmysqlclient.a> statically linked library, Unix
|
||||
F<libmysqlclient.so> dynamically linked library, Unix
|
||||
F<mysqlclient.lib> statically linked library, Windows
|
||||
F<mysqlclient.dll> dynamically linked library, Windows
|
||||
|
||||
or something similar.
|
||||
|
||||
As in the case of the header files, the client library is typically
|
||||
not installed by default. On Windows you will need to select them
|
||||
while running the MySQL setup program (Custom installation). On
|
||||
Red Hat Linux an RPM archive F<mysql-devel> or F<MySQL-devel> must
|
||||
be installed.
|
||||
|
||||
The linker needs to know the location and name of the mysqlclient
|
||||
library. This can be done by adding the flags
|
||||
|
||||
-L<lib directory> -lmysqlclient
|
||||
|
||||
or by adding the complete path name. Examples:
|
||||
|
||||
-L/usr/lib/mysql -lmysqlclient
|
||||
-LC:\mysql\lib -lmysqlclient
|
||||
|
||||
If you would like to use the static libraries (and there are
|
||||
excellent reasons to do so), you need to create a separate
|
||||
directory, copy the static libraries to that place and use
|
||||
the -L switch above to point to your new directory. For example:
|
||||
|
||||
mkdir /tmp/mysql-static
|
||||
cp /usr/lib/mysql/*.a /tmp/mysql-static
|
||||
perl Makefile.PL --libs="-L/tmp/mysql-static -lmysqlclient"
|
||||
make
|
||||
make test
|
||||
make install
|
||||
rm -rf /tmp/mysql-static
|
||||
|
||||
|
||||
=item The gzip library
|
||||
|
||||
The MySQL client can use compression when talking to the MySQL
|
||||
server, a nice feature when sending or receiving large texts over
|
||||
a slow network.
|
||||
|
||||
On Unix you typically find the appropriate file name by running
|
||||
|
||||
ldconfig -p | grep libz
|
||||
ldconfig -p | grep libgz
|
||||
|
||||
Once you know the name (libz.a or libgz.a is best), just add it
|
||||
to the list of linker flags. If this seems to be causing problem
|
||||
you may also try to link without gzip libraries.
|
||||
|
||||
=back
|
||||
|
||||
=head1 ENCRYPTED CONNECTIONS via SSL
|
||||
|
||||
Connecting to your servers over an encrypted connection (SSL) is only possible
|
||||
if you enabled this setting at build time. Since version 4.034, this is the
|
||||
default.
|
||||
|
||||
Attempting to connect to a server that requires an encrypted connection without
|
||||
first having L<DBD::mysql> compiled with the C<--ssl> option will result in
|
||||
an error that makes things appear as if your password is incorrect.
|
||||
|
||||
If you want to compile L<DBD::mysql> without SSL support, which you might
|
||||
probably only want if you for some reason can't install libssl headers, you
|
||||
can do this by passing the C<--nossl> option to Makefile.PL or by setting the
|
||||
DBD_MYSQL_NOSSL environment variable to '1'.
|
||||
|
||||
|
||||
=head1 MARIADB NATIVE CLIENT INSTALLATION
|
||||
|
||||
The MariaDB native client is another option for connecting to a MySQL·
|
||||
database licensed LGPL 2.1. To build DBD::mysql against this client, you
|
||||
will first need to build the client. Generally, this is done with
|
||||
the following:
|
||||
|
||||
cd path/to/src/mariadb-native-client
|
||||
cmake -G "Unix Makefiles'
|
||||
make
|
||||
sudo make install
|
||||
|
||||
Once the client is built and installed, you can build DBD::mysql against
|
||||
it:
|
||||
|
||||
perl Makefile.PL --testuser=xxx --testpassword=xxx --testsocket=/path/to//mysqld.sock --mysql_config=/usr/local/bin/mariadb_config·
|
||||
make
|
||||
make test
|
||||
make install
|
||||
|
||||
=head1 SPECIAL SYSTEMS
|
||||
|
||||
Below you find information on particular systems:
|
||||
|
||||
=head2 macOS
|
||||
|
||||
For installing DBD::mysql you need to have the libssl header files and the
|
||||
mysql client libs. The easiest way to install these is using Homebrew
|
||||
(L<https://brew.sh/>).
|
||||
|
||||
Once you have Homebrew set up, you can simply install the dependencies using
|
||||
|
||||
brew install openssl mysql-connector-c
|
||||
|
||||
Then you can install DBD::mysql using your cpan client.
|
||||
|
||||
=head2 Cygwin
|
||||
|
||||
If you are a user of Cygwin you already
|
||||
know, it contains a nicely running perl 5.6.1, installation of
|
||||
additional modules usually works like a charm via the standard
|
||||
procedure of
|
||||
|
||||
perl makefile.PL
|
||||
make
|
||||
make test
|
||||
make install
|
||||
|
||||
The Windows binary distribution of MySQL runs smoothly under Cygwin.
|
||||
You can start/stop the server and use all Windows clients without problem.
|
||||
But to install DBD::mysql you have to take a little special action.
|
||||
|
||||
Don't attempt to build DBD::mysql against either the MySQL Windows or
|
||||
Linux/Unix BINARY distributions: neither will work!
|
||||
|
||||
You MUST compile the MySQL clients yourself under Cygwin, to get a
|
||||
'libmysqlclient.a' compiled under Cygwin. Really! You'll only need
|
||||
that library and the header files, you don't need any other client parts.
|
||||
Continue to use the Windows binaries. And don't attempt (currently) to
|
||||
build the MySQL Server part, it is unnecessary, as MySQL AB does an
|
||||
excellent job to deliver optimized binaries for the mainstream
|
||||
operating systems, and it is told, that the server compiled under Cygwin is
|
||||
unstable.
|
||||
|
||||
Install a MySQL server for testing against. You can install the regular
|
||||
Windows MySQL server package on your Windows machine, or you can also
|
||||
test against a MySQL server on a remote host.
|
||||
|
||||
=head3 Build MySQL clients under Cygwin:
|
||||
|
||||
download the MySQL LINUX source from
|
||||
L<https://www.mysql.com/downloads>,
|
||||
unpack mysql-<version>.tar.gz into some tmp location and from this directory
|
||||
run configure:
|
||||
|
||||
./configure --prefix=/usr/local/mysql --without-server
|
||||
|
||||
This prepares the Makefile with the installed Cygwin features. It
|
||||
takes some time, but should finish without error. The 'prefix', as
|
||||
given, installs the whole Cygwin/MySQL thingy into a location not
|
||||
normally in your PATH, so that you continue to use already installed
|
||||
Windows binaries. The --without-server parameter tells configure to
|
||||
only build the clients.
|
||||
|
||||
make
|
||||
|
||||
This builds all MySQL client parts ... be patient. It should finish
|
||||
finally without any error.
|
||||
|
||||
make install
|
||||
|
||||
This installs the compiled client files under /usr/local/mysql/.
|
||||
Remember, you don't need anything except the library under
|
||||
/usr/local/mysql/lib and the headers under /usr/local/mysql/include!
|
||||
|
||||
Essentially you are now done with this part. If you want, you may try
|
||||
your compiled binaries shortly; for that, do:
|
||||
|
||||
cd /usr/local/mysql/bin
|
||||
./mysql -h 127.0.0.1
|
||||
|
||||
The host (-h) parameter 127.0.0.1 targets the local host, but forces
|
||||
the mysql client to use a TCP/IP connection. The default would be a
|
||||
pipe/socket connection (even if you say '-h localhost') and this
|
||||
doesn't work between Cygwin and Windows (as far as I know).
|
||||
|
||||
If you have your MySQL server running on some other box, then please
|
||||
substitute '127.0.0.1' with the name or IP-number of that box.
|
||||
|
||||
Please note, in my environment the 'mysql' client did not accept a
|
||||
simple RETURN, I had to use CTRL-RETURN to send commands
|
||||
... strange,
|
||||
but I didn't attempt to fix that, as we are only interested in the
|
||||
built lib and headers.
|
||||
|
||||
At the 'mysql>' prompt do a quick check:
|
||||
|
||||
mysql> use mysql
|
||||
mysql> show tables;
|
||||
mysql> select * from db;
|
||||
mysql> exit
|
||||
|
||||
You are now ready to build DBD::mysql!
|
||||
|
||||
=head3 compile DBD::mysql
|
||||
|
||||
download and extract DBD-mysql-<version>.tar.gz from CPAN
|
||||
|
||||
cd into unpacked dir DBD-mysql-<version>
|
||||
you probably did that already, if you are reading this!
|
||||
|
||||
cp /usr/local/mysql/bin/mysql_config .
|
||||
|
||||
This copies the executable script mentioned in the DBD::mysql docs
|
||||
from your just built Cywin/MySQL client directory; it knows about
|
||||
your Cygwin installation, especially about the right libraries to link
|
||||
with.
|
||||
|
||||
perl Makefile.PL --testhost=127.0.0.1
|
||||
|
||||
The --testhost=127.0.0.1 parameter again forces a TCP/IP connection
|
||||
to the MySQL server on the local host instead of a pipe/socket
|
||||
connection for the 'make test' phase.
|
||||
|
||||
make
|
||||
|
||||
This should run without error
|
||||
|
||||
make test
|
||||
make install
|
||||
|
||||
This installs DBD::mysql into the Perl hierarchy.
|
||||
|
||||
|
||||
=head1 KNOWN PROBLEMS
|
||||
|
||||
=head2 no gzip on your system
|
||||
|
||||
Some Linux distributions don't come with a gzip library by default.
|
||||
Running "make" terminates with an error message like
|
||||
|
||||
LD_RUN_PATH="/usr/lib/mysql:/lib:/usr/lib" gcc
|
||||
-o blib/arch/auto/DBD/mysql/mysql.so -shared
|
||||
-L/usr/local/lib dbdimp.o mysql.o -L/usr/lib/mysql
|
||||
-lmysqlclient -lm -L/usr/lib/gcc-lib/i386-redhat-linux/2.96
|
||||
-lgcc -lz
|
||||
/usr/bin/ld: cannot find -lz
|
||||
collect2: ld returned 1 exit status
|
||||
make: *** [blib/arch/auto/DBD/mysql/mysql.so] Error 1
|
||||
|
||||
If this is the case for you, install an RPM archive like
|
||||
libz-devel, libgz-devel, zlib-devel or gzlib-devel or something
|
||||
similar.
|
||||
|
||||
=head2 different compiler for mysql and perl
|
||||
|
||||
If Perl was compiled with gcc or egcs, but MySQL was compiled
|
||||
with another compiler or on another system, an error message like
|
||||
this is very likely when running "Make test":
|
||||
|
||||
t/00base............install_driver(mysql) failed: Can't load
|
||||
'../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
|
||||
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: _umoddi3
|
||||
at /usr/local/perl-5.005/lib/5.005/i586-linux-thread/DynaLoader.pm
|
||||
line 168.
|
||||
|
||||
This means, that your linker doesn't include libgcc.a. You have
|
||||
the following options:
|
||||
|
||||
The solution is telling the linker to use libgcc. Run
|
||||
|
||||
gcc --print-libgcc-file
|
||||
|
||||
to determine the exact location of libgcc.a or for older versions
|
||||
of gcc
|
||||
|
||||
gcc -v
|
||||
|
||||
to determine the directory. If you know the directory, add a
|
||||
|
||||
-L<directory> -lgcc
|
||||
|
||||
to the list of C compiler flags. L</Configuration>. L</Linker flags>.
|
||||
|
||||
=head1 SUPPORT
|
||||
|
||||
Finally, if everything else fails, you are not alone. First of
|
||||
all, for an immediate answer, you should look into the archives
|
||||
of the dbi-users mailing list, which is available at
|
||||
L<http://groups.google.com/group/perl.dbi.users?hl=en&lr=>
|
||||
|
||||
To subscribe to this list, send and email to
|
||||
|
||||
dbi-users-subscribe@perl.org
|
||||
|
||||
If you don't find an appropriate posting and reply in the
|
||||
mailing list, please post a question. Typically a reply will
|
||||
be seen within one or two days.
|
||||
Reference in New Issue
Block a user