Man Linux: Main Page and Category List


       langupdate - An apt frontend for the Emdebian implementation of 'tdebs'


       langupdate [[[-n] | [--dry-run ]]] [[[--suite]] string]
                  [[[-r] | [--autoremove]]] [[[-m] | [--mirror]] string]
                  [[[-v] | [--verbose]] integer]

       langupdate {[[-?] | [-h] | [--help] | [--version]]}


       langupdate is a method for synchronising the translation file support
       with the list of installed packages and the list of locales supported
       on their own machine.

       langupdate uses a temporary file for the sources.list and updates it
       from the list of supported locales each time langupdate is run, i.e. it
       combines the effects of apt-get update with apt-get upgrade. tdeb
       packages have no dependencies so 'dist-upgrade' is not required.


       Emdebian TDebs provide a method for splitting all translation files out
       of packages and into separate TDeb packages, organised by the locale
       root and source package. This allows individual users to only install
       translations files for the locales supported on their own machine and
       only for the packages installed at the time.

       Note that this functionality is not available for Debian TDebs and
       langupdate does not install any translation packages if only Debian
       packages are installed as these already contain all the translation

       langupdate is intended to support Emdebian Grip where Emdebian packages
       can be mixed with Debian packages.

   Disc space is not cheap
       Debian packages collate all available translations into a single
       package which can easily lead to 250Mb of unused translation files on a
       typical installation. Emdebian generates a single package for every
       translation of each Emdebian package, leading to a tenfold increase in
       the number of binary packages built from each source package. To solve
       this problem, langupdate supports a secondary apt cache so that the
       main apt cache can be kept as small as possible.

       langupdate then queries the secondary apt cache to get a list of all
       translation packages (tdebs) that match the list of locales supported
       on the device. This list is then compared with the list of installed
       binaries. The translation packages that match the installed package are
       then installed with apt-get.

   Why C and C++?
       There is no direct hook into apt-get upgrade and no easy way of reading
       the apt-cache from C without forking a call to apt-cache itself. So I
       use libapt-pkg which is a C++ library. The rest of the code is C
       because I prefer to use the memory management of glib2. If anyone
       fancies porting langupdate to just C++ for use on devices that do not
       have room for libglib2.0-0, patches are welcome.


           Request apt to purge all orphaned TDebs - either where the package
           has been uninstalled or the locale has become unsupported.

           Display version of langupdate and exit.

       -?| -h|--help
           Display help message for langupdate and exit.


   langupdate options
           Show the cache data without installing any packages. (In autoremove
           mode, show the list of packages to be removed without performing
           the purge.)

       -m|--mirror MIRROR
           Override the default Emdebian mirror
           ( and use a different one.

       --suite  SUITE
           Specify a different suite to check. Only suites supported by the
           chosen mirror will be usable. The default Emdebian mirror only
           supports testing and unstable or the codenames sid, lenny and (once
           Lenny is released) squeeze.

       --verbose  integer
           Increase the verbosity of messages, levels between 0 and 4 are


       langupdate is primarily intended for Emdebian support and plans for
       TDebs in Debian are only at a planning stage. Emdebian packages can be
       identified by the em[0-9] version suffix:

       Example 1.1. Example of an Emdebian version suffix in use

           apt-cache show dpkg
           Package: dpkg
           Source: dpkg (1.14.23)
           Version: 1.14.23em1
           Architecture: amd64
           Maintainer: Dpkg Developers <>
           Installed-Size: 1096
           Pre-Depends: libc6 (>= 2.7-1), coreutils (>= 5.93-1), lzma
           Replaces: manpages-de (<= 0.4-3em1), manpages-pl (<= 20051117-1em1)
           Conflicts: apt (<< 0.7.7em1), aptitude (<< 0.4.7-1em1), dpkg-dev (<< 1.14.16em1), dpkg-iasearch (<< 0.11em1), sysvinit (<< 2.82-1em1)
           Priority: required
           Section: admin
           Filename: pool/main/d/dpkg/dpkg_1.14.23em1_amd64.deb
           Size: 447968

       Emdebian packages already have all /usr/share/locale/* content removed,
       so the Emdebian TDeb does not need to Replace: the Emdebian package.
       There is one Emdebian TDeb per source package per locale per
       architecture which could, potentially, have to Replace: multiple binary
       packages built from the one source package in Debian. Even if the
       sysadmin removes files from /usr/share/locale/ manually, it is not
       trivial for langupdate to identify which files remain and therefore
       which TDebs could be safely installed. Therefore, langupdate compares
       the list of binary packages installed with the list of available TDebs
       and ignores TDebs where the binary package does not bear an Emdebian
       version suffix.

       Unless the system includes a mix of both Debian and Emdebian packages,
       langupdate will report that there is nothing to do.


       langupdate is heavily reliant on accurate data in the dpkg and apt data
       sources. The size of these data sources also has a significant impact
       on processing time, especially where a mix of Debian and Emdebian
       packages exist.

       Please attach the output of apt-cache policy to all bug reports against
       langupdate in Debian.


       langupdate was written by Neil Williams <>.

       This manual page was written by Neil Williams <>


       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License as published by the
       Free Software Foundation; either version 3 of the License, or (at your
       option) any later version.

       This program is distributed in the hope that it will be useful, but
       WITHOUT ANY WARRANTY; without even the implied warranty of
       General Public License for more details.

       You should have received a copy of the GNU General Public License along
       with this program. If not, see <>.