Book Review: Mac OS X Tiger for Unix Geeks
Volume Number: 22 (2006)
Issue Number: 3
Column Tag: Review
Book Review: Mac OS X Tiger for Unix Geeks
by Mary Norbury-Glaser
Mac OS X Tiger for Unix Geeks, published by O'Reilly, is a book for Unix sysadmins and developers who are interested in discovering Mac OS X's underlying Unix roots. The authors, Brian Jepson and Ernest E. Rothman, assume the reader has a solid familiarity with Unix fundamentals.
The book is divided into four instructional parts (Getting Around, Building Applications, Working With Packages, and Serving and System Management) and a final section devoted to two appendicxes (Mac OS X GUI Primer and Mac OS X's Unix Development Tools).
Part I is an introduction to Unix on Mac OS X in ten chapters and is so extensive that it constitutes half the book. Chapter 1 introduces differences between the Terminal app and xterm and xterm-like applications specific to systems running X Windows, how to customize the terminal, and working with files and directories. Chapter 2 covers Spotlight and searching metadata from the command line using mdfind. The next chapter deals with file transfer issues that arise from moving data between different file systems. This is a particularly helpful section on understanding the consequences of transferring large numbers of files between foreign operating systems. The authors also list directories in tabular format: /, /etc, /System/Library, /Library, /var, and /dev.
There are some distinct startup differences between traditional Unix systems and Mac OS X Tiger, detailed in and the boot process is detailed in Chapter 4. In fact, there are changes between Tiger and pre-Tiger systems and this chapter presents an outline of the differences and consequences very nicely. A logical consequence of this discussion is how to add startup items and schedule tasks and the authors illustrate this with a very useful MySQL startup script.
Chapter 5, Directory Services, gives a brief overview of understanding and configuring Open Directory, and Mac OS X's version of Directory Services. There is a very helpful section on working with passwords and the authors demonstrate four NetInfo/Directory Services utilities: dscl, nireport, nidump, and niload.
Printing through both the GUI and through the included Unix tools (CUPS and Gimp-Print) is the topic of Chapter 6. This chapter is well stocked with screenshots and is a quick read.
Chapter 7 goes over Apple's X11 implementation of the X Window System: installing, running full-screen or rootless, customizing preferences, connecting to other X Window systems using ssh with X11 forwarding, using osx2x to share a keyboard and mouse between systems, and how to use vnc.
The topic in of Chapter 8 is multimedia and discusses burning CDs, using the open source MPlayer for audio/video playback, the Gimp for image editing, and Blender for 3D modeling.
In the next chapter, the authors include third-party tools and applications: virtual desktop implementations, ssh GUI frontends, and open source typesetting, mathematical and statistical apps (TeX and R), and office suites (OpenOffice and NeoOffice/J). The information on TeX and R is particularly well documented, due no doubt due to Dr. Rothman's scholarly pursuits. Part I ends with a chapter on dual booting various flavors of Linux (Yellow Dog, Gentoo, Ubuntu, etc.) with Mac OS X, using emulators (VirtualPC) as well as running Mac OS X on x386 machines using PearPC.
Part II, Building Applications, is for those developers and Unix/Linux power users who are comfortable with compiling and linking source code. There are plenty of subtle differences between the Unix and Mac OS X compilers, and the authors provide ample instruction on how to work with Apple's version of the GCC (GNU Compiler Collection). The authors provide a complete discussion of compiling source on Mac OS X and include frameworks, architectural issues (AltiVec, 64-bit computing and endianness), building X11-based apps, AquaTerm, and Xgrid. They go into further depth by showing how to link header files (ordinary and precompiled) and libraries in Mac OS X. There are very good examples of building a shared library that contain C functions and dynamically loading libraries.
Part III covers software packages options: Fink, DarwinPorts and creating and installing your own packages. There are step-by-step details on how to install, setup and use both Fink (and FinkCommander) and DarwinPorts, and using Apple's PackageMaker tools.
Using Mac OS X as a server (secure mail, ssh, Apache web, using built-in services through the sharing pref pane, and using the Mac OS X firewall), system management and configuration tools (top, sc_usage, vm_stat, sysctl, nvram, scutil, and third-party apps like Cocktail, MacJanitor and TinkerTool), free databases (SQLite, MySQL, and PostgreSQL), and some Perl and Python extras that are included in Mac OS X are discussed in Part IV.
In Part V, the Appendicxes, cover a basic overview of the Mac OS X GUI and includes a reference to a selection of Mac OS X's Unix development tools. The latter describes the similarities and differences between development tools available on standard Unix systems and Mac OS X Tiger. Also iIncluded are brief descriptions of Xcode tools (CpMac, MvMac, Res), Java (jar, jdb), text editing and processing (awk, join, sed, vim), scripting and shell programming (echo, perl, xargs), file manipulation and sorting (cat, chmod, diff, rmdir), and other miscellaneous tools (apropos, passwd, su and sudo).
Jepson and Rothman have compiled an excellent book for Unix users who want to come up to speed on Mac OS X quickly and efficiently. Mac OS X Tiger for Unix Geeks includes all the basic information that experienced Unix users will need to become comfortable with the Mac platform. The authors cover a wide variety of practical scenarios where Unix sysadmins and developers can put their newfound knowledge to use. If you're comfortable with Unix and want a companion volume to help you unlock Mac OS X's Unix roots, Mac OS X Tiger for Unix Geeks is the book for you.
Mary Norbury is the IT Director at the Barbara Davis Center for Childhood Diabetes, an affiliate center at the University of Colorado Health Sciences Center in Denver, Colorado. She has too-many-years-to-count experience in cross-platform systems implementation and administration in the education sector. You can reach her at firstname.lastname@example.org.