1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
|
SCCS "@(#)README 1.3 01/01/02 meem"
This README goes with the rlpr package. It discusses how to get going
with rlpr. For information on how to install rlpr, please see INSTALL
and INSTALL.generic. For a list of recent changes, see CHANGES.
What is rlpr?
=============
It is a package that makes it possible (or at the very least, easier),
to print files on remote sites to your local printer. The rlpr
package includes BSD-compatible replacements for `lpr', `lpq', and
`lprm', whose functionality is a superset of their BSD counterparts.
In other words, with the rlpr package, you can do everything you can
do with the BSD printing commands, and more. The programs contained
within the rlpr package are all GPL'd, and are more lightweight,
cleaner and more secure than their BSD counterparts.
Is rlpr a full replacement for BSD lpr?
=======================================
Not yet. At this point, you still need the BSD utilities `lptest',
`lpc' and (most importantly) `lpd', although you no longer need to run
`lpd' locally to print to a printer on a remote machine. However, you
can completely dispose of `lpr', `lpq', and `lprm', as the rlpr
versions of these commands are backward compatible and open source.
The rlpr versions of these commands are clean-room implementations,
and contain no proprietary source code (although there is bug-for-bug
compatibility where necessary, which was obtained by examining network
traffic).
Will rlpr become a full replacement for BSD lpr?
================================================
Maybe. The primary goal of the rlpr project has been to produce a
high-quality remote printing software suite that makes it easier for
users to get their job done. However, now that this goal has been
ostensibly accomplished, it may be time to write `lpd', `lptest' and
`lpc'. Note that this is not a small task; most of the real work
in the printing subsystem is done by `lpd'.
How do I use rlpr?
==================
There are two separate ways that rlpr can be installed, and
consequently two different ways it can be used. Please see INSTALL
for a discussion on the two installation methods and which one is
appropriate for your situation. Once you have decided on an
installation approach, follow the appropriate set of instructions
here.
Using rlpr in a non-proxy configuration
---------------------------------------
Without any configuration, you should be able to print to your printer
by issuing this command on the machine you wish to print from:
$ who | rlpr --printer=your_printer@your_host
This should print the output of the who(1) command to your printer.
Make sure you use the right case when specifying the printer because
the name is case sensitive. If no output results, please consult
the troubleshooting section at the end of this README.
Since it is a hassle to constantly specify the host and printer on the
command line, rlpr offers you a few alternatives:
1. You can set these with environment variables when you log in.
The environment variables RLPR_PRINTHOST and PRINTER control
what host and printer to use by default. This is probably good
enough for most configurations.
2. You can use the `printer@hostname' syntax for the PRINTER or
LPDEST variables, as documented in rlpr(1), to specify both
components in one variable. This works well for many setups
too, but has the unfortunate consequence of confusing programs
which expect PRINTER to just contain the name of your printer.
3. You can just specify `printer' in your PRINTER or LPDEST
variables, and not set RLPR_PRINTHOST, at which point rlpr
will assume that RLPR_PRINTHOST is implicitly your local
machine. This is convenient for those who just want rlpr as
a replacement for the BSD lpr commands.
4. If you plan on printing to many different printers, you can
make an .rlprrc file, or if you are a system administrator
providing defaults for many different users, you can make an
/etc/rlprrc file. Please see rlprrc(5) for more details on
this option.
Using rlpr in a a proxy configuration
-------------------------------------
Without any configuration, you should be able to print to your printer
by issuing this command on the machine you wish to print from:
% who | rlpr --printer=your_printer@your_host --proxyhost=your_proxy
This should print the output of the who(1) command to your printer,
using your_proxy as the proxyhost. Make sure you use the right case
when specifying the printer because the name is case sensitive.
Note that you of course need a machine running the rlprd proxy before
the above command will succeed. To do this, first find a machine you
can install rlprd setuid root on. Often, this will be the same as the
machine you want to print to, but it need not be. Compile rlprd on
that machine, and start it by just typing `rlprd' on that machine.
You will probably want to have rlprd running all the time -- to do
this, you will need to put it in that machine's boot-time scripts.
Since it is a hassle to constantly specify the host and printer on the
command line, rlpr offers you a few alternatives:
1. You can set these with environment variables when you log in.
The environment variables RLPR_PRINTHOST and PRINTER control
what host and printer to use by default. The environment
variable RLPR_PROXYHOST controls what proxyhost to use by
default. This is probably good enough for most configurations.
2. You can use the `printer@hostname' syntax for the PRINTER or
LPDEST variables, as documented in rlpr(1), to specify both
components in one variable. This works well for many setups
too, but has the unfortunate consequence of confusing programs
which expect PRINTER to just contain the name of your printer.
You will additionally (of course) need to set the name of your
proxyhost in the environment variable RLPR_PROXYHOST, as in
option 1.
3. If you plan on printing to many different printers, you can
make an .rlprrc file, or if you are a system administrator
providing defaults for many different users, you can make an
/etc/rlprrc file. Please see rlprrc(5) for more details on
this option. You will additionally (of course) need to set
the name of your proxyhost in the environment variable
RLPR_PROXYHOST, as in option 1.
Troubleshooting
===============
1. If you are getting errors about rlpr not being able to bind to
a privileged port, and you cannot make rlpr setuid root, you need
to use the rlprd proxy. Follow the instructions for setting up
rlprd, see INSTALL, rlpr(1) and rlprd(8).
2. Turn on debugging. For the client, you can do this by specifying
the --debug option on the commandline. This should give you a
clue what's going wrong. If you use rlprd, you can also use its
--debug. However, this will fill up your syslog with gobs of
debugging information. To avoid this, start rlprd with both
--no-daemon and --debug, so that it won't become a daemon.
3. Check the syslog on the machine with the lpd server and look for
any obvious problems there.
4. If you are using a proxy, check the syslog on the machine with
rlprd and look for any obvious problems there.
5. If you get something like:
rlpr: error: check_ack: lpd refused our job request [error 108]
-- is our hostname in its hosts.lpd?
rlpr: fatal error: unable to send job request to lpd
It is likely the /etc/hosts.lpd or /etc/hosts.equiv on the lpd
server does not list the machine you're printing from. There is
a shell script called `check-server.sh' provided with this
distribution which attempts to sniff out problems associated with
your lpd server configuration. The script is quite new and as a
result still quite rudimentary; however, it will detect simple
misconfigurations when run on the lpd server.
The easiest way to solve server configuration problems is to
carefully follow the instructions in INSTALL regarding server
configuration.
Remember that most LPD's will have to be restarted to force them
to reread the /etc/hosts.lpd file.
Some really twisted LPD's will reject print jobs because a given
printer is out of paper. Note that this has caused more than one
person needless pain and suffering.
Lastly, make sure that the printer you specified actually exists!
6. Check the LPD's documentation for any known limitations.
7. Send mail to meem@gnu.org with a bug report. Please include
the machine(s) you're running rlpr and rlprd under, and the version
of rlpr you're using. If you are having problems getting the
package to compile, please include the name and version of the
compiler and related tools.
Known problems/issues with rlpr
===============================
The rlpr package requires an ANSI C compiler; this means you will not
be able to build the package the standard SunOS 4.x compiler (for
example). ANSI C is more than 10 years old at this point; I am not
planning to make rlpr portable between ANSI C and K&R C; upgrade your
compiler.
The rlpr package will not build properly out-of-the-box using the
native development tools on many Ultrix machines due a non-POSIX
seteuid(). This problem can reportedly be worked around by compiling
with `cc -YPOSIX -Dinline='.
The rlpr package will not build properly out-of-the-box using the
native development tools on HP/UX 10 due to C compiler braindamage.
This problem can reportedly be worked around by compiling with `cc
-Ae'.
Note that in both cases, the C compiler settings must be changed prior
to running ./configure, or problems may arise. Once again, using
GNU development tools is highly recommended.
Known problems with LPDs
========================
Microsoft's LPD cannot handle rlpr's standard way of sending multiple
print jobs.. to get the desired result please use the --windows option
(see rlpr(1) for details).. please don't use this switch unless you
really are connecting to one of these braindamaged LPD's, because it
will tie up extra sockets.
Additionally, Windows NT 4.0 apparently requires that you pass the -l
option along with -o when printing postscript. Thanks to Allan Wind
for reporting this. I would enable -l with -o by default when
printing with --windows, but only 4.0 seems to have this problem.
Hummingbird's NT lpd client will not print postscript correctly unless
it is configured to run in "raw" mode. You can select this through
the LPD's preferences menu under Windows.
Many LPD's will merrily pass through postscript data unless explicitly
told it is postscript. To get postscript documents to print right,
please use the -o option (see rlpr(1) for details).
Some LPD's no longer have any troff support. To print documents you
might have printed using the -t option, you could use:
% groff -Tps filename | rlpr -o
Where to get the latest version
===============================
The latest stable version of rlpr can be obtained from:
ftp://truffula.com/pub/rlpr-x.xx.tar.gz
The latest beta version of rlpr can be obtained from:
ftp://truffula.com/pub/beta/rlpr-x.xx-x.tar.gz
Please do not use a beta version unless you have a good reason. They
may contain flaws and inconsistencies which can lead to security holes.
Daniel Schepler graciously put together a Red Hat package for rlpr
1.50, which I will update with each release of rlpr. The most recent
x86 and source RPMs can be found at:
ftp://contrib.redhat.com/contrib/libc6/i386/rlpr-x.xx-x.i386.rpm
ftp://contrib.redhat.com/contrib/libc6/SRPMS/rlpr-x.xx-x.src.rpm
The Debian Project has also graciously put together an rlpr package.
The latest version can be found at:
ftp://ftp.debian.org/pub/debian/dists/{un,}stable/main/*/net/
Please note that stable and unstable does not refer to the rlpr
package itself, but whether or not the Debian Distribution it is
included with has been released.
If you have questions or comments that relate directly to the Debian
package, please send mail to debian-user@lists.debian.org for
assistance. This is a mailing list one can join to by sending mail to
debian-user-REQUEST@lists.debian.org with the word "subscribe" in the
subject.
Supported Operating Systems
===========================
The rlpr source is considered quite portable and in fact has in the
past been patched to work on non-Unix POSIX.1 environments such as
MVS. Note that both the operating system features *and* the
development tools (such as cc, make, and so forth) determine whether
rlpr will build and operate correctly on a given system.
Currently, rlpr is only tested with GNU development tools. While care
has been taken to avoid nonportable constructs wherever possible,
using GNU development tools is *strongly* recommended. However, if
you must use other development tools and encounter problems, please
report them so that the issues can be addressed (if possible).
The rlpr package has been reported to work on the current mainstream
releases of Linux, Solaris, Irix, HP/UX, FreeBSD, NetBSD, OpenBSD,
AIX, Digital Unix (Tru64) and HURD. If you have problems getting this
release to work on one of those systems, or have information regarding
other systems (including changes required to make rlpr work), please
send the information along to meem@gnu.org.
Ideas, comments, suggestions
============================
I am always looking for ways to improve rlpr. If you have
suggestions, bugfixes or just general comments, please send mail to
meem@gnu.org.
|