Going down the rabbit hole of legacy software installation

Background to this post:

I started using the internet in 1994, using a dial-up account that offered access through a telnet unix terminal using the command-line.

One of the commands / pieces of software I discovered was talk, a basic one-on-one chat programme:

talk programme

Besides amusing myself by using it to chat with my brother when he was online at the same time as I, it actually had a useful application.

I was involved in Rovers at the time, a young adults organization, and I had put up a web page describing the Rover Crew to which I belonged on my website. I was contacted by a Rover in Adelaide, Australia by email; he’d found my website, and he was temporarily moving to Montreal in Canada where I live, to work. He was looking for a few building blocks for life outside of his new job in a new country. We negotiated, by email, for a live chat; as I recall, he had suggested IRC, but I was not familiar with IRC at the time, so I suggested talk, to which he reluctantly but nonetheless agreed. (A minor hiccup was that I had suggested a time for the chat as a function of GMT; I was online at what I thought was the appointed hour, but he only showed up an hour later. I was fortunately still online; I figure that I hadn’t properly taken Daylight Savings Time into account when I suggested the hour.)

I live in Montreal (A tag, upper right) in eastern Canada; my friend was living in Adelaide (B tag, lower left) in southern Australia

After our little chat, we continued exchanging emails leading up to his arrival in Montreal. He came to Montreal, joined my Rover Crew, stayed for about three and a half years, and I adopted his cat when he moved back to Australia.

What this post is really about:

Fast forward to early 2026, and I wanted to contribute a short presentation at my Linux club. I looked at some of the recent short presentations on regular everyday linux commands, and I was inspired to install talk on a couple of my machines, document the process, and put together a short presentation in which I would replicate the installation live while inviting others to install talk at the same time as I, and then initiate a chat with someone in the room.

This led me down a rabbit hole towards apparent failure (with a surprise ending).

(Note: Most of the screencaps for this post were created ex-post facto, be they principally on one computer, or on a second computer.)

I did a quick web search on talk, and I found a page at the Geeks for Geeks website (here’s my archive) — critically, dated in July, 2025. This site was a great source of inspiration: It contended that installing talk could be done, using my Linux distribution (Fedora), the article was relatively current, and the procedure seemed quite simple.

The first hint that the Geeks for Geeks procedure wasn’t going to work should have been that for Fedora (and RHEL), the article invoked the yum command. Despite the fact that Fedora has been using dnf since Fedora 22 in 2015, and RHEL 8 in 2019 (DNF(software) on Wikipediahere’s my archive), this didn’t faze me since other than noticing it, I knew of yum and its historic use — in fact, I was around using yum during a substantial period of said historic use — and in my mind the two are interchangeable. (Indeed they are to a nominal degree, since at least for RHEL, according to the Geeks for Geeks website, yum is aliased to dnf (here’s my archive.) Oh, no matter that the same website, despite knowing that yum is obsolete, is still using it in its articles as a current command. 🙂 )

note: for the rest of the article, whenever an instruction needs to be done with root privileges, I did so directly as root, instead of using the sudo command.

Installing talk and talk-server:

I began following the instructions for installing talk:

dnf install talk from the Fedora repositories

… and for installing talk-server:

dnf install talk-server from the Fedora repositories

This seemed good. I figured that if the software was in the Fedora repositories and that it installed, it should work.

talk package page in the Fedora repositories

Invoking the xinetd daemon:

I then followed the instructions to create two files called talk and ntalk in the /etc/xinetd.d directory. Another hint that this exercise wouldn’t work was that the /xinetd.d directory didn’t exist on my system, and that I had to create it; but, I forged on. I created the directory, and then the specified files:

/etc/xinetd.d/talk file created
/etc/xinetd.d/ntalk file created

The next instruction was to restart the xinetd.d server:

Failed effort to restart the xinetd.d service

Receiving an error message that the xinetd.d.service was not found finally made me a bit suspicious, and I checked if and when the xinetd.d service had been deprecated in Fedora. The last reference in Fedora I could find was the xinetd.d package for Fedora 33 (here’s my archive), while a post in Reddit suggested, without apparent reference, that xinetd.d was deprecated in Fedora 34 — in April, 2020, about five full years before the Geeks for Geeks article describing how to install the talk command was written!

Reddit comment stating (without reference) that xinetd.d was deprecated in Fedora 34

So at this point, there were two prior points in time at which I should have figured that the Geeks for Geeks procedure lacked a solid basis for reliability, in addition to this last definitive hint.

