Best of Tech

Our experts answer your technical questions.
Follow-up on How to Connect with Cox

These instructions for setting up Cox cable, which reader Matt Reynolds asked about in the September 2002 issue, are good for Tucson, Arizona, and most likely, for all Cox accounts. Cox uses DHCP and issues everybody what they call a CX number, which is needed to obtain an IP address from their servers. To make the DHCP client obtain an IP address, simply include that CX number in the dhcpcd command with the -I (client identifier) option:

/sbin/dhcpcd -I <cx number> <interface, (default

It would be a shame if Matt canceled his Cox account because he couldn't get Linux to obtain an IP address, as Cox in Arizona is excellent.

—Patrick Kellaher,

Upgrading with RPM

I am trying to install KDE 3.0.3 on a fresh system, where neither KDE nor GNOME was installed, using RPMs. When I try to install qt-3.0.5-16.i386.rpm, I get:

[root@yeller rpms]# rpm -Uvh qt-3.0.5-16.i386.rpm
error: failed dependencies:   is needed by qt-3.0.5-16  is needed by qt-3.0.5-16

So then I tried:

[root@yeller rpms]# rpm -qa | grep libpng
[root@yeller rpms]# rpm -Uvh libpng-1.2.2-6.i386.rpm
And I got another “failed dependencies” error. I've tried to resolve dependencies by working up from the lowest denominator, but I wind up in a spider web of RPMs that have more dependencies. So how do I install or upgrade without overwriting or losing something needed by something else?

—James Weisensee,

Red Hat has created the up2date utility as an attempt to solve this problem. up2date requires that you register with Red Hat Network using the rhn_register command. up2date updates packages already installed on your system for which new versions have been released, most often relating to security patches. The rpm -qa commands you've tried are only querying your RPM database for packages already installed. If you want to find out which packages among a set of RPMs in a directory will provide a given file (such as or, then use a command more like:

for f in; do
  for i in *.rpm; do
      rpm -qpl | grep -q $f && echo $i;

to search each RPM package file listing for each of these filenames and to print the name of every package that contains said file(s). That won't always work (in some cases the desired file may be created by a package's postinstall script, for example). Also, some dependencies might not have filenames but are abstract identifiers that might be provided by any number of alternative packages.

—Jim Dennis,

You often can get out of this kind of RPM upgrade mess by upgrading all the relevant RPMs at once, on the same command line. Just cursor up and keep adding the packages that RPM complains about to the rpm -Uvh command until it's happy. This works for removing codependent packages too.

—Don Marti,

Hello World? Hello Anyone?

I recently installed Linux, but I receive the following error when I try to run executables on my system:

bash: a.out command not found

How do I fix this problem?

—Manuel Sevilla,

Looks like the directory you're in is not in your PATH. To run your newly compiled C program from your current directory, use ./a.out.

—Robert Connoy,

Can I Print to This Thing?

I have a router with a built-in printer server. How can I print using the printer connected to the printer port on the router?

—Carl Maklad,

When an appliance has a built-in printer server, that generally means it offers support for a specific list of network printing protocols (such as the MS Windows SMB printing services and/or the traditional UNIX lpd services). Assuming that your router supports lpd (one of the oldest and simplest remote printing protocols), you should be able to configure your Linux system to use that device as a UNIX remote (lpd) print spool. If you're using Red Hat, try the printconf or printtool utilities.

—Jim Dennis,