I need to configure a server (*nix) that runs our (bespoke) CMS and Applications.
In the past I have defaulted to using Cent OS 5, but I find this outdated difficult to upgrade the software to the versions we require.
For example, we need PHP 5.3, but CentOS 5 has 5.2. Updating is fine but breaks something else (normally MySQL support in PHP).
Eventually it will get to a situation where I can't upgrade because of missing dependancies and incompatible versions.
Error: Missing Dependency: httpd = 2.2.3-43.el5.centos.3 is needed by package httpd-devel-2.2.3-43.el5.centos.3.i386 (updates)
Is there a better alternative OS for hassle free updates, I need:
- Apache 2.2.17 (the development version for apxs)
- MySQL 5.5.8
- PHP 5.3.5
All stable enterprise distros will suffer from this to some extent: in order to know that they're deploying a reliable combination of packages, vendors will avoid rolling out the latest and greatest until it's had a chance to be tested both by the vendor and the public.
Our solution to this has been to maintain our own private YUM repository of packages we compiled ourselves to meet our own requirements; this allows you to be reasonable about dependencies and still provides reasonable simplicity (no need to recompile every time) for new deployments of your standard packages.
I would caution against running a distro like Fedora for production: it is very clearly, in its own estimation, an option that sacrifices enterprise-class reliability for the latest-'n-greatest package set.
Hope these suggestions are helpful!
Personal I've been happy with FreeBSD. For some reason it's always made a little more sense to me than other *nix OS (It has great documentation). The ports system is great for applying updates, and I've had little problem with updates breaking things. Pkg_updating especially helps.
With any distro, if you're using packages that come with the os or even through 3rd party repo's, you're going to have to wait a least a little bit for them to build the latest version of the software you want, and sometimes that's a good thing because there may be stability or dependency issues you might not know about.
Of course, you can always build directly from source, then you never have to wait.
PS: Upgrading the base os is also quite easy and stable using freebsd-update even between major versions.
For severs I think debian is the best choice if you need a totally free solution.
I'll put my vote for ArchLinux. It's a rolling release setup, so no matter what you start with, you can always sync it to latest/greatest. I don't know if I'd run any servers on it, that might be a bit too adventurous for my taste, but it makes a great workstation.
fedora will allow you to get the newest versions, with the downside that you may need to upgrade every 6 months, although that does not always mean a reinstall. If you have rpm's (or centos/redhat related scripts) or knowledge of these it may be an acceptable option.
Otherwise, a ubuntu LTS version will be better with a life span of 18 months, with the downside of needing to convert to debs / dpkg. This may or may not be an issue for you.
Alternatively, try a rolling release distro (such as arch linux), that way you avoid the upgrade issues, but i've no experience of using rolling release setups for servers... and it gives me the heebie-jeebies.
On the other hand, centos 6 should be out fairly soon, which may solve your initial problem.
I understand this is going to sound a retro & counter-intuitive:
"Use the source,Luke"
I've run into exactly these problems with almost every distro family: Rpm-Yum-Centos-FC, Deb-Apt-Get-Ubuntu, Slack*, Bsd/& Gentoo. For me?
I created a source hierarchy and a few build scripts several years ago for our needs and because of these we have 100% distro (& architecture) independence.
It takes < 3 hours to port (really just copy and make) our stuff onto anybody's linux:RS Cloud, Slice, Ec2, generic dedicated hosts,etc.
Every few months I upgrade some part (php,httpd,mysql,etc) For me the tradeoffs are well worth it. I don't have to worry about upstream folks keeping the right stuff on hand. My build script checks to see whether we have make and gcc installed and adds those if not,etc.
I find out the versions and features we need and also have some QA tests for a build,but once you get set up with your own source hierarchy, and have automated building testing and installation, life is easier for me.
I created it to help w/ my then nightmarish upgrade from apache 1.3.x. php5.0.x (cgi mode no less) & mysql4 to apache 2.2.x,php5.2.5/mysql5.0 a few years back. I think for going from php5.2.5 to php5.3.3 I had to only change a couple of lines.
I'm rather annoyed at the crazy dependencies that exist in most of the main line repositories. If I want to install ImageMagick from a package manager, I end up with all this Xwindows cruft,that has no value to us at all.
You could even ... put your build stuff in your fave SCM (svn,git,etc) and just check out your stuff and go. Or drive it all with chef,puppet or even (don't laugh) expect :-)
Lastly,I try to keep machines in a farm at the same distro,and architecture, and then I can just copy our binaries around.
I'll echo @matthew's answer.
FreeBSD supports all of this in the main FreeBSD ports tree, right now. No need to add 3rd Party repositories, no funny hacks needed, and all of this is availalbe using the regular FreeBSD utilities.
Here are the versions in the FreeBSD ports tree, with links:
FreeBSD is a little different then OS's based on Linux. There is a small learning curve to get started. Some of this is appreciated (Ports always live under /usr/local , it's easy to control services using /etc/rc.conf). But don't be intimidated-- if you know Unix, you can learn FreeBSD.
You can setup your CentOS system to use 3rd party repo like atomic rocket turtle that offers more up to date software you need and dependences. If you want to switch distro you can look at Ubuntu (not-LTS) as those deb repos are pretty new.
Have you considered Scientific Linux (www.scientificlinux.org)?
Like CentOS, Scientific Linux is a Redhat derivative only it is put together by Fermilab, CERN, et. al.
They have their 6.0 version out (based on Redhat 6) and it comes with:
Another option, if you're not in a time crunch, is to wait for CentOS 6-- I have no idea how close they are to releasing tho.
Edit: Looks like the versions are still a little shy of what you're asking for...