« Boundaries | Main | Distracted »

Compile

As I write this, there is a terminal window streaming a bunch of junk in the background. It is compiling GnuPG, which is a variant of PGP, on our web server. (And if you were aware of computer society in the mid-90s, you remember what PGP was, right?)

A. is being a real build-from-scratch webmaster again, for the first time in a few years, and technology has made a few steps in that time. She's fighting with configuring pre-built PHP/MySQL applications to do what she wants them to, when she doesn't really know how PHP and MySQL work to begin with. Not too surprising; when I started here nearly three years ago, I didn't know much more about LAMP than what it stood for (Linux, Apache, MySQL, and PHP, Python or Perl.) I learned as I went, starting with PHP, adding MySQL (with a well-timed Database Management course), then Linux and Apache last summer when we built our server. I've figured it out over years, and she's trying to do it in days.

Since I did it so slowly, I forget how obscure this is. I am downloading a "tarball," a compressed blob of source code, and "compiling" it to run optimally on my system. How many consumer (read: Windows) boxes even have a compiler? Everything's pre-compiled because the hardware is standardized to support Windows. Compilers are standard on Linux, because hardware isn't standard; Linux and BSD variants run on nearly everything, and a utility like GPG needs to run on all of them. So you distribute the abstracted source code, and the compiler builds an executable binary for your system, and yours alone.

So I got used to being able to download these things, and utter the magic incantations (./configure, make, and make install) and it works. Meanwhile, it streams this comforting mass of, well, garbage across my screen (you should see the PHP installation, which goes for nearly fifteen minutes) which would probably make your eyes bleed if I quoted large sections of it.

Sometimes, to make the compile work, you need to figure out masses of stuff. What's the path to utilities x, y, and z? Does everything have the proper permissions? (When you work as root, permissions become irrelevant, but the web server daemon doesn't work as root and I do have to keep it in mind.)

Imagine Windows as microwave dinners. Pop in the CD, heat, eat. Compiling from source is more like popping raw material and a recipe into a cooking machine, and watching it make dinner from scratch. It's either deep voodoo, or a lot of fun. Or both.

Post a comment