Installera Perl DBD för MySQL på 10.5 Leopard Server

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Då har man fastnat i Leopardträsket igen!

Vad är MySQLhotcopy?
Mac OS X 10.5 Leopard Server saknar "DBD MySQL" i Perl installationen. Det är något man behöver om man ska köra mysqlhotcopy - vilket man vill göra om man har stora databaser

Med hjälp av mysqlhotcopy kan man låsa tabellerna och göra en snabb kopiering av databasen, istället för att dumpa allt till en .sql fil. Resultatet är att en backup tar 5 minuter istället för 240 minuter (4 timmar) på 99.se databasen.

Vad är Perl DBI DBM?
Perl behöver en Database Interface Driver = DBI och en Drivrutin för databasen = DBD för att kunna ansluta till MySQL.

Så här långt kom jag:
1. Ladda ner DBD och DBI från Cpan.org:
http://www.cpan.org/modules/by-category/07_Database_Interfaces/DBD/

Jag valde DBI-1.604 och DBD-mysql-4.006.

2. Packa upp filerna med Mac OS X:s inbyggda archive utility (inte Stuffit Expander) och lägg filerna i /Library/Perl/

3. Starta terminalen:

Installera Perl DBI (i mitt fall 1.604):

cd /Library/Perl/DBI-1.604
sudo Perl Makefile.PL
sudo make
sudo make install

Klart!

Installera Perl MySQL DBD (i mitt fall 4.006):

cd /Library/Perl/DBD-mysql-4.006
sudo Perl Makefile.PL
sudo make test

...sen är det stopp. Den hittar inte rätt i filstrukturen.

Fler med samma problem
Mark Liyanage verkar ha liknande problem:
http://www.entropy.ch/blog/Developer/2008/03/25/Installing-Perl-DBD-mysql-on-Mac-OS-X-10-5.html

I Mark's fall så berodde det på att MySQL kördes i 64-bit version vilket jag också gör. Men jag har fler problem än så - i mitt fall stämmer inte filstrukturen så jag kan inte ens installera DBD (vilket Mark gjorde).

Ser att folk haft samma problem i Tiger Server:
http://www.99.se/mac-os-x-server/90108-xtools-perl-mysql-dbi-dbd-tiger-server.html

Nu har jag hittat lite fler som har samma problem (tack Google, vad skulle vi göra utan dig?). Så här skriver dom:

Ursprungligen av codeFiend:

Actually, you can install the most recent DBD::Mysql. The trick is – you have to modify the—cflags and—libs options for the makefile; there’s no way to do that from CPAN shell (as far as I can tell, but I’m a newbie to that), but it works fine when installing from source.

The problem is, mysql by default installs itself into /usr/local/mysql
Perl assumes that includes and libs are in /usr/local/mysql/include/mysql and /usr/local/mysql/lib/mysql respectively. To get it to work, we just have to correct that misconception:

perl Makefile.PL—cflags=”-I/usr/local/mysql/include -Os -arch i386 -fno-common”—libs=”-L/usr/local/mysql/lib -lmysqlclient -lz -lm”
make
make install

and there we go

Ursprungligen av davermont:

...try installing older versions, specifically DBI::Mysql 1.47 and DBD::Mysql 2.9006? That did the trick for me. If that doesn’t work, I can only advise continuing to search for solutions from other adventurous souls.

Ovanstående taget från:
http://microseeds.com/blog/?p=99

Fanns lite mer info här:
http://groups.google.com/group/perl.macosx/browse_thread/thread/60f2db2fcda3b240/458ad807d0754f9f?#458ad807d0754f9f

Sen finns det andra som väljer att kompilera om hela MySQL:

Ursprungligen av dhosek:

I've resolved the issue: Apparently there's an incompatibility with the libraries which are shipped with the mySQL binary for OS X and the Leopard XCode. Rebuilding MySQL from source resolved the issue.

http://www.perlmonks.org/?node_id=678893

Jag sätter igång och testar - däremot tänker jag inte kompilera om MySQL. Trist att Apple inte skeppar ett "fullständigt" och "UNIX-kompatibelt" OS utan väljer speciallösningar när det inte behövs. Det finns en poäng med standarder

Jag har kommit ett steg längre. Det är mer som saknas - så mycket att jag inte fixar det utan att kompilera om MySQL. Suck!

Ursprungligen av Alex:

libmysqlclient.so missing from MySQL binary
I worked on this for ages, reinstalled Ruby, MySQL and Rails at least three times each and tried to compile the mysql gem with all different varieties above. None worked – either I would get a compilation error (with the—with-mysql-dir variety) or the compilation would seem to go fine, for the Rails server inadvertently then to crash on a “Missing Symbol” error. For a technology promising to bring up web development productivity 10 fold, this was extremely discouraging.

What turned out to be the problem? The compiler needs the libmysqlclient.so (?) mysql library file to build the gem against. But each of the Mac OS X binaries I installed from MySQL .com, are distributed without this library. So no wonder the compiler could not compile successfully: it is missing a key component that is simply not installed when you are following the installation instructions (install the latest MySQL binary) above. I’m wondering why I seem to be the first to notice this?

Anyway, the solution takes a bit more time but is relatively simple. In stead of installing a binary, scroll down the MySQL distribution list and download the source code distribution. Follow the instructions in the INSTALL file to install this copy on your system, just remember to do ‘sudo make install’ in stead of ‘make install’ I even installed it on a different location /opt/mysql so as not to overwrite my standard binary installation on /usr/local/mysql . Afterwards the instructions above (sudo gcc_select … , sudo gem install …) work like a charm and my Ruby on Rails is finally working now.

For the people maintaining the installation packages and gems – has nobody ever noticed that this key libmysqlclient.so file is missing from the MacOSX binary of MySQL?

I dont understand why you have to install Apple Developer tools. Ruby is already on Mac OS X – out of the box.
-Alex

http://railsapplication.com/howtoinstallonosxtiger

Som en kommentar till ditt mejl och för att retas med glemme - är det något som är färdigt i Leopard-server?

MacPorts har färdiga installationsfiler för Perl DBD och DBI men tyvärr installerar dom om en ny MySQL 5 och det vill jag helst inte. Det verkar dessutom som om den installerar en 32-bit version av MySQL och det känns fel på en 64-bit Leopard maskin.

Några som har insikter i detta?

  • Medlem
  • Göteborg
  • 2008-10-30 13:21

Installera CPAN och rulla ut modulerna därifrån istället. De är betydligt snabbare på att hålla sitt repository fräsch och uppdaterat, plus att de inte har massa knasiga deps angående övrig mjukvara på systemet (icke-PERL).

En liten outline ang. installation CPAN på OSX hittades här:
Craic Computing Tech Tips: Perl CPAN on Mac OSX

Du behöver inte läsa längre än till steget "install Module::Build"

Dock löser detta inte problemet med libmysqlclient som du beskriver ovan. Allt som ska snacka med MySQL-databaser behöver ju detta lib, så du måste tyvärr kompilera om MySQL5. Om det nu stämmer att det inte följer med binärerna för OSX då, förstås.

// Kim Christensen

1
Bevaka tråden