[cups.development] Deleting printers that have no backend

Jim Fehlig jfehlig at novell.com
Wed Aug 31 14:18:21 PDT 2005


Helge Blischke wrote:

>Jim Fehlig wrote:
>  
>
>>I have encountered configurations where it is possible to have printers
>>installed with no corresponding backend to communicate with the target
>>device.  Details can be provided at how I arrived at such a
>>configuration, but don't believe it is terribly relevant.
>>    
>>
>
>As it's the very first time I hear about an issue like this, I'd be interested on
>how you did get there ...
>
>Helge
>
>  
>
Well, we got ourselves in the predicament :-)  We have two RPMs that 
provide different functionality.  These RPMs target clients and are 
delivered from a server.  The network administrator selects (on the 
server) which RPM she wants made available to her clients.  The RPMs 
have different names and obsolete each other.

If RPM A is installed on a client, we can handle removing any installed 
printers using our backend when RPM A is removed.  However, if the 
network administrator changes her environment to use RPM B we run into 
trouble.

RPM passes in a value to the first argument of %pre, %post, %prerun, and 
%postrun scripts that represents the instances of this RPM which will 
still be installed after the said RPM operation is complete.  So if the 
argument's value is 0, there will be no instances of this RPM installed 
after the action is complete (removal of the RPM).  If the value is > 0, 
the action is an upgrade.  However, an upgrade action assumes the RPM 
that is replacing the installed RPM has the _same_ name, which is not 
the case since our RPMs are named A and B.  RPM considers these to be 
two completely different RPMs even though they are made to "obsolete" 
each other.  So when "upgrading" from RPM A to B we nuke printers that 
are using our backend in a %postrun script since we do not have correct 
information in the first argument to the script (i.e. it's value is 0).

We will have to come up with a hack outside of the RPM framework to 
determine if the "upgrade" I have described is occurring and 
subsequently leave the printers installed.

Hope I have articulated this clearly :-)
Jim





More information about the cups-devel mailing list