Best of Technical Support

Various

Issue #78, October 2000

Our experts answer your technical questions.

Dependencies and Libraries

Recently, I downloaded a Linux application and when I tried installing it, I encountered an “unsatisfied dependencies” error message in the package manager. Where do you go for missing Linux libraries and how do you install them? —Kelvin L. Barnes, Kelvin.Barnes@worldnet.att.net

If you're using an RPM-based distribution such as Red Hat, you install missing libraries the same way as any other software (i.e., by installing RPMs with the rpm program). You can find the RPMs containing these libraries by searching http://www.rpmfind.net/ or http://www.rpmsearch.net/. On my Red Hat 6.1 box, I've installed the rpmfind utility (which was on the CD) provided by these sites, and it makes finding and downloading RPMs a snap:

rpmfind -v --auto --latest
your_rpm_name_here

You still have to install the RPMs (as root, typically) after they're downloaded:

rpm -Uhv
Another place to search is your distribution's download sites, which sometimes include software that wasn't shipped on the CD for various reasons. Red Hat's sites (use mirror sites if possible) are at ftp://ftp.redhat.com/ and ftp://updates.redhat.com/. Occasionally, RPMs designed for one distribution may not operate correctly on another—the RPM itself is okay, but the files contained in it may have been configured differently, or they may be placed in different locations than normal for your distribution. If given a choice, choose an RPM that matches your distribution (e.g., if you're running Red Hat and you see “redhat” in the URL of one of the RPMs, that's probably the one you should choose). I have rarely encountered this problem, though. —Scott Maxwell, maxwell@ScottMaxwell.org Was this “application” a RPM file? If so, it should have taken care of all dependencies. Otherwise, the “missing” libraries could be an infinite number, so reading the application's documentation, specifically about requirements, should point you in the right direction. Usually your distribution's web site should have all sources for your Linux libraries and you should be able to download almost (99%) everything from there, unless it is a very specialized library. —Felipe E. Barousse Boué, fbarousse@piensa.com

One Working Parallel Port

I've installed two additional parallel ports on a PC, and I would like to use them all. So far, only /dev/lp0 works. Echoing into /dev/lp1 and /dev/lp2 returns the following nastygram:

BASH: /dev/<device name>: Device not configured

The ports work under Win98, so there are no IRQ or I/O address conflicts. Here's some more information:m

IRQ     IO range        Win98 name
7       0378-037f       lpt2
5       03bc-03be       lpt1
9       0278-027a       lpt3

—Luis F. Gonzalez, gonzalezl@saic.com

Using ports in Linux requires two steps. First, your kernel must recognize the devices. You can check this by either scrolling through your boot messages by typing dmesg | less, or checking /proc/ioports and /proc/devices. The second step is to create the device file in /dev. If this file does not exist, you can use the makedev script found in the same directory to create most Linux device nodes. If it does exist, your problem is most likely with the first step. —Chad Robinson, crobinson@rfgonline.com If you've installed the kernel sources, the file /usr/src/linux/Documentation/parport.txt addresses this in detail. Briefly, if the ports are not automatically recognized and configured, and if printing and parallel port support are compiled as modules (not compiled into the kernel proper), try adding the following lines to the file /etc/conf.modules:

alias parport_lowlevel parport_pc
options parport_pc io=0x3bc,0x378,0x278 irq=5,7,9
options lp parport=auto

Then, from the shell, try removing and reinserting the relevant modules (the order is important):

rmmod lp
rmmod parport_probe
rmmod parport_pc
rmmod parport
insmod parport
insmod parport_pc
insmod parport_probe
insmod lp

You will need to do all of this as root. I'm not an expert at configuring parallel ports, since it normally works correctly out of the box for me; I've done it on only one machine, and on a different distribution from yours, so I may have overlooked something. You may need to experiment a little before it works. Perhaps some ambitious reader will turn parport.txt into a proper HOWTO, if that hasn't been done already. —Scott Maxwell, maxwell@ScottMaxwell.org

Booting Problem