ChatGPT consulted:

Despite being suspicious of AI given the current hype surrounding it, and widespread stories of its (sometimes more than) occasional invented results (here’s my archive), I consulted ChatGPT.

Consulting ChatGPT on the subject

So the underlying project objective appeared to have some merit … but at this point, I began diving into a rabbit hole: The obvious rabbit hole of installing legacy software on a modern OS, and perhaps less obviously, a rabbit hole involving placing a lot of faith in AI. (As in, despite using Linux for almost 20 years, and having been exposed to UNIX for over 10 years before that, I don’t think I know enough about Linux to fully evaluate the advice and instructions ChatGPT gave, and whether its apparent confidence in giving advice at each step, let alone its ultimate determination, were based in any merit.)

To wit: After ChatGPT suggested that I confirm the presence of the binaries I said I’d installed, it suggested that I create some socket files, as well as some service units, to enable the new services, and finally check on their status.

Setting up sockets:

Creating socket files
Enabling the socket files
Checking status
Checking status

Services were enabled:

Reloading and enabling the sockets

Firewall changes:

Ports 517/udp and 518/udp were activated in my firewalls (error messages betray the fact that the screenshot is a recreation ex post facto 🙂 ):

Adding the ports to the firewall

I tried start up talk again at this point … and it didn’t work. Apparently, the “Unit talk socket has a bad unit file setting” and the “Unit ntalk.socket has a bad unit file setting”.

Correcting the sockets files for systemd:

The socket and service files were corrected:

Sockets units settings to be corrected
Service units file to be corrected

Daemons were reloaded, and enabled with:

# systemctl enable –now talk.socket ntalk.socket

However, a status check:

#systemctl status talk.socket ntalk.socket

revealed:

Errors after performing a systemd status check

ChatGPT diagnosed this as my having previously incorrectly created a talk.service file.

Correcting the talk.service and ntalk.service files

Daemons were reloaded, and the status checked; this time, with the above fix, the setup seemed to work properly.

Instructions restated, and installing on a second machine (my laptop):

At this point, with ChatGPT’s blessing and a restatement of the updated instructions …

Midway summarized instructions so that I could install talk on a second computer

… I repeated the process on a second laptop, connected to the same network.

Once the installation was complete on the second laptop, I typed in:

$talk malak@malak.local

at the command line from my laptop:

Trying to initiate the talk command from my laptop, toward my desktop

No route to host:

This failed with a “no route to host” error message from each machine. I reported back to ChatGPT:

ChatGPT went on to say how to get the local ip address for each computer on the network, because the firewalls on each machine were rejecting access to UDP addresses, recommending that I therefore use the individual computers’ IP address instead of the local computer names.

Using IP addresses instead of hostnames:

On each computer, at the command line (as a regular user) I used:

$ip addrshow

Determinging the IP address on my desktop, an exercise repeated on my laptop

… and to try running:

$talk user@192.168.X.Y on one machine, and:

$talk user@192.168.X.Z on the other machine,

such that I substitute in my username and the respective addresses from above.

This again failed.

Limiting to IPv4:

ChatGPT suggested that if that were to fail, that I should modify the following files:

/etc/systemd/system/talk.socket

/etc/systemd/system/ntalk.socket

to listen on either port 517 (talk — client) or 518 (ntalk — server), then reload and restart the services:

Checking if SELinux is in play:

ChatGPT also suggested that I run:

# ausearch -m AVC -ts recent

to check if SELinux was the issue. It wasn’t.

Checking to see if SELinux was blocking the connections

So I ran the talk command again. This time, I got a different error message with the talk client:

the other machine does not recognize us

So once again, I consulted ChatGPT.

Modifying the /etc/hosts files:

The /etc/hosts files on each computer were edited with the respective information for each computer:

/etc/hosts file on both systems modified to specify the local IP of each

I tried again, as per ChatGPT’s directions, to try from each computer, and my connection was refused, in the following case, my laptop:

Connection refused by my desktop

Note that I finally realized later that this might relegate the use of the talk command on these machines, on my home network — meaning, that it would likely not be a useful fix for general use, at least not without either a script that integrates all the above (and probably more), including a way to include other computers in a range of IP addresses, or a rewrite of the software. (No doubt a dubious effort, given the number of chat programmes that have been written, reworked, and so on, since talk was commonly in use, decades ago.)

Correcting to allow receiving messages:

ChatGPT suggested a fix in the mesg command:

