Linux software on Mac OS X
Pack Your Mac
An increasing number of Linux desktop users also run a Mac, and although the Mac has a lot of great programs, Linux has a lot of apps you can't get natively for the Mac.
Fink and MacPorts are projects that focus on porting open source software to Mac systems. Both projects also provide a packaging system and an interface for command-line installation.
Pick a Project
MacPorts  is the more comprehensive project, with 5,807 packages (at time of writing) to Fink's 3,015. However, Fink  still offers certain packages that aren't in MacPorts. If you have a short list of packages you want to move to your Mac, check out both package lists to see which will work the best.
Or Mix and Match
Also, it's possible to mix and match: I run packages from both MacPorts and Fink on the same machine quite happily. This approach might cause conflicts, however; make sure you don't install the same program via both projects.
X11 and Xcode
The majority of packages in Fink and MacPorts that use a GUI will need X11 to run. (If all you're going to run is command-line software, you don't need X11; neither Fink nor MacPorts use it per se.) X11 is available on the Apple DVD that came with your Mac, and as of the Leopard (10.5) release, it is installed automatically.
If you're running 10.4 (Tiger), you need to put your installation DVD into your Mac, click the Optional Installs package, then choose X11 when you get to the appropriate screen of the installer.
For MacPorts, you'll also need Xcode, which you can install either from the Mac OS X installation DVD or from the Apple Developer website .
Although you can install binary packages in Fink without Xcode, you'll need it if you want to install from source.
Fink is easy to install: Just download the correct (PowerPC or Intel) installer disk image from the website, double-click the download and then the Installer package inside the disk image, and follow the instructions. The path setup program (at /sw/bin/pathsetup.sh) should run automatically at the end of the install; if not, you can run it manually from the Terminal. (Any other users on your system will need to run it manually from their own account if they want to use Fink-installed packages.)
To begin, open a new Terminal window and run fink scanpackages; fink index. To update the fink package, enter these two command lines:
sudo apt-get update sudo apt-get install fink
Now you should be able to install any other packages you want with the sudo apt-get install packagename command. If you prefer a GUI, you can use the Fink Commander software (Figure 1): Just launch the application, right-click on the relevant package name, and choose Binary | Install.
If you have Xcode, you can install from source with Fink. From Fink Commander, right-click on the package name then choose Source | Install. From the command line, use fink install packagename.
The packages in binary often lag behind the packages in source, so installing from source might be necessary sometimes.
To remove a package, use sudo apt-get remove packagename. In addition, it's worth noting that Fink installs all its software into /sw, so it doesn't interfere with your regular Apple software. This means that if you ever run into serious problems with an install or your Fink directory gets into an inconsistent state, you can simply remove the entire directory tree with sudo rm -rf /sw and reinstall from scratch.
To install MacPorts, stop by their website  to download the disk image for your version of OS X. To install it, mount the disk image and double-click on the package. The installer should adapt your path/shell automatically, but you might need to open a new Terminal window for this to take effect.
To update the available repositories, run sudo port selfupdate. (Each time you start installing software, it's a good idea to run this first.)
To install software, use sudo port install packagename. Dependencies will be installed automatically for you. Note that installing software from MacPorts can take a while because MacPorts usually builds the new package from source for you.
The sudo port search string command will search for partial matches of string. Also, you can specify software in other ways, such as with sudo port install category:net (Figure 2) to install all software in the "net" category. To see what exactly this will pull down, before installing, use sudo port echo category:net. This command merely lists the expansion that will be performed (i.e., the list of ports that match this category name, in this case).
To uninstall cleanly, use sudo port uninstall packagename. As with Fink, MacPorts installs everything separate from regular Apple software, but in this case, it's in /opt/local. So, again, if you run into serious problems, you can just delete the entire directory.
The sudo port installed command displays all currently installed ports, and you can upgrade all ports that have newer versions available with sudo port upgrade outdated.
MacPorts doesn't have a GUI available, so you're limited to the terminal. The port command is well documented, however (man port).
Both Fink and MacPorts do a very useful job reasonably well. If you prefer a GUI interface, you'll have to go with Fink; otherwise, both are about equally usable from the command line. The search command available with MacPorts doesn't seem to have a counterpart in Fink, but Fink will attempt to expand wildcard characters in package names. MacPorts also has more packages available, but they take longer to build than the binaries you get from Fink. Because the two projects occupy different directories, it's possible to use applications from both. Therefore, if you prefer, you can take advantage of the faster installs in Fink and fall back to MacPorts if Fink doesn't have the package you're after.
Bottom line: If you want consistency of software across your Linx and Mac machines, you can do it pretty easily.