History

Aptitude can detect lists in descriptions. The feature has has been on by default in an older version, was later disabled due to compatibility problems. In version 0.4.4-1, a fix for the worst compatibility problem was introduced and the feature was re-enabled.

Introduction

In the past the option -o Aptitude::Parse-Description-Bullets=true, which is on by default as of 0.4.4-1 would enable aptitude to try to detect if a package description contains lists, such as:

 The module-assistant tool helps users and maintainers with managing
 external kernel modules packaged for Debian. It can do:
 .
  - automated preparation of build environment for modules compilation
    (eg. automatical detection and installation of required kernel
    source/headers)
  - automated module source downloads
  - configuring and keeping track of external and localy built modules
    packages
  - semi-automated multiple builds for multiple kernel versions
 .
 It also contains some framework to be used by the build-scripts in the
 accompanying modules-source packages in Debian.

and try to render them nicely, by:

thus, if you have a wide terminal, then you will see something like this in aptitude. (In order to see how the text is rendered you'll need to enlarge your browser window until the next line is rendered in one line only:)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The module-assistant tool helps users and maintainers with managing external kernel modules packaged
for Debian. It can do:

* automated preparation of build environment for modules compilation (eg. automatical detection and
  installation of required kernel source/headers)
* automated module source downloads
* configuring and keeping track of external and localy built modules packages
* semi-automated multiple builds for multiple kernel versions

It also contains some framework to be used by the build-scripts in the accompanying modules-source
packages in Debian.

with the feature disabled you'd see the following:

The module-assistant tool helps users and maintainers with managing external kernel modules packaged
for Debian. It can do:

- automated preparation of build environment for modules compilation
  (eg. automatical detection and installation of required kernel
  source/headers)
- automated module source downloads
- configuring and keeping track of external and localy built modules
  packages
- semi-automated multiple builds for multiple kernel versions

It also contains some framework to be used by the build-scripts in the accompanying modules-source
packages in Debian.

or (in the case of a different package):

Contains the following scripts, dependencies/recommendations shown in brackets afterwards:
- annotate-output: run a command and prepend time and stream (O for stdout,
    E for stderr) for every line of output
- archpath: print tla/Bazaar package names [tla | bazaar]
- bts: a command-line tool for manipulating the BTS [www-browser,
    libwww-perl, mailx | mailutils]
- checkbashisms: check whether a /bin/sh script contains any common
    bash-specific contructs
- cvs-debi, cvs-debc: to call debi and debc from the CVS working directory
    after running cvs-debuild or cvs-buildpackage [cvs-buildpackage]
- cvs-debrelease: to call debrelease from the CVS working directory
    after running cvs-debuild or cvs-buildpackage [cvs-buildpackage,

Problem

Since the nice formating could also be problematic (see bug 373888) it's been off by default in the past, thus most people would not be able to enjoy it (see bug 388594).

Proposed Solution

Daniel Burrows and this author think that with the release of 0.4.4-1 aptitude should be upwards compatible - if there are problems with rendering of some package description then both options, fixing aptitude and fixing the descriptions remain workable.

So one thing that can be done now is to transform lists that are not recognized as such into the format recognized by aptitude.

This author had traversed the first 200 packages that are installed on his system in 7 minutes (the sections admin, comm and devel) in the older incompatible aptitude 0.4.3-1, and had found that among those:

Thus, the reasoning was that it should be possible to traverse all packages and fix their description, so that all render well. Once a majority of packages would be converted, the list formating could be promoted into the Debian Policy (Daniel Burrows' proposal).

To speed up the hunting and fixing a lintian check issuing a warning could be created, so that people can start fixing those when they run it, or by running it against the whole archive.

Approach to analysis of existing packages

  1. Filter out all existing packages and their descriptions:
    • grep-available --show-field=Package,Description '' > available_packages 

  2. Determine packages that possibly contain lists:
    • We use the script descriptions_with_lists which can be found in the appendix below. It's crutial how that script devines which description possibly could contain a list. Now we feed the available package list into the program and heuristically obtain an possible list of packages that contain lists. It's 1214 as of 2006-10-21. Again see the appendix.

  3. Go through the list and see which look right. I did not do this within aptitude, since I didn't
    • see no easy way to feed it a list of packages to show me. To be done.

Status

Thus:

Sections manually analyzed:

Packages containing lists, that render fine (manually analyzed):

Packages which need a patch to their description to render fine:

Package

patch sent (bug number)

patch accepted

fixed in testing ?

adduser

388853

Y

Y

ax25mail-utils

389049

Y

cvsutils

N1

debmake

388854

N1

drgeo

389137

N1

devscripts

388856

Y

Y

fbb

389050

Y

gnumeric

389140

Y

Y

libslang2-dev

388858

Y

linpsk

389051

N2

plplot-bin

389142

Y

Y

r-cran-misc3d

N2

r-noncran-lindsey

N2

vbpp

389133

Y

Y

xcall

389052

Y3

z88dk

395997

Y

(1) line break problem. (2) incorrect format. (3) packages removed from acrchive: "RoM; development ceased upstream; requires gtk 1.2".

Appendix

a2ps acidlab ada-mode adduser adduser-ng adduser-ng-doc adduser-ng-doc-devel adduser-plugin-eximconf adduser-plugin-eximconf4 adept-manager aeromail aewm++-goodies afbackup afbackup-client afbackup-common agrep alcovebook-sgml alcovebook-sgml-doc alevt alexandria allegro-examples alsa-utils amanda-client amanda-server amarok amaterus amavis-ng amrita amsynth analog ap-utils apache2-utils apg arc argouml aspseek asterisk aswiki athcool atm-tools aview awesfx ax25-apps axe ayttm backuppc balsa basilisk2 bbappconf bbmail bhl bibcursed bibtex2html bidentd biff bigloo bigloo-devtools bitchx bitcollider bitcollider-plugins bitmap-mule bitscope blogtk blootbot boa-constructor bochs-doc bochs-svga brag brightside brltty bsfilter bsmtpd btyacc bugzilla c-sig c2man ca-certificates calc calcoo came camediaplay cameleon camstream catalog cbmconvert cccd ccmalloc cedet-common cgdb chan-capi chiark-backup chicken chktex cjk-latex cl-ppcre clamav clamav-daemon clanbomber cli-common cli-common-dev cmail cmail-icons courier-filter-perl crafty-books-medtosmall crafty-books-small crash crashme crosshurd cstocs cstream cthugha cvsutils cwcdr cweb-latex cyrus-admin cyrus-common cyrus-dev cyrus-imapd cyrus-news-spool cyrus-nntp cyrus-pop3d cyrus21-admin cyrus21-clients cyrus21-common cyrus21-dev cyrus21-doc cyrus21-imapd cyrus21-murder cyrus21-pop3d dacode darkstat dasher db4.1-util db4.2-util db4.3-util dbbalancer debbuggtk debian-policy debmake debnest debpartial decafc desktop-file-utils devfsd devscripts dh-kpatches dhttpd dict-gazetteer2k-counties dict-gazetteer2k-places dict-gazetteer2k-zips ding dmake dnstop doc++ doc-debian doc-debian-ja doc-rfc-experimental doc-rfc-fyi-bcp doc-rfc-misc doc-rfc-old-std doc-rfc-std doc-rfc-std-proposed docbook-doc docbook-utils docbook2x dosemu drgeo drpython dsniff dvd+rw-tools dvi2dvi dviutils dvr e3 easytag eclipse-platform effectv ekg eli-xtools elib elog elpoint emuga eric eskuel etpan-ng ezmlm-src fbb fbpager fceu fdutils file-roller fireflier-client-gtk fireflier-client-kde fireflier-client-qt fireflier-server flac flexbackup flip flwm flyspray fnord fonty-dev fortunes-fr fortunes-it forutil fp-units-base fp-units-db fp-units-gfx fp-units-misc fp-units-net fp-utils fpdns free-java-sdk freeamp freebirth freecdb freeradius freesci frox ftjam ftp-proxy funnelweb gacc gandalf-dev gandalf-doc gandalf1 gap-small-groups-extra garlic garlic-doc gatos gccchecker gcombust gcompris gcvs gdesklets-data gdis genpower gerris gftp gftp-common gftp-gtk gftp-text ggobi ggz-game-servers ggz-gtk-games ggz-kde-games ggz-sdl-games ggz-utils gimp-python gkrellm gkrellm-common gkrellm-reminder gkrellmd gkrellweather global glpk gmpc gmt-doc gnat gnat-gps-doc gnome-alsamixer gnome-games gnome-iconedit gnome-nettool gnome-pkg-tools gnome-system-tools gnome-themes gnome-themes-extras gnomeicu gnomeicu-common gnomp3 gnotepad+ gnumeric gnumeric-plugins-extra gnupg-doc gnuplot-mode gobo gobo-doc gpaint gpart gphotocoll gpredict gq gql-shell graphviz grep-dctrl grisbi groff gstreamer-doc gstreamer-editor gstreamer-misc gstreamer-plugin-apps gstreamer-plugin-libs gstreamer-plugin-libs-dev gstreamer-tools gstreamer0.8-doc gstreamer0.8-misc gstreamer0.8-plugin-apps gstreamer0.8-tools gthumb gtklp gtkrecover gtkterm guessnet guile-library gxmms h5utils haskell-mode headache heartbeat help2man hevea hiki honeyd hpoj ht htdig hugin-tools hydrogen iacd ibcs-base ic35link ickle ickle-control ifplugd ifupdown-scripts-zg2 iiimf-htt-le-indic ilohamail im-sdk-docs imageindex imms ipe iperf ircd-hybrid ire ire-ed irssi-snapshot irssi-snapshot-dev isync ivi ja-trans jack jam jamin java-common jbofihe jde jetty-extra jffnms jftpgw jhcore jnethack jpilot jpilot-plugins juk k3b k3d k3d-doc kate kdbg kdegraphics kdesdk-misc kdesdk-scripts kernel-image-2.4.27-speakup kernel-image-netbootable kernel-internals-guide kernel-patch-2.4.17-s390 kernel-patch-scripts kernel-patch-speakup kernel-patch-usagi kernel-patch-wrr keybled kfocus kgpg kid3 kig kimberlite knoda konversation konwert kwave kwavecontrol labplot lam-runtime lambdacore latex-beamer latex-bridge launchtool lbdb lcov ldaptor-doc lexmark7000linux lg-issue100 lg-issue101 lg-issue102 lg-issue103 lg-issue104 lg-issue105 lg-issue106 lg-issue107 lg-issue89 lg-issue96 lg-issue97 lg-issue98 lg-issue99 libalias-perl libamrita-ruby1.6 libamrita-ruby1.8 libamstd-ruby1.8 libapache-auth-ldap libapache-dbi-perl libapache-miniwiki-perl libapache-mod-security libapache-mod-ssl libapache-mod-text2html libapache-modxslt libapache-request-perl libapache2-mod-security libapache2-modxslt libapache2-request-perl libarpack2 libarpack2-dev libaws-dev libbakery-2.3-9 libbakery-2.3-common libbakery-2.3-dev libbakery-gnomeui2.0-1 libbakery-gnomeui2.0-dev libbakery2.0-1 libbakery2.0-dev libbitcollider-dev libbitcollider1 libboost-test-dev libboost-test1.31.0 libbow libbsf-java libburn-1 libburn-dev libc-scan-perl libcarp-datum-perl libccid libcf-ocaml libcf-ocaml-dev libcgi-ssi-parser-perl libcgicc1 libcgicc1-dev libcgicg1 libcgicg1-dev libchart-perl libclass-container-perl libclass-dbi-pager-perl libcommons-dbcp-java libcommons-lang-java libcommons-modeler-java libcompress-zlib-perl libconfigreader-perl libcoyotl-dev libcoyotl2 libcroco3 libcroco3-dev libcrypto++5.2 libcryptokit-ocaml libcryptokit-ocaml-dev libcsiro0 libcurses-ui-perl libcyrus-imap-perl21 libdaemon-dev libdaemon0 libdata-flow-perl libdb1 libdb1-altdev libdb1-compat libdb2 libdbd-sqlite-perl libdbix-abstract-perl libdebtags-dev libdebtags0 libdevel-ptkdb-perl libdiacanvas2-0 libdianewcanvas2 libdianewcanvas2-dev libdirectfb-extra libdscaler libdumbnet1 libfileutils-ocaml-dev libflac++-dev libflac++2c102 libflac++4 libflac++5 libflac-dev libflac4 libflac6 libflac7 libfreetype6 libgdk-pixbuf-dev libgdk-pixbuf-gnome-dev libgdk-pixbuf-gnome2 libgdk-pixbuf2 libgef-java libgeos2 libgetopt-declare-perl libgettext-ruby-util libgettext-ruby1.6 libgettext-ruby1.8 libglui-dev libgnet-dev libgnet2.0-0 libgnomeada2-dev libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprint2.2-dev libgnomeprint2.2-doc libgnomeprintui2.2-0 libgnomeprintui2.2-common libgnomeprintui2.2-dev libgnomeprintui2.2-doc libgnomesu-common libgnomesu-dev libgnomesu0 libgnomevfs2-extra libgnujaxp-jni libgnutls-dev libgnutls10 libgnutls10-dev libgnutls11 libgnutls11-dbg libgnutls11-dev libgnutls12 libgnutls13 libgnutls7 libgnutls7-dev libgpcl0 libgsmme1c102 libgstreamer-plugins0.8-0 libgstreamer0.6-0 libgstreamer0.8-0 libgtkada2-dev libgtkada2-doc libhdf4g libhs libhs-dev libhttp-access2-ruby1.6 libhttp-access2-ruby1.8 libhttp-dav-perl libiconv-hook-dev libiconv-hook1 libjaxp1.2-java libjcode-pm-perl libjcommon-java libjfreechart-java libjfreereport-java libjfreereport-java-doc libkdtree++-dev libkexif1 libkipi0 libkipi0-dev liblinphone0 liblinphone0-dev liblinphonegnome0 liblinphonegnome0-dev liblo0 liblo0-dev liblog-log4perl-perl libltdl3 libltdl3-dev libm17n-0 libm17n-dev libmad-ocaml libmad-ocaml-dev libmad0 libmdbtools libmockobjects-java libmockobjects-java-doc libmpeg2-4 libmpeg3-1 libmultisync-plugin-opie libmultisync-plugin-syncml libneon19 libneon23 libneon24 libneon25 libneon26 libnet-easytcp-perl libnet-ftpserver-perl libnet-ldap-perl libnet-server-perl libnews-newsrc-perl libnora-ruby1.6 libnora-ruby1.8 libnspr-dev libnspr4 libnspr4-0d libocamlgraph-ocaml-dev libocamlnet-ocaml libocamlnet-ocaml-dev liboggflac++-dev liboggflac++0c102 liboggflac-dev liboggflac1 liboggflac3 liboggz1 libopenexr-dev libopenexr2 libopenexr2c2 libopenexr2c2a liborange liborange-dev libortp0 libortp0-dev libotf-bin libotf-dev libotf0 libpam-mount libpango1.0-0 libpango1.0-common libpango1.0-dbg libpango1.0-dev libpango1.0-doc libparse-debianchangelog-perl libparse-recdescent-perl libpcre-ocaml libpcre-ocaml-dev libpdf-api2-perl libprelude-dev libprelude0 librd-html-ext-ruby1.8 libregex0 libregex0-altdev libregexp-common-perl libregexp-pp-ocaml-dev libroxen-adbanner libsane-extras libsidutils-dev libsidutils0 libslang2-dev libsmi2 libsmi2-common libsmi2-dev libsmlnj-smlnj libsoap-lite-perl libsoup2.2-8 libstlport4.6 libstlport4.6-dev libstlport4.6c2 libstlport5.0 libtagcoll-dev libtagcoll0 libtasn1-0 libtasn1-2 libtasn1-2-dev libtasn1-3 libtasn1-3-bin libtasn1-3-dev libtasn1-dev libtidy-0.99-0 libtidy-dev libtidy0 libtime-piece-perl libtk-tablematrix-perl libtorch3 libtorch3-dev libtwofish-dev libunicode-japanese-perl libuptimed libvcs-perl libvdkbuilder2 libvdkbuilder2-dev libvideo-capture-v4l-perl libvorbisfile-ruby libvorbisfile-ruby1.6 libvorbisfile-ruby1.8 libwhisker-perl libwvstreams3 libwvstreams3-base libxerces2-java libxext-dev libxext6 libxml-grove-perl libxmlsec1-dev libyehia0.5-0 libyehia0.5-dev libyehia0.5-python libyehia0.5-script libyehia0.5-script-gtk linkchecker linklint linphone linphone-nox linpsk linuxdoc-tools litmus lksctp-tools lmbench lmbench-doc logtrend-storageserver lookup-el lout lout-doc lprfax lukemftp luma lyx m-tx m17n-db m17n-docs m17n-lib-bin m2crypto macchanger maint-guide maint-guide-de maint-guide-es maint-guide-fr maint-guide-it maint-guide-ja maint-guide-pl maint-guide-pt maint-guide-ru maint-guide-zh mairix man2html manedit manpages-de manpages-de-dev manpages-hu manpages-ja-dev manpages-nl manpages-pl manpages-pl-dev manpages-pt manpages-pt-dev manpages-tr mathomatic mathpartir matwrap mboxcheck-applet mc-foo mcp-plugins mcvs mdbtools menu-xdg meterbridge mew mew-beta mew-beta-bin mew-bin mh-e mhc mhc-utils middleman mimedecode mimms minimalist mirrormagic mkrboot mldonkey-server mlmmj mlview mmucl mod-security-common module-assistant monit mordor motion mozilla-imagezoom mp3c mpd mped mpgtx mrt mrwtoppm mrwtoppm-gimp mserv multi-gnome-terminal multi-gnome-terminal-doc muse musixlyr mutt mutt-utf8 myphpmoney mysqlcc nagios-common nagios-mysql nagios-pgsql nagios-plugins nagios-text nana nast nautilus-media ncdt nemesis netdude nethack-common nethack-el netperf netsaint-plugins-fping netsaint-plugins-game netsaint-plugins-ldap netsaint-plugins-mysql netsaint-plugins-pgsql netsaint-plugins-radius netsaint-plugins-samba netsaint-plugins-snmp netsed nettle-bin netwag netwox newbiedoc nice nikto njam noshell nosql notebook-gtk2 nsca ntlmaps nxtvepg objc-poc ocaml-tools odin offlineimap ogle ogle-mmx ogmtools oneliner-el oops opalmod openbox opendchub openexr openoffice.org openoffice.org-base openoffice.org-debian-files openoffice.org-dev-doc opensched openssh-client openssh-server openssl orange orpie osdsh ospics paketto panorama patchutils pdfjam pdftk php-auth php-fpdf php-mail-mime phpmyadmin phppgadmin pimppa piwi plan playmp3list plib1.8.3-dev plib1.8.3-pic pmp-common pmtools pnpbios-tools po4a polipo pppconfig ppscsi-source prelude-lml prelude-manager prelude-nids proxychains psad psi-translations pwsafe pydance-music pyro pyro-gui python-4suite-doc python-albatross python-apt python-bibtex python-crypto python-doc python-eunuchs python-extclass python-gtk2-doc python-imaging python-ldaptor python-logilab-common python-mysqldb python-numarray-ext python-numeric python-numeric-ext python-oss python-pyorbit python-pyparsing python-qtext python-reportlab python-scipy-core python-tables python-weblib python-weblib-doc python-xdg python-xml python2.1-cheetah python2.1-crypto python2.1-doc python2.1-extclass python2.1-imaging python2.1-logilab-common python2.1-numeric python2.1-numeric-ext python2.1-oss python2.1-pyvtk python2.1-reportlab python2.1-weblib python2.1-xml python2.2-albatross python2.2-cheetah python2.2-crypto python2.2-doc python2.2-eunuchs python2.2-extclass python2.2-imaging python2.2-logilab-common python2.2-mysqldb python2.2-numarray-ext python2.2-numeric python2.2-numeric-ext python2.2-oss python2.2-pyorbit python2.2-pyparsing python2.2-pyvtk python2.2-reportlab python2.2-scipy-core python2.2-tables python2.2-weblib python2.2-xml python2.3-albatross python2.3-apt python2.3-cheetah python2.3-crypto python2.3-doc python2.3-eunuchs python2.3-extclass python2.3-imaging python2.3-ldaptor python2.3-logilab-common python2.3-mysqldb python2.3-nevow python2.3-numarray-ext python2.3-numeric python2.3-numeric-ext python2.3-oss python2.3-pyorbit python2.3-pyparsing python2.3-pyvtk python2.3-qtext python2.3-reportlab python2.3-scipy-core python2.3-tables python2.3-weblib python2.3-xml python2.3-zopeinterface python2.4-doc python2.4-numeric python2.4-numeric-ext python2.4-pyorbit qe qemacs qemu qm qmailmrtg7 qprof qtads qtstalker quack-el quake2-data quark r-cran-xml r-recommended raccess ragel rake rccp rdoc rdoc1.8 recover redboot reiser4progs remstats remstats-servers reportbug rhythmbox rhythmbox-applet ri-db-el riece rocks rsaref2 ruby-pkg-tools samhain sane sbm scummvm sdd semantic seyon sfio-dev sg-utils sg3-utils sgml-base sgml2x shorewall sim sing sip sip4 sipcalc sjog skribe slang1-dev slang1-utf8-dev slashem slmon slurm smartlist smbget snownews solid-pop3d somaplayer source-highlight spamass-milter spectemu-common spectemu-svga spectemu-x11 spectrum-roms spikeproxy spong-client spong-common spong-server spong-www starfighter stars stklos streamtuner sumika superkaramba svk svn-buildpackage swish++ swish-e sylpheed sylpheed-claws sylpheed-gtk2 sympa synaptic syslog-ng sysutils sysvconfig t1-xfree86-nonfree tagcoll tclex tcllib tcm tcm-doc tcpick tdiary tdiary-contrib tdom teapop teapop-ldap teapop-mysql teapop-pgsql tedia2sql testdisk tetex-frogg tetex-frogg-doc texpower tfm-arphic-bkai00mp tfm-arphic-bsmi00lp tfm-arphic-gbsn00lp tfm-arphic-gkai00mp thttpd-util tidev-modules-source tidy tidy-doc timeoutd timidity tinycdb tipa tix8.1 tk-brief tkmail tnftp tochnog tomcat4-webapps torcs-data-cars torcs-data-cars-extra torcs-data-tracks torsmo totem totem-gstreamer totem-xine trang trueprint tsclient ttf-mikachan ttf-uralic ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac tulip tv-fonts tvtime twin ucblogo ultrapoint uncc uptimed upx-ucl-beta uwm vdkbuilder2 vdrift vfu viewmol viewpdf.app vmnet vqregister vrfy w3-recs w3-recs-2002 w3-recs-2003 w3m w3m-ssl wap-wml-tools webcheck webmin-cluster webmin-core widestudio wininfo wl wl-beta wmcoincoin wmcpu wmf wminet wmmon wmtime wondershaper wu-ftpd wv wwwoffle xawtv-tools xbase-clients xblast xblast-tnt xblast-tnt-mini xbvl xcall xcdroast xfaces xfce xfce4-goodies xfce4-minicmd-plugin xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-a12k12 xfonts-ay xfonts-base-transcoded xfonts-bitmap-mule xfonts-mplus xfonts-thai-ttf xfonts-utils xfree86-driver-synaptics xgammon xkeysw xlibs-static-dev xmakemol xmakemol-gl xmbdfed xml-core xml-resume-library xmms xmms-crossfade xmms-flac xmms-kde xmms-mpg123-ja xmms-xmmplayer xmove xmpi xmpuzzles xnc xppaut xprobe xpuzzles xspecs xt-sdf2 xt-sdf2-dev xt-strategoxt xtris xutils xutils-dev xvt xxdiff xxdiff-tools xxkb yapps2 yard ygraph yorick zed zinf zope-externaleditor zope-exuserfolder zope-translationservice zope-znavigator zopeedit