A dictionary package half-installs and ispell stops finding a default, and someone reaches for update-default-ispell to fix it. Read the manpage first: it warns explicitly against casual command-line use.
This guide shows what its two modes actually do and how to check the files it maintains, so you treat a package-maintainer helper as exactly that, not an ordinary interactive command. The examples describe the dictionaries-common 1.29.7 installation on this machine.
dictionaries-common installed. Reading the generated files is unprivileged; running the updater normally needs root because it writes under /var/cache, /var/lib and /etc.Checkpoint: This is not a dictionary selector. If you only want to choose the dictionary ispell uses, use the package's select-default-ispell workflow. Use this updater when package installation or configuration needs its database and integration files rebuilt.
Check that the command belongs to the package you think you are repairing:
$ command -v update-default-ispell
/usr/sbin/update-default-ispell
$ dpkg-query -W -f='${Package} ${Version}\n' dictionaries-common
dictionaries-common 1.29.7
Your version may differ. The option names here are the ones this installed release documents. Do not assume behaviour from a similarly named tool on another distribution.
There is no normal help screen. The documented synopsis is only:
update-default-ispell [--skip-symlinks] [--triggered]
An unrecognised option is an error. Do not add guessed switches such as --help to an automated repair.
The updater rebuilds its ispell information from files below /var/lib/dictionaries-common/ispell and writes the resulting database to /var/cache/dictionaries-common/ispell.db. It also maintains the system default at /etc/dictionaries-common/ispell-default, integration data for Emacs, JED and SquirrelMail, and, when enabled, default links below /etc/dictionaries-common.
Inspect those paths first. None of this changes the system:
$ ls -l /var/cache/dictionaries-common/ispell.db \
/etc/dictionaries-common/ispell-default
$ find /var/lib/dictionaries-common/ispell -maxdepth 2 -type f -print 2>/dev/null
$ find /etc/dictionaries-common -maxdepth 1 -type l -ls
A missing dictionary directory can be a perfectly valid result on a machine with no ispell dictionary package installed. That is not a reason to invent a dictionary name or hand-edit the generated default file.
Checkpoint: Save the listing, or note the package operation that led you here. The updater regenerates state from package metadata; it does not preserve manual edits to generated files.
Without --triggered, the program updates its information and tries to enable the update-default-ispell dpkg trigger for a later run. This is the path a maintainer script uses to defer work; it is not a general "refresh everything now" flag.
--skip-symlinks has a narrower job: it tells the updater not to set links in /etc/dictionaries-common. Package configuration can need this while automatically built ispell hashes are not yet available. Skipping links does not select a different default, and it does not stop the database or the other integration files being processed.
That explains a common false alarm: a command can exit successfully while deferring the part that should run after package processing. Check the package manager's transaction and trigger processing rather than assuming a quiet terminal means every link just changed.
Warning: Complete mode changes system-managed files and can rebuild dictionary hashes or integration data. Do not run it just to see what it prints. Let the dictionary package's post-installation script, select-default-ispell, or the dictionaries-common post-installation script call it whenever possible.
If you have a specific, authorised repair reason and package documentation tells you to run the helper directly, use the documented complete-mode switch with elevated privileges:
$ sudo update-default-ispell --triggered
The command may produce little or no output. Its work includes rebuilding /var/cache/dictionaries-common/ispell.db, reading the default from debconf, updating the ispell default and editor integrations, and setting default links unless manual mode or --skip-symlinks stops that last step. A successful exit status means the helper completed; it does not prove a particular dictionary was available or that an application is using it.
When a maintainer script specifically needs links to stay untouched while hashes are being built, the documented combination is:
$ sudo update-default-ispell --triggered --skip-symlinks
Use that combination only for the workflow that calls for it. Applying it as a generic fix leaves the default links stale, which is exactly why the option exists.
After an authorised run, check the exit status immediately and inspect the outputs again:
$ printf '%s\n' "$?"
0
$ stat /var/cache/dictionaries-common/ispell.db \
/etc/dictionaries-common/ispell-default
$ ls -l /etc/dictionaries-common
The timestamp should reflect the run, though exact output depends on whether dictionaries are installed and what debconf says the default should be. An empty ispell-default can mean manual mode, or that no usable ispell dictionary exists; do not replace it with a guessed value.
For a package problem, finish the package manager's own recovery path and read its error rather than repeatedly invoking this helper:
$ sudo dpkg --configure -a
$ sudo dpkg --audit
Those commands can configure pending packages, so run them only when you intend to complete that transaction. If they report a particular dictionary package failure, repair that package through your normal package process, then let its maintainer scripts call the updater again.
select-default-ispell, not this updater.--skip-symlinks casually. It deliberately leaves links alone and can preserve an old link after the selected dictionary changes.If the command fails, keep the exact error, exit status and package-manager context. Check that the package is installed, its dependencies are configured, and the relevant directories are writable by root. Avoid deleting the cache or default files as a first response: removal discards useful evidence and does not repair the package metadata the updater consumes.
dictionaries-common version and command path.--triggered directly only for an authorised maintenance or recovery reason.--skip-symlinks only when the package workflow required links to stay unchanged.