For the last month or so I have been playing with various betas, release candidates, and now the Gold Master Candidate for SUSE Linux Enterprise Desktop (SLED) 11 x86_64. As a Novell employee, a member of support, and a Linux advocate I feel that I should run software before it is out so I can find bugs before, well, anybody else. Working at Novell we use everything Novell creates (or at least everything I’ve ever heard of) and so it means I get to do some interoperability testing as well.
Maybe this is how I justify my own nature as a glutton for punishment, but it’s the story I stick to.
For anybody not familiar with iPrint, it is one of the nicest end-user technologies I think Novell develops. On Linux I find the technology even more appealing…. no rebooting, no restarting applications to use printers, nothing strange like that. With that said iPrint wasn’t developed originally for a 64-bit platform, and wasn’t developed for Linux first. That it works so well just makes me that much more pleased.
With the pre-release of SLED 11 x86_64 I have so far found some quirks getting iPrint to work perfectly. I imagine the finalized version will work but in the meantime the workaround to make iPrint function is fairly trivial. The first thing I had to do was to install the iPrint client which I just found within SLED 11′s repositories. Once installed the following command gives me the following output:
> rpm -qa | grep -i iprint novell-iprint-xclient-sl-6.500.20081007-1
What I often like to do when learning about a new package (especially those installed via an RPM) is to find out which files came from the package, which is trivial to do with the ‘-ql’ options to the rpm command along with the package(s) to be queried:
ab@mybox:~> rpm -ql novell-iprint-xclient-sl-6.500.20081007-1 /etc/ld.so.conf.d/novell-iprint-xclient /etc/opt/novell /etc/opt/novell/iprint /etc/opt/novell/iprint/libiprint.conf /etc/profile.d/novell-iprint.csh /etc/profile.d/novell-iprint.desktop /etc/profile.d/novell-iprint.sh /opt/gnome /opt/gnome/lib /opt/gnome/lib/mozilla /opt/gnome/lib/mozilla/plugins /opt/gnome/lib/mozilla/plugins/npnipp32.so /opt/gnome/lib64/mozilla /opt/gnome/lib64/mozilla/plugins /opt/gnome/lib64/mozilla/plugins/npnipp.so /opt/gnome/share /opt/gnome/share/autostart /opt/gnome/share/autostart/novell-iprint.desktop /opt/kde3 /opt/kde3/share /opt/kde3/share/applications/novell-iprint.desktop /opt/kde3/share/autostart /opt/kde3/share/autostart/novell-iprint.desktop /opt/novell /opt/novell/iprint /opt/novell/iprint/bin /opt/novell/iprint/bin/iprint-gnome-init /opt/novell/iprint/bin/iprint-listener /opt/novell/iprint/bin/iprntcmd /opt/novell/iprint/plugin /opt/novell/iprint/plugin/npnipp.so /opt/novell/iprint/plugin/npnipp32.so /opt/novell/iprint/share /opt/novell/iprint/share/icons /opt/novell/iprint/share/icons/iprint_16.gif /opt/novell/iprint/share/icons/iprint_32.gif /opt/novell/iprint/share/locale /opt/novell/iprint/share/locale/cs /opt/novell/iprint/share/locale/cs/LC_MESSAGES /opt/novell/iprint/share/locale/cs/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/de /opt/novell/iprint/share/locale/de/LC_MESSAGES /opt/novell/iprint/share/locale/de/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/es /opt/novell/iprint/share/locale/es/LC_MESSAGES /opt/novell/iprint/share/locale/es/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/fr /opt/novell/iprint/share/locale/fr/LC_MESSAGES /opt/novell/iprint/share/locale/fr/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/hu /opt/novell/iprint/share/locale/hu/LC_MESSAGES /opt/novell/iprint/share/locale/hu/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/it /opt/novell/iprint/share/locale/it/LC_MESSAGES /opt/novell/iprint/share/locale/it/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/ja /opt/novell/iprint/share/locale/ja/LC_MESSAGES /opt/novell/iprint/share/locale/ja/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/pl /opt/novell/iprint/share/locale/pl/LC_MESSAGES /opt/novell/iprint/share/locale/pl/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/pt /opt/novell/iprint/share/locale/pt/LC_MESSAGES /opt/novell/iprint/share/locale/pt/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/ru /opt/novell/iprint/share/locale/ru/LC_MESSAGES /opt/novell/iprint/share/locale/ru/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/sl /opt/novell/iprint/share/locale/sl/LC_MESSAGES /opt/novell/iprint/share/locale/sl/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/zh_cn /opt/novell/iprint/share/locale/zh_cn/LC_MESSAGES /opt/novell/iprint/share/locale/zh_cn/LC_MESSAGES/iprint-client.mo /opt/novell/iprint/share/locale/zh_tw /opt/novell/iprint/share/locale/zh_tw/LC_MESSAGES /opt/novell/iprint/share/locale/zh_tw/LC_MESSAGES/iprint-client.mo /opt/novell/lib /opt/novell/lib/libiprint-ui.so /opt/novell/lib/libiprint-ui.so.1 /opt/novell/lib/libiprint-ui.so.1.0.0 /opt/novell/lib/libiprint.so /opt/novell/lib/libiprint.so.1 /opt/novell/lib/libiprint.so.1.0.0 /opt/novell/lib64 /opt/novell/lib64/libiprint-ui.so /opt/novell/lib64/libiprint-ui.so.1 /opt/novell/lib64/libiprint-ui.so.1.0.0 /opt/novell/lib64/libiprint.so /opt/novell/lib64/libiprint.so.1 /opt/novell/lib64/libiprint.so.1.0.0 /opt/novell/man /opt/novell/man/man1 /opt/novell/man/man1/iprntcmd.1 /usr/lib/browser-plugins/npnipp32.so /usr/lib/firefox /usr/lib/firefox/plugins /usr/lib/firefox/plugins/npnipp32.so /usr/lib/mozilla /usr/lib/mozilla/plugins /usr/lib/mozilla/plugins/npnipp32.so /usr/lib64/browser-plugins/npnipp.so /usr/lib64/cups/backend/iprint /usr/lib64/firefox /usr/lib64/firefox/plugins /usr/lib64/firefox/plugins/npnipp.so /usr/lib64/mozilla /usr/lib64/mozilla/plugins /usr/lib64/mozilla/plugins/npnipp.so /var/opt/novell /var/opt/novell/log /var/opt/novell/log/iprint /var/opt/novell/log/iprint/client 2009-03-07 19:06:36 Jobs:0 Err:0 ab@mybox:~>
This rather long bit of output shows me I have some libraries (files with ‘.so’ extensions) in /usr/lib64 which I assume are actually 64-bit versions of the software. The ‘file’ command can confirm it, but let’s move on. With the iPrint package installed I fired up my browser and went to the iPrint page on the internal Novell site. This is where iPrint really shines to me…. the Novell campus in Provo is displayed via a webpage as a map that lets a user drill down into a building (‘D’), then to a floor (’2′) and finally to a printer displayed on a map according to the building layout. This is nice because I know where I sit and I can see all of the close printers. By clicking on the little icon for the nearest printer I should be prompted to install the drivers and then magically they work. Here is where I hit my first snag.
For some reason the iPrint software is looking for some libraries that are named something else. Linking to a library with the name of another file is easy enough to do with a softlink/symlink but it needs to be done. Thankfully somebody had already figured out the links to create. The iPrint software added a plugin to Firefox so it would understand how to deal with iPrint as shown in the screenshot where that plug-in is highlighted (restart of Firefox was required to load the plug-in). As a result when I clicked on my printer iPrint went into action and immediately hung my browser because it couldn’t find the cups library required. The fix for this (actually for 32-bit or 64-bit software) is to simply create a couple symlinks from where iPrint expects to find a library to where the library actually exists. On my system there was no /usr/lib64/libcups.so or /usr/lib/libcups.so file or link, which is what iPrint wants to see. On a 64-bit system run the following:
ln -s /usr/lib64/libcups.so.2 /usr/lib64/libcups.so
I also did the same for the file in /usr/lib which may need to be done on a 32-bit system:
ln -s /usr/lib/libcups.so.2 /usr/lib/libcups.so
Once that was done I restarted Firefox one more time (I’d recommend you just install the software, create the links, and restart FF one rather than testing and locking things up) and all was well. The iPrint client installed the printer which worked immediately to print the page I was looking at (no restarts, no magic, etc.).
Whether or not this is really that useful is up for debate but it took me more than ten seconds to find this solution so I hope it will save others time as well. If you have not used iPrint in the past I would recommend giving it a shot. From an end user point of view it is great…. no manual distribution of drivers, no calling the helpdesk, no finding IP address or share names or anything to get a lousy printer working…. just go to the iPrint page, click on the printer, and enjoy. From an administration point of view it is also nice…. setup iPrint, upload the drivers your end users may use, and let them know which page to use (http://iprint.yourcompany.tld/ for example) to add their own printers. You can also keep track of who is printing how much, enable access controls, make the interface an easy one, push out new drivers from a single point, etc.