Transition from dpkg's install-info to GNU's install-info
Nicolas François <nicolas.francois@centraliens.net>
Norbert Preining <preining@debian.org>
Goals
- Replace dpkg's install-info by the GNU's install-info.
- Ease the recovery of a corrupted Info dir file by allowing a generation from scratch.
- Remove one more perl script from essential.
Rationale
- Info files are mostly used by GNU packages. The format of these files is described by the GNU texinfo package, and the support for new features is added to the GNU's install-info (ginstall-info on Debian), and not in dpkg's install-info (e.g. support for documents with more than one section: #139569).
- /usr/share/info/dir integrates information from different packages. A package can break what has been registered by another one, without any possibility to fix it (itself). Thus it would be better to be prepared for regenerating a dir file from scratch at any time.
Implementation
- dpkg ships a new /usr/sbin/install-info that will call /usr/bin/install-info with the same arguments. It also warns the user if called with an absolute path. Dpkg also contains Breaks against old versions of all info-browsers that do not depend on install-info.
- The source package texinfo builds a new binary package install-info that provides /usr/bin/install-info (a script, see below), and as before /usr/bin/ginstall-info, the real GNU install-info.
- The install-info package shows interest in the file/dir trigger in /usr/share/info/. If any file is dropped there the triggered action of the package is called which is calling update-info-dir
- The script /usr/sbin/update-info-dir is new and will regenerate the dir file from the set of all installed info documents by calling ginstall-info on each of them. This approach currently breaks the inclusion of about 50 info documents out of 580 currently in sid. These package will still work but will not appear in the global dir index (so "info jargon" will work, but it will not be found in the dir file). We will file bugs against these packages to fix the texi input file to get a proper info-dir entry.
- The script /usr/bin/install-info will check whether it was called from a maintainer script (by checking for $DPKG_RUNNING_VERSION) and if it is it warns but does not do anything else due to the implementation of triggers. If it is not called from a maintainer script it gives a warning that this is not dpkg install-info any more and calls ginstall-info with the very same arguments.
Timeline
- File bugs on all packages with non-self-contained info files (lacking info dir section, so that the --section argument to install-info is not needed anymore) (done 2009-05-16).
- Upload packages with now self-contained info files to unstable (in progress).
- Upload texinfo with new install-info to unstable (done 2009-06-10)
- File bugs on all info-browser providing packages to ensure that the install-info dependency is added if they makes use of the dir file (done 2009-06-10).
- Upload all info-browser providing packages with new install-info dependency to unstable (all packages have patch sent or NMU in DELAYED).
- Wait until all info-browser providing packages with fixed dependencies are in testing
- Upload the new dpkg.
- Upload all packages providing info files w/o direct calls to install-info.
Other changes
- Changes in debhelper (dh_installinfo):
- Remove all calls to install-info. This should be now handled by triggers.
- Upload to unstable.
- Changes in lintian:
- Warn on incomplete Info files.
- Warn about maintainer scripts calling install-info directly.
- Changes in packages installing Info files:
- (Note: According to an i386 Contents file, there are 2220 Info files, in 403 packages)
- These packages should just drop their Info files in /usr/share/info/. (They could Suggest/Recommend an info-browser package.)
- Packages using dh_installinfo should just be bin-nmued/rebuilt with a newer debhelper.
- The Info files must be self-contained (e.g. the section must be specified in the Info file), so that they do not require any special install-info options when they are registered.
- Changes in manuals:
- Policy:
- The policy mentions install-info, and has a section about Info documents. Some changes may be required (e.g. require that the Info files are self sufficient, and mention the rest is handled by triggers).
- Other documents?
- Policy:
Links
dpkg branch that replaces install-info: http://git.debian.org/?p=users/hertzog/dpkg.git;a=shortlog;h=refs/heads/pu/install-info
- Texinfo updated package: svn://svn.debian.org/debian-tex/texinfo/branches/split-ii
Link to the bugs filed against packages with missing dir section in info files, and against info browsers not depending on install-info: http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=preining@logic.at;tag=texinfo-transition
Discussion on -dpkg: http://lists.debian.org/debian-dpkg/2009/03/msg00019.html
Resources
- List of info-browsers (source packages):
Armin Berres <trigger+debian@space-based.de> konqueror (U) Fathi Boudra <fabo@debian.org> konqueror (U) Rob Browning <rlb@defaultvalue.org> emacs emacs21 emacs21-nox emacs22 emacs22-gtk emacs22-nox Debian JED Group <pkg-jed-devel@lists.alioth.debian.org> jed jed-extra xjed Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> konqueror Debian TeX maintainers <debian-tex-maint@lists.debian.org> info Frank Küster <frank@debian.org> info (U) Rafael Laboissiere <rafael@debian.org> jed (U) jed-extra (U) xjed (U) Ana Beatriz Guerrero Lopez <ana@debian.org> konqueror (U) OHURA Makoto <ohura@debian.org> xemacs21-gnome-mule xemacs21-gnome-mule-canna-wnn xemacs21-gnome-nomule xemacs21-mule xemacs21-mule-canna-wnn xemacs21-nomule Jerome Marant <jerome@debian.org> emacs (U) emacs21 (U) emacs21-nox (U) emacs22 (U) emacs22-gtk (U) emacs22-nox (U) Guenter Milde <milde@users.sf.net> jed-extra (U) Michael Piefel <piefel@debian.org> tkinfo Norbert Preining <preining@debian.org> info (U) Jörg Sommer <joerg@alea.gnuu.de> jed (U) xjed (U) Pino Toscano <pino@kde.org> konqueror (U) Modestas Vainius <modestas@vainius.eu> konqueror (U) Sune Vuorela <debian@pusling.com> konqueror (U) Bas Zoetekouw <bas@debian.org> pinfo
List of packages with invalid info files (see http://lintian.debian.org/tags/info-document-missing-dir-section.html and http://lists.debian.org/debian-dpkg/2009/03/msg00069.html):
Guenter Geiger (Debian/GNU) <geiger@debian.org> ladcca-bin Jari Aalto <jari.aalto@cante.net> edb Bill Allombert <ballombe@debian.org> menu Mark Brown <broonie@debian.org> tua Devin Carraway <devin@debian.org> quelcom David Coe <davidc@debian.org> ispell Debian GCC Maintainers <debian-gcc@lists.debian.org> libcloog-ppl-dev Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org> libgnucrypto-java Debian JED Group <pkg-jed-devel@lists.alioth.debian.org> jed-common Debian KDE Extras Team <pkg-kde-extras@lists.alioth.debian.org> tora Debian Multimedia Team <debian-multimedia@lists.debian.org> opencubicplayer (U) Debian OCaml Maintainers <debian-ocaml-maint@lists.debian.org> ocaml-doc Ryan Finnie <ryan@finnie.org> robotfindskitten Jochen Friedrich <jochen@scram.de> gmediaserver Steve Greenland <stevegr@debian.org> jargon Debian QA Group <packages@qa.debian.org> acct barcode oleo Joerg Jaspert <joerg@debian.org> muddleftpd Tatsuya Kinoshita <tats@debian.org> edb (U) flim semi Matthias Klose <doko@debian.org> libcloog-ppl-dev (U) python2.4-doc python2.5-doc Noèl Köthe <noel@debian.org> smbc Rafael Laboissiere <rafael@debian.org> jed-common (U) Chris Lawrence <lawrencc@debian.org> latex2rtf-doc Ola Lundqvist <opal@debian.org> source-highlight OHURA Makoto <ohura@debian.org> vflib3-doc xemacs21-support A Mennucc1 <mennucc1@debian.org> libsnmpkit-dev xmorph Michael Meskes <meskes@debian.org> tora (U) Samuel Mimram <smimram@debian.org> ocaml-doc (U) David Nusinow <dnusinow@debian.org> xconq-doc Patrick Ouellette <pouelle@debian.org> opt Mathias Palm <mathias.palm@gmx.net> libvformat1-dev Gerrit Pape <pape@smarden.org> bcron Gürkan Sengün <gurkan@linuks.mine.nu> opencubicplayer Bradley Smith <bradsmith@debian.org> mathgl-doc Jörg Sommer <joerg@alea.gnuu.de> jed-common (U) Fabio Tranchitella <kobold@debian.org> gtkdialog Luis Uribe <acme@eviled.org> netmask Arnaud Vandyck <avdyk@debian.org> libgnucrypto-java (U) Remi Vanicat <vanicat@debian.org> ocaml-doc (U) Rémi Vanicat <vanicat@debian.org> realtimebattle-common Santiago Vila <sanvila@debian.org> diff-doc Taku YASUI <tach@debian.or.jp> sdic