Package: apt-listchanges
Version: 2.85.7+squeeze1
Severity: normal
Tags: patch

Hi!

Now that apt-listchanges is priority standard, it's installed on a lot more
systems. New users seem not to understand that the information is being shown
to them in the "less" program (in the default configuration) and even if they
did they do understand that much, they don't necessarily know how to exit less.

We're seen this quite a number of times in #debian over the last few months
where users ask questions like:

  <user> How do I make Christian Perrier go away?

(that one took us a while to work out... the user was stuck in apt-listchanges
following an update to the samba package). 

And again today, a user was saying that "aptitude install" didn't want to do
anything and the pastebin of the session showed it going as far as
"Reading changelogs... Done". When asked what happened after that, he said
"nothing". Not knowing how to exit the pager, he was closing that terminal
window meaning that aptitude never actually did the things it was supposed to
do.

The attached (quite trivial) patch tries to make this situation a little better.
If "pager" is to be used and if LESS is not defined in the environment already
(a user who can set LESS can work out what (END) means themselves), it fiddles
with LESS to make the final prompt a little more intuitive. This covers the
"default install" situation where frontend=pager and pager->less. Perhaps 
different words would be better, perhaps adding it to the xterm-pager code
would be appropriate too (although if you're reconfiguring apt-listchanges,
perhaps you know what less is already), perhaps it could do with some i18n/l10n.

If you think a small patch like this is acceptable for apt-listchanges, it would
be great to see if the SRMs would be prepared to accept it into squeeze at a
future point release since it is affecting stable users.

thanks!
Stuart


-- System Information:
Debian Release: 6.0.2
  APT prefers stable
  APT policy: (500, 'stable'), (500, 'stable-updates'), (101, 
'proposed-updates'), (60, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.38-2-686-bigmem (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages apt-listchanges depends on:
ii  apt                   0.8.10.3+squeeze1  Advanced front-end for dpkg
ii  debconf [debconf-2.0] 1.5.36.1           Debian configuration management sy
ii  debianutils           3.4                Miscellaneous utilities specific t
ii  python                2.6.6-3+squeeze6   interactive high-level object-orie
ii  python-apt            0.7.100.1+squeeze1 Python interface to libapt-pkg
ii  python-support        1.0.10             automated rebuilding support for P
ii  ucf                   3.0025+nmu1        Update Configuration File: preserv

Versions of packages apt-listchanges recommends:
ii  exim4                    4.72-6+squeeze2 metapackage to ease Exim MTA (v4) 
ii  exim4-daemon-light [mail 4.72-6+squeeze2 lightweight Exim MTA (v4) daemon

Versions of packages apt-listchanges suggests:
ii  iceweasel [www-browser]    5.0-1~bpo60+1 Web browser based on Firefox
ii  konqueror [www-browser]    4:4.4.5-2     advanced file manager, web browser
ii  konsole [x-terminal-emulat 4:4.4.5-2     X terminal emulator
ii  lynx-cur [www-browser]     2.8.8dev.5-1  Text-mode WWW Browser with NLS sup
ii  python-glade2              2.17.0-4      GTK+ bindings: Glade support
ii  python-gtk2                2.17.0-4      Python bindings for the GTK+ widge
ii  w3m [www-browser]          0.5.2-9       WWW browsable pager with excellent
ii  xterm [x-terminal-emulator 261-1         X terminal emulator

-- debconf information:
  apt-listchanges/confirm: false
  apt-listchanges/which: news
  apt-listchanges/frontend: pager
  apt-listchanges/email-address: root
  apt-listchanges/save-seen: true
--- apt_listchanges.py.orig	2011-07-12 10:39:53.171591784 +0100
+++ apt_listchanges.py	2011-07-12 10:45:17.364029925 +0100
@@ -249,4 +249,6 @@
 class pager(runcommand, ttyconfirm, fancyprogress, frontend):
     def __init__(self, *args):
+        if not 'LESS' in os.environ:
+            os.environ['LESS'] = "-P?e(q to quit)"
         apply(frontend.__init__, [self] + list(args))
         self.command = self.config.get('pager', 'sensible-pager')

Reply via email to