Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Getting DBD-mysql to work with Mac OS X Lion

by luis.roca (Deacon)
on Jan 13, 2012 at 15:08 UTC ( [id://947759]=note: print w/replies, xml ) Need Help??


in reply to Getting DBD-mysql to work with Mac OS X Lion

For now, just assume everything but the last error on or before line 17 is noise (If you could show that code to us it would be helpful). I would try to address that error first. It's very likely the rest will go away. If not, then you have some installation issues that can be addressed doing the following:
  1. Don't use the Perl included with Mac OSX. The system uses it along with modules and libraries your Mac came with.
  2. Install XCode (Can be done through the Mac App Store) to make sure things like gcc (C compiler) are on the machine and up to date.
  3. Keep a separate install of Perl, modules and libraries using either Activstate or Macports (I use and recommend Macports).
    • Once you install your own Perl using Macports you will start your Perl files with it's location. Likely: #!/opt/local/bin/perl
  4. Get yourself a good book/tutorial on Unix (BSD if you can).

I would strongly suggest doing the above regardless the outcome of this particular problem you're having. Good luck!


"...the adversities born of well-placed thoughts should be considered mercies rather than misfortunes." — Don Quixote

Replies are listed 'Best First'.
Re^2: Getting DBD-mysql to work with Mac OS X Lion
by bmckenzie (Sexton) on Jan 13, 2012 at 17:38 UTC

    Yes, I installed XCode. However, it never occurred to me that a good solution would be the one I'm more accustomed to -- getting some packaged distribution of Perl and managing it myself (without affecting the actual OS). Sounds great.

    If possible, I'd like to get this working before taking the Unix crash course, so I have to ask: if there are two copies of Perl on the same machine, how do I keep the OS (and me) from getting confused when "perl" is typed on the command line -- will I have to use a different shebang line in scripts?

    A monk's post (in 2005) suggests that there will not be a problem with paths, but that I should uninstall DBI and reinstall it with the new Perl. Still true?

    Thanks again,

    Bruce

      “ if there are two copies of Perl on the same machine, how do I keep the OS (and me) from getting confused when "perl" is typed on the command line -- will I have to use a different shebang line in scripts? ”

      If you're using Macports it will likely be: #!/opt/local/bin/perl and if you install modules through the ports library (e.g., $ sudo port install p5-Data-Dumper). However Macports does not have every module available so you will likely still have to navigate to that directory and install modules from there using MCPAN, cpanminus etc.

      To confirm the directory you can just use Mac OSX's Spotlight:

      1. (hit the Command and Spacebar keys at the same time). Type in 'Perl'
      2. Select 'Show all' at the top of the results. A window will appear.
      3. Under the window's search field select the 'plus' icon.
      4. Two drop down menus will appear in the row below. Change the second one to 'Folder'
      5. You will likely now see at least several folders (directories) with the name 'Perl'. Select the folders to see at the bottom of the window their exact location.

      Another tip: If you need to navigate to a specific location within a directory on the command line you can drag and drop that folder to the Mac OSX Terminal (The name of Apple's command line program). That will show the path. Place cd (change directory to:) in front of that path name and it takes you there. A nice trick for moving to something deeply nested.

      "...the adversities born of well-placed thoughts should be considered mercies rather than misfortunes." — Don Quixote

      You don't need to re-install perl, the built-in one works just fine, but the MySQL install from oracle just does not work with DBI and MySQL DBD client. Use the MacPorts mysql5 and mysql5 +server ports and everything falls into place. See my travails here <a href="http://groups.google.com/group/perl.dbi.users/browse_thread/thread/616d94b675c14b10?hl=en#"

        “ You don't need to re-install perl, the built-in one works just fine ... ”

        No one suggested re-installing Perl but to create a second install for development purposes :-) Working with the system Perl can be fine until it isn't and then it's a huge headache (e.g., Installing modules and plugins to included modules in the same location). This became more true with Snow Leopard and has been documented, among other places, here: How Do You Use Manage Perl Modules When Using A Package Manager, here: Perl Strategy For A New Snow Leopard User and here: Perl Script Problems

        * Some of these problems were due to Snow Leopard's 32-bit/64-bit issues which should no longer exist in Lion

        UPDATE
        Same Day, 13.Jan.2012 :: 2:10 PM :: Added other links discussing maintaining separate Perl builds on Mac OSX and note on 32-bit/64-bit (Snow Leopard).


        "...the adversities born of well-placed thoughts should be considered mercies rather than misfortunes." — Don Quixote
        Hi,

        Well I've spent some time learning about OS X Unix with the excellent Lynda.com tutorial. I uninstalled the Oracle mySQL and installed the one from MacPorts. It seems to be working OK -- I dragged my old DBs from the Windows PC into /opt/local/var/db/mysql5 and they show up in phpMyAdmin as expected.

        Alas, all this work does not seem to have impressed DBD::MySQL, which still fails in require as follows:

        Can't load '/Library/Perl/5.12/darwin-thread-multi-2level/auto/DBD/mys +ql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.12/dar +win-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not +loaded: libmysqlclient.18.dylib Referenced from: /Library/Perl/5.12/d +arwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle Reason: image n +ot found at /System/Library/Perl/5.12/darwin-thread-multi-2level/Dyna +Loader.pm line 204. at /Users/Bruce/Sites/public_html/cgi-bin/ptest.p +l line 17 Compilation failed in require at /Users/Bruce/Sites/public_ +html/cgi-bin/ptest.pl line 17. BEGIN failed--compilation aborted at / +Users/Bruce/Sites/public_html/cgi-bin/ptest.pl line 17.

        The perl script ptest.pl is a simple "Hello, World" that runs without complaint if I comment out the line "use DBD::MySQL;" Diagnosis with otool was recommended in some of the online discussion. I ran otool -L /Library/Perl/5.12/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle I got this result:

        libmysqlclient.18.dylib (compatibility version 18.0.0, current ver +sion 18.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current v +ersion 159.1.0)

        Suggestions for further troubleshooting are very welcome. I suppose the MacPorts perl distro might work better with their mySQL, but it seems like there ought to be a simpler solution.

        Cheers,

        Bruce

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://947759]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2024-04-16 12:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found