[Printing-architecture] Ubuntu Natty the first distribution which does automatic download of binary printer driver packages

yuji.saito at avasys.jp yuji.saito at avasys.jp
Thu Jan 20 18:36:43 PST 2011


Hello, Till, Martin.

On Fri, 2011-01-07 at 01:20 +0100, Till Kamppeter wrote:
> Hi,
>
> Ubuntu Natty (11.04, to be released end of April) will be the first
> Linux distribution which automatically downloads binary printer driver
> packages from manufacturers via OpenPrinting.

Thank you for achieving automatic download.

I checked in my home, and it works perfectly. I could read driver's
license, and I could select one from 2 drivers for 1 printer.

But I tried it in my company, it had a problem and didn't work. It was
because of proxy. Result of my quick analysis, it could work if the
following 3 points are changed.

1. In system-config-printer (package:
python-cupshelpers_1.2.3+20100723-0ubuntu13)
   system-config-printer accesses to OpenPrinting.org. But it did't
   read "http_proxy". I tried like below, and it could work.

   (Caution! It is just example. I think proxy information should be
    acquired from "http_proxy" environment variable.)
========================================================================
--- /usr/share/pyshared/cupshelpers/openprinting.py.ORG	2011-01-04
23:39:02.000000000 +0900
+++ /usr/share/pyshared/cupshelpers/openprinting.py	2011-01-20
09:58:58.000000000 +0900
@@ -59,8 +59,9 @@
         # Send request
         result = None
         status = 1
+        myproxies = {'http': 'http://proxy.example.com:port'}
         try:
-            conn = urllib.urlopen(self.url);
+            conn = urllib.urlopen(self.url, proxies=myproxies);
             status = conn.getcode();
             if (status == 200):
                 result = conn.read()
========================================================================

2. In jockey (package: jockey-common_0.8-0ubuntu3)
   Jockey seems to acquire the public key from driver's fingerprint.
   But gpg command in jockey didn't read "http_proxy".
   I tried like below, and it could work.

   (Caution! It is just example. I think proxy information should be
    acquired from "http_proxy" environment variable.)
========================================================================
--- /usr/share/pyshared/jockey/oslib.py.ORG	2011-01-20 03:57:54.000000000
+0900
+++ /usr/share/pyshared/jockey/oslib.py	2011-01-20 13:32:36.000000000 +0900
@@ -436,7 +436,9 @@
             # the fingerprint
             gpg = subprocess.Popen(['gpg', '--homedir', gpghome,
                 '--no-default-keyring', '--primary-keyring',
default_keyring,
-                '--keyserver', self.gpg_key_server, '--recv-key', keyid],
+                '--keyserver', self.gpg_key_server,
+                '--keyserver-options', 'http-proxy=http://proxy.example.com:
port',
+                '--recv-key', keyid],
                 stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                 env={'PATH': os.environ.get('PATH', '')})
             (out, err) = gpg.communicate()
========================================================================
   And, in addition, I think it might be better that gpg uses http access
   to port 80 instead of hkp access by default, considering the users in
   the enterprise or the organization.

3. In apt-get
   [System]-[Preferences]-[Network Proxy] (gnome-network-properties)
   doesn't set proxy for apt, so jockey can't download the driver. Ubuntu
   10.10 or older, gnome-network-properties could set proxy for apt.
   I created file like below, and jockey could download the driver.
========================================================================
# cat <<EOF > /etc/apt/apt.conf
Acquire::http::Proxy "http://proxy.example.com:port";
EOF
========================================================================

Best regards.

Saito

-- 
Yuji Saito <yuji.saito at avasys.jp>
Linux Driver Team, ES1G, ES Business Division
AVASYS CORPORATION <http://avasys.jp/>


More information about the Printing-architecture mailing list