Invoking the mesg command

As well, ChatGPT recommended to modify the /etc/profile file to include the mesg y command:

Adding “mesg y” to /etc/profile

I still couldn’t get talk to work. “Your party is refusing messages”.

Messages refused:

ChatGPT said to make sure that the terminal on both systems was writable with:

chmod g+w $(tty)

Changing permissions for the terminal

Trying two terminals on one machine:

At this point I think that I was losing track of ChatGPT’s suggestions and not properly implementing them all.

Nonetheless, in skipping a few steps, I thought I was following the suggestions when I chose one machine — in this case, my desktop — and opened up two terminals, and tried to initiate a chat on the same machine between both terminals:

Two terminals on the same machine, with one instance of talk already active (but having seen what comes up on the next screenshot)

Once set up, and ready to try, I had the command line command set up:

Connection refused between two terminals on the same machine

Messages were still being refused, even when coming from within the same computer.

Waving the white flag of surrender:

At this point, I decided that it was time to raise the white flag of surrender, on the basis that the talk command, despite being present in the repositories for Fedora 43 and nominally packaged for Fedora 43, is a legacy package no longer intended for current general use.

But wait! There’s more!

Rereading ChatGPT’s instructions later — during the construction of this post and then tested during one of the many re-reads and edits of this post — I realized that ChatGPT’s instructions included trying to use a “real” tty console as part of the test, not simply two Gnome graphical environment terminals.

Missed suggestion to use the console (tty)

Whaddya know: It worked there!

Looking around revealed four such terminals on my desktop, labelled tty3, tty4, tt5, and tt6, respectively accessed by Ctrl-Alt-F3, Ctrl-Alt-F4, Ctrl-Alt-F5, and Ctrl-Alt-F6. (Reminder to myself: To get out of the consoles, use Ctrl-Alt-F2.)

So first, I opened up a console at tty3 on my desktop, and I typed:

$talk malak

Which opened up the talk interface, and in which I typed a message:

Message typed on my desktop’s tty3 “hello / this is a test”

Then I opened up a console at tty4, and I was able to launch talk, finding the “hello” and “this is a test” messages from tty3 appearing in the lower section:

Message received on my desktop’s tty4 “hello / this is a test”

So this was an aha! moment.

Then, after entering a console on my laptop:

Logging into a console on my laptop

I initiated a talk session with my username on my laptop (assuming that I still needed to use IP addresses):

$talk malak@192.168.2.19

Starting a talk session on my laptop, calling a user on my desktop

… and on one of the console terminals on my desktop, I received the following message:

Message received on my desktop, originating from my laptop

This gave me new information: I could also use the computer names in addition to the IP addresses.

On the desktop, I therefore entered:

$talk malak@deltaflyer

… and I had the two machines, uhm, talk-ing to each other.

Message initiated on my laptop in the upper section: “hello this is a test from my laptop”, appearing in the lower section on my desktop

Final Thoughts:

First, to my eventual surprise, I learned that talk still works on Fedora — albeit only in “real” tty consoles. I haven’t checked how much of the above is required to make it work, but I have a few ideas about which are necessary, and which are not (for instance, use of computer names instead of requiring IP addresses is possible, although I’m not sure whether having modified the /etc/hosts file helped with that.)

Next, I may still have a presentation somewhere, perhaps characterized as a bit of an amusing cautionary tale regarding trying to install several decades-old, obsolete, legacy software on modern systems.

Perhaps, it might be an amusing tongue-in-cheek cautionary tale with a side of self-deprecation about trusting AI on subjects about which one doesn’t know enough; fortunately, it seems that ultimately, I was not led astray.

Perhaps, it could be presented as an amusing counterpoint to another presentation lauding the value of AI in a similar situation, being used by someone who knows more about the subject at hand (in this case, Linux) and how to better interpret the provided results — instead of simply trusting the AI blindly.

Or, perhaps, while I generally was not led astray and ChatGPT indeed did help me fulfill my goal … could the exercise act as an inspiration to learn about maintaining critical — and possibly migrating away from — legacy software on modern software and hardware? COBOL, anyone? And, perhaps in the process, learn how to ask the right questions of the likes of ChatGPT in order to get what I really wanted — not just what amounted to a proof of concept (which to be fair, that which I wanted amounted to a proof of concept, even if it took a while for me to realize it), but an actual, useful, running piece of software?

Leave a Reply

Your email address will not be published. Required fields are marked *