Friday, May 22, 2009

Kubuntu and the reluctant upgrader, pt. 2: CVS and Telnet

Despite the vague sense of dis-ease that accompanied my Kubuntu upgrade from Hardy Heron (8.04) to Jaunty Jackalope (9.04), I had, after my earlier struggles with the death of Kaudiocreator and general crapping up of Adept, finally gotten to the point where the system was behaving more or less as I expected. All was right in the land of the penguin.

Until 3 days ago.

A while ago, a co-worker had turned me on to the virtues of CVS -- Concurrent Versions System, a revision control system. I now use it for a variety of things: several writing projects and websites.

I know it sounds dorky, but I swear it's not.

I went to update the local CVS repository on one of the several XP boxes scattered around the house. I use Tortoise CVS, where the sound of breaking glass means a bad thing has happened. It sounded like I fell through a freaking window. The CVS server on the upgraded Kubuntu box is now busted to all bloody hell. The files in the repository are all apparently safe and sound but I can't get to them, defeating the purpose of setting all this crap up in the first place.

In the course of my investigations, I discover Hey presto! Telnet is busted, too!

Quick aside: many people on forums, when asked about setting up telnet, have the annoying habit of pointing out that the person asking the question shouldn't be using telnet anyway--they should be using ssh. Right, dickhead. I'm well aware of telnet's shortcomings. Telling me I should be using ssh though is about as useful as telling me I should be eating vegetarian when I ask how to find the steakhouse.

After another couple of hours screwing (without success) trying to get CVS or a telnet daemon running I decided to call it a night. I slept fitfully, once again questioning what had possessed me to upgrade.

Today I dragged in and confessed my failure to the guy who'd originally turned me on to CVS in the first place. A quick conversation and a few suggestions later I decided to give it another whack this evening.

The main suggestion: use xinetd rather than the default, which was inetutils-inetd. Apparently in Kubuntu 9.04, inetutils-inetd is installed by default (as a successor to inetd). I know that's what I had installed.

After a little more research, I found instructions on how to set up services for xinetd. So armed, I dropped to the shell (sorry folks), ran a few command lines, and, after a reboot, was off and running. Everything is now working like a charm.


For those facing a similar dilemma, here's what I did.

First, back up any config files. For inetd (inetutils-inetd) this means making a copy of /etc/inetd.conf and putting it in a safe place (such as your home directory).

The run the following from the command line:
    sudo apt-get install xinetd
If asked if you want to do this (it will cause the uninstalling of several files, including the nefarious inetutils-inetd) type "Y" and hit enter. You will be informed of the uninstalled files, including inetutils-inetd and some version of telnetd.

Again, from the command line, type or paste:
    sudo apt-get install telnetd
and type "Y" to any prompt about things being uninstalled. apt-get will now install the version of telnetd that runs under xinetd.

To install cvs, type:
    sudo apt-get install cvs sudo apt-get install cvsd
...that last one may not be necessary, but it won't hurt to install it. If you are told it's already installed type:
    sudo apt-get install --reinstall cvsd
Now that you've installed the software, you'll need to add these to the xinetd config.

cd to /etc/xinetd.d and create the files needed to start the cvs server and telnetd.

If it doesn't exist, create a file called cvspserver in /etc/xinetd.d/ by typing sudo vi cvspserver, then paste the following in the file:

service cvspserver
port = 2401
socket_type = stream
protocol = tcp
wait = no
user = root
passenv = PATH
server = /usr/bin/cvs
server_args = -f --allow-root=/path/to/CVS_repository pserver

...and type [ESC] :x

This will save the file. In the above, change "/path/to/CVS_repository" to the location of your repository.

If you want telnet (it is insecure, but occasionally useful if you are behind a firewall in the privacy of your own home)

If it doesn't exist, create a file called telnet in /etc/xinetd.d/ by typing sudo vi telnet, then paste the following in the file:

service telnet
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no

...and type [ESC] :x

When you've finished, restart your machine. You should be off and running.

No comments: