236 System Administration (Unix NetSpeak is very bizarre. The vocabulary of the statement “the dae- mon, which is supposed to service Thistle, was told that it should spawn a child to connect to itself suggests that Unix networking should be called “satanic incestuous whelping.”) The rdist utility (remote distribution) is meant to help keep configuration files in sync by installing copies of one file across the network. Getting it to work just right, however, often takes lots of patience and lots of time: From: Mark Lottor mkl@nw.com Subject: rdist config lossage Date: Thursday, September 24, 1992 2:33PM Recently, someone edited our rdist Distfile. They accidently added an extra paren on the end of a line. Running rdist produced: fs1: rdist rdist: line 100: syntax error rdist: line 102: syntax error Of course, checking those lines showed no error. In fact, those lines are both comment lines! A few hours were spent searching the entire file for possible errors, like spaces instead of tabs and such (of course, we couldn’t just diff it with the previous version, since Unix lacks version numbers). Finally, the extra paren was found, on line 110 of the file. Why can’t Unix count properly??? Turns out the file has continuation lines (those ending in \). Rdist counts those long lines as a single line. I only mention this because I’m certain no one will ever fix it Unix weenies probably think it does the right thing. It’s such typical Unix lossage: you can feel the maintenance entropy expo- nentially increasing. It’s hard to even categorize this next letter: From: Stanley Lanning lanning@parc.xerox.com Date: Friday, January 22, 1993 11:13AM To: UNIX-HATERS Subject: RCS Being enlightened people, we too use RCS. Being hackers, we wrote a number of shell scripts and elisp functions to make RCS easier to deal with.
Configuration Files 237 I use Solaris 2.x. Turns out the version of RCS we use around here is kinda old and doesn’t run under Solaris. It won’t run under the Binary Compatibility package, either instead, it quietly dumps core in some random directory. But the latest version of RCS does work in Solaris, so I got the latest sources and built them and got back to work. I then discovered that our Emacs RCS package doesn’t work with the latest version of RCS. Why? One of the changes to RCS is an appar- ently gratuitous and incompatible change to the format of the output from rlog. Thank you. So I hack the elisp code and get back to work. I then discovered that our shell scripts are losing because of this same change. While I’m at it I fix a couple of other problems with them, things like using “echo | -c” instead of “echo -n …” under Solaris. One of the great things about Suns (now that they no longer boot fast) is that they are so compatible. With other Suns. Sometimes. Hack, hack, hack, and back to work. All seemed OK for a short time, until somebody using the older RCS tried to check out a file I had checked in. It turns out that one of the changes to RCS was a shift from local time to GMT. The older ver- sion of RCS looked at the time stamp and figured that the file didn’t even exist yet, so it wouldn’t let the other person access the file. At this point the only thing to do is to upgrade all copies of RCS to the latest, so that we are all dealing in GMT. Compile, test, edit, compile, install, back to work. I then discover that there are multiple copies of the Emacs RCS code floating around here, and of course I had only fixed one of them. Why? Because there are multiple copies of Emacs. Why? I don't ask why, I just go ahead and fix things and try to get back to work. We also have some HP machines here, so they needed to have the lat- est version of RCS, too. Compile, test, edit, compile, install, back to work. Almost. Building RCS is a magical experience. There’s this big, slow, ugly script that is used to create an architecture-specific header file. It tests all sorts of interesting things about the system and tries to do the right thing on most every machine. And it appears to work. But that's only “appears.” The HP machines don't really sup- port mmap. It’s there, but it doesn’t work, and they tell you to not use it. But the RCS configuration script doesn’t read the documentation, it just looks to see if it's there, and it is, so RCS ends up using it.
Previous Page Next Page