On Apr 15, 2007, at 01:09, Karl Timmermann wrote:
On Apr 14, 2007, at 5:29 PM, Ryan Schmidt wrote:
The reason you should not do this, or at least the reason why I do not presently include a variant like this in the php5 portfile, is that it is MacPorts policy to use its own versions of software unless there is a compelling reason not to. What is your reason for not using the MacPorts version of mysql5?
First, thank you very much for the instructions on how to modify the port file. As to your other question, I have a lot of programs that are looking for mysql in the normal place.
These "lot of programs": are we talking about shell scripts here or php scripts or compiled C programs or what kinds of programs?
Also, I mentioned in another post that I was having problems with localhost mapping to the socket file - the port uses a custom location for the socket file, and a lot of my programs don't map correctly when connecting to localhost.
Yes, we need to solve that problem, and I am attempting to help you with that. If these other programs of yours are shell scripts, and they are using the MacPorts mysql5 client, then they should already know where this custom socket file is without being told anything. If these other programs are binaries which are linking with the MacPorts mysql5 libraries (for example, if you're using a php script running in the MacPorts version of php5 linked against the MacPorts mysql5 libraries), then it too will already know where the socket is and everything will just work. If you're using a php compiled against someone else's MySQL libraries and therefore it doesn't already know where the socket is, you can tell it by modifying the appropriate directive in the php.ini*. I need more information about your setup to try to understand why it's not "just working" for you. * The exception might be if you're using mysqli in php5. I haven't yet figured out how to tell mysqli where the socket is. This may be a php bug, a documentation deficiency, or a Ryan didn't look hard enough.
Another reason is the MySQL binary comes with a nice pref pane to turn it on and off and to start it up on boot up. I guess I just like it more "Mac like". :-)
The prefpane does not start MySQL at boot up. The StartupItem does. The prefpane merely changes a setting somewhere (well, a line in /etc/ hostconfig, to be exact) that tells the StartupItem whether or not to start the mysqld daemon when your Mac boots. And the prefpane can also start and stop the daemon immediately. MacPorts provides no prefpanes, true. Instead, when on 10.4, it uses the standard method of starting and stopping daemons: launchd. To start mysql5 now, and start it at every system startup, you use: sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist To stop mysql5 now, and stop it from starting at every system startup, use: sudo launchctl unload -w /Library/LaunchDaemons/ org.macports.mysql5.plist Once you know these commands, this knowledge applies to *all* daemons installed by MacPorts (and any daemons installed outside of MacPorts that use launchd). Whereas your MySQL prefpane is a solution only for MySQL, and each other daemon you have installed may have its own way of being started and stopped, and that's more confusing. Better to learn the One True Way to start daemons and use it for everything. Maybe someone has even written a prefpane to manage all your LaunchDaemons? That would be cool.
However, perhaps I could use the ports if I made proper symbolic links everywhere - then everything should work, including the pref pane. I could do this, or modify the port file to change the file paths. Do you recommend this instead?
I would not really recommend modifying the portfile. The reason is that your changes will be overwritten next time you port sync. Unless you set up your own local port tree. Which you could do. And keep your own private version of php5. But then you won't receive any updates I make to the real php5 portfile. So that might be bad. Making symlinks might work. But let's understand first where you think you need to make symlinks and why. Is it because you have some scripts that call /usr/local/mysql/bin/mysql directly? If so, then your choice is either to replace those calls with calls to /opt/local/ lib/mysql5/bin/mysql (or /opt/local/bin/mysql5, same difference), or go to /usr/local, make a directory mysql, make a directory bin inside that, and make a symlink mysql in that. Your prefpane probably needs to call mysqladmin to do its thing, so if you insist on continuing to use it you might make a symlink to that too. Though, now that I think about it, the prefpane may also assume you're using the old StartupItem from mysql.com and it might not play will with the new LaunchDaemon start/stop method used by the MacPorts version.