I have two hard drives on my system. One is dedicated to Linux, the other is for Windows 98 (second edition). I can't boot to Win98 when both drives are up. They're set up fine (one master, one slave, BIOS finds them, etc.). I can boot Linux with both drives connected. If I disconnect the Linux drive, I can run Win98 fine. LILO seems to know that it has a DOS drive and a Linux drive. If I say “dos” at the boot prompt, LILO doesn't complain—things just hang. I've even tried booting with a Win98 boot floppy; the system reads from the floppy for a while and then just hangs—no message, no nothing. One drive is a WD, the other is IBM. Please help! —Mitch, mitchp20@home.com

I am assuming that the master disk has Linux on it, therefore you can boot fine with both disks active. It seems there is just a misconfiguration of your lilo.conf file. You have to tell LILO where (which physical disk and which partition) DOS/Windows is located. Check on the specified devices in /etc/lilo.conf. Look in the section where you have your “dos” label for /dev/hdaX and /dev/hdbY (X and Y being partition numbers) and hda, hdb representing your physical disks. You may need to find which disk holds what. Two lines like:

other=/dev/hdb1
     label=dos

may be what is needed for you to be able to boot DOS (and Linux) with both disks on. Don't forget to write that LILO info to the boot sector with /sbin/lilo -v after you have made changes in /etc/lilo.conf. —Felipe E. Barousse Boué, fbarousse@piensa.com

You don't say whether Windows is on the slave or the master. By default, Windows won't boot from a secondary drive. However, you can try booting from the second drive by putting the following in lilo.conf to boot DOS/Windows (it swaps the drive letters):

other = /dev/hdb1
  label = dosb
  loader = /boot/any_d.b

—Marc Merlin, marc_bts@valinux.com

Function Keys Not Working

I am running a console on an HpUX box. This application is run from an xterm on my Linux box. The HpUX box has no X libs and does not accept my function keys. Does anyone know how to make my function keys work while telneted into this HP system? —David, uxidlm@netscape.net

Since you state that the HpUX has no X libs, and it looks to me that you are just using a terminal emulation window (xterm) in your Linux box, you should be able to define which code to generate whenever you press a function key so it gets sent to the HpUx box through your xterm. You can use the xmodmap command to define such sequences on your Linux box. Put those sequences in the .xmodmaprc file of your login account or in Xmodmap's general configuration file. Try also keying ESC-1 for F1, ESC-2 for F2, etc., to test whether your application is getting Fkey sequences. Lastly, terminal emulation affects the way Fkeys work. You should have the terminal emulation correctly set up, with the termcap definitions in both the HpUX side and the Linux xterm session. --Felipe E. Barousse Bouéfbarousse@piensa.com I don't have experience with this specific case, but the normal way to get your function keys (and other nonstandard keys) recognized is to modify your TERM setting after logging in on the remote machine. You do this with something like export TERM=termtype (for bash or ksh) or setenv TERM termtype (for csh or tcsh). You may need to experiment with values for “termtype”--I would try values like “xterm”, “vt100”, “vt220”, “hpterm” and “linux” (in increasing order of desperation). If none of those works, look through /etc/termcap on the remote machine for other possible values of TERM. When you find a value that works, simply copy the TERM assignment into your shell startup file (.bash_profile, .cshrc, or whatever) on the remote system, and you'll never have to worry about it again. —Scott Maxwell, maxwell@ScottMaxwell.org

Cannot Access C: Drive

I lost the link to my C: drive (Windows). In the process of trying to connect my scanner, I changed sda1 to hda1 and now I can't gain access to my C: drive from Linux or from LILO. When it gets to the LILO prompt and I select Windows, it just locks up. How do I get the link back? —Faron Ducharme, faron_ducharme@ti.com

You don't mention how you “changed sda1 to hda1”. However, LILO's configuration information is stored in /etc/lilo.conf. After editing this file, you will need to run LILO from a command prompt to tell it to reread its settings. —Chad Robinson, crobinson@rfgonline.com Does Linux boot fine? Seems you are using SCSI disks, so if you renamed sda1 to hda1 in the /dev directory, changing it back should solve the problem, providing you haven't changed LILO's configuration at /etc/lilo.conf. Logged in as root, use mv /dev/hda1 /dev/sda1. If you cannot boot Linux, then you would have to use the emergency boot disk (you have one, don't you?) you made at installation time to be able to boot the machine and then change the device names back to normal as indicated above. —Felipe E. Barousse Boué fbarousse@piensa.com

4216s1.html