NYCPHP Meetup

NYPHP.org

[nycphp-talk] MAMP or XAMPP ?

Ajai Khattri ajai at bitblit.net
Tue Apr 27 08:10:47 EDT 2010


On Tue, 27 Apr 2010, Justin Hileman wrote:

> Homebrew is built on git and really simple ruby "recipes".

Sounds like Portage (the Gentoo Linux package system, which builds 
everything from source using 'ebuild' files that tell the installer how to 
build a package). I use Gentoo on my servers so Im pretty familiar with 
it. There is a project (Prefix) which aims to bring this package system to 
other platforms like MacOS, Solaris, etc so I might try it out on Mac.

I know I asked about MAMP and XAMPP but Im now thinking building from 
source would be a better way to go too.

> Homebrew installs everything in version-specific isolated folders, then 
> symlinks into `/usr/local` where local code really belongs :)

You decide where Prefix installs its stuff. Its a self-contained tree 
containing binaries, libraries, config files, etc.

> It's crazy simple to create your own Homebrew packages, just in case you 
> have to install something from source.

Gentoo's Portage also has the concept of 'overlays' which are 
user-contributed package sets that can be merged into your 'default' 
package set.

> It's crazy simple to modify existing Homebrew recipes... Because it's 
> built on Git, any upstream changes can be automatically merged into your 
> custom recipe.

With Portage you rsync with a mirror to update your package list. You can 
then update your installed packages with a single build command.

> Homebrew tries really hard not to mess with things that are installed 
> elsewhere. MacPorts and Fink play fast and loose with versions and 
> dependencies, and often install multiple copies of the same thing or 
> existing libraries (i.e. your cli and Apache PHP versions will often be 
> different).

Portage allows you to install different versions of a package 
simultaneously using a concept called slots.

Portage has the added advantage of 'USE' flags: basically you can control 
how a build is configured by setting various flags in a config file. The 
flags are persistent so you will always get things built the way you want 
them when rebuilding/upgrading a package. Most packages have sensible 
default USE flags but you can tweak them as much as you want.


-- 
Aj.




More information about the talk mailing list