HippoMan Posted October 17, 2008 Share Posted October 17, 2008 I've been building PHP for years, and although I've always been able to get it running under a variety of OS's and enviroments, it always is painful to initially configure it. This is not a problem with PHP per se, but rather, with the gnu configure script and the way PHP uses it. I'd like to describe my issue in case any of you have already solved it and can suggest a course of action. Modern Linux systems have package managers such as YUM, APT, and others. These do a good job of keeping the various libraries and header files in sync, but they never seem to give me a PHP version that I can use. There always is at least one missing feature or library. Therefore, I always end up building my own version of PHP from the source code. In doing so, I start out with the gnu configure script, and my normal procedure goes like this: 1. run ./configure [OPTIONS] 2. it runs several minutes and then fails due to a missing dependency 3. install the dependency (usually some sort of *-dev package) 4. go back to step 1 If I'm installing PHP on a fresh system for the first time, I often have to repeat this sequence a dozen or more times until all the dependencies are satisfied and the configure program finally completes. So this brings up my question: do any of you know of a way to run configure so that it doesn't terminate after the first unmet dependency, but rather, so it goes to the end of its tests and then tells me all of the dependencies that were unfulfilled? If I could run configure in this way, I could then go to my package manager and install all of the appropriate *-dev packages in one swell foop, thereby cutting 2 or more hours off of the time necessary to get PHP built on my system. Thanks in advance for any tips or pointers you can give me concerning this issue. Quote Link to comment Share on other sites More sharing options...
MadTechie Posted October 17, 2008 Share Posted October 17, 2008 After a freash install i would do this sudo dpkg --configure -a sudo apt-get clean all sudo apt-get update maybe even sudo apt-get upgrade however.. if your using packages that are not include in the normal install why not get all of them then before you install ? as a side note this is the wrong section Quote Link to comment Share on other sites More sharing options...
trq Posted October 17, 2008 Share Posted October 17, 2008 These do a good job of keeping the various libraries and header files in sync, but they never seem to give me a PHP version that I can use. There always is at least one missing feature or library. You will find most distros build php in such a modular way that you can simply install static shared libraries of any required extensions through there package management system. Quote Link to comment Share on other sites More sharing options...
HippoMan Posted October 17, 2008 Author Share Posted October 17, 2008 OOPS ... I wanted this to go into the "PHP Help" section. How can I move this thread? Actually, on Debian-based systems I do exactly what you have suggested. But there are still a bunch of *-dev packages that don't get installed. And in any case, sometimes I am on Fedora or Centos systems and use YUM, and sometimes I am on Gentoo or even MacOSX systems. I'm just wondering if there's a way to run configure in the way I suggested. I'm now guessing that the answer is "no" ... Quote Link to comment Share on other sites More sharing options...
HippoMan Posted October 17, 2008 Author Share Posted October 17, 2008 You will find most distros build php in such a modular way that you can simply install static shared libraries of any required extensions through there package management system. Yes, I know that. But I sometimes hit cases where there isn't already an up-to-date extension for something that I want or need. There are also other version-related issues. For one example out of many, I just recently came across some software that requires PHP 5.2.3 or later, and I need to install this in a debian environment. However, the latest version of PHP that debian supports is 5.2.0, even in its "unstable" repository. I install PHP on a myriad of different systems and configurations, and this kind of thing comes up sometimes, and when it does, I always end up having to go back to building from source. This is what prompted my question here about gnu configure. Quote Link to comment Share on other sites More sharing options...
MadTechie Posted October 17, 2008 Share Posted October 17, 2008 OOPS ... I wanted this to go into the "PHP Help" section. How can I move this thread? You can't move it, It was moved here becuase he belongs here and not in PHP Help, Quote Link to comment Share on other sites More sharing options...
HippoMan Posted October 17, 2008 Author Share Posted October 17, 2008 OOPS ... I wanted this to go into the "PHP Help" section. How can I move this thread? You can't move it, It was moved here becuase he belongs here and not in PHP Help, Oh ... I was wondering how I could have gotten it into the "wrong" forum. I see that this the right forum, after all. I'm sorry for my confusion about this. Quote Link to comment Share on other sites More sharing options...
trq Posted October 17, 2008 Share Posted October 17, 2008 However, the latest version of PHP that debian supports is 5.2.0, even in its "unstable" repository. The unstable Debian repo contains 5.2.6 (I run several servers on unstable), etch (stable) is 5.2.0. Anyways, looking at make's docs I don't see any option to do what you want. A package is always going to fail if its dependencies aren't met. Quote Link to comment Share on other sites More sharing options...
HippoMan Posted October 17, 2008 Author Share Posted October 17, 2008 The unstable Debian repo contains 5.2.6 (I run several servers on unstable), etch (stable) is 5.2.0. Anyways, looking at make's docs I don't see any option to do what you want. A package is always going to fail if its dependencies aren't met. Of course we want configure to exit with an error if dependencies aren't met. However, it would be helpful and quite useful if it could optionally list all the unmet dependencies before exiting, instead of just the first one it finds. I'll find a forum or mailing list for the developers of gnu configure, and I'll ask them about this. And yes, I made a mistake in my /etc/apt/sources.list, and after correcting it, I see now that I can get 5.2.6 from unstable. Quote Link to comment Share on other sites More sharing options...
HippoMan Posted October 17, 2008 Author Share Posted October 17, 2008 The unstable Debian repo contains 5.2.6 (I run several servers on unstable), etch (stable) is 5.2.0. Anyways, looking at make's docs I don't see any option to do what you want. A package is always going to fail if its dependencies aren't met. Of course we want configure to exit with an error if dependencies aren't met. However, it would be helpful and quite useful if it could optionally list all the unmet dependencies before exiting, instead of just the first one it finds. I'll find a forum or mailing list for the developers of gnu configure, and I'll ask them about this. And yes, I made a mistake in my /etc/apt/sources.list, and after correcting it, I see now that I can get 5.2.6 from unstable ... and actually, from testing, as well. Quote Link to comment Share on other sites More sharing options...
HippoMan Posted October 17, 2008 Author Share Posted October 17, 2008 PS: On the system in question, I can't do any PHP upgrades from unstable, and for that matter, not even from testing. This is because one of the dependencies for both of these upgrades is that the kernel also be upgraded from the one that's currently in use, and this is impossible on the system in question. It's running under a VPN and the kernel can never be changed by a customer. This just gives another illustration of why it's sometimes unavoidable to have to build PHP from source, and why I'd like configure to work more conveniently. Thanks again to everyone. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.