LinuxCommandLibrary

tlmgr-pinning

Manage package repository preferences for TeX Live

TLDR

Show the current pinning data

$ tlmgr pinning show
copy

Pin the matching the packages to the given repository
$ tlmgr pinning add [repository] [package1 package2 ...]
copy

Remove any packages recorded in the pinning file matching the packages for the given repository
$ tlmgr pinning remove [repository] [package1 package2 ...]
copy

Remove all pinning data for the given repository
$ tlmgr pinning remove [repository] --all
copy

SYNOPSIS

tlmgr pinning [OPTIONS] COMMAND [ARGUMENTS]

PARAMETERS

add <pkg>...
    Adds one or more TeX Live packages to the pinned list, preventing them from being updated.

remove <pkg>...
    Removes one or more TeX Live packages from the pinned list, allowing them to be updated again.

list
    Displays all TeX Live packages currently configured as pinned.

--repository <url|path>
    Specifies an alternative package repository URL or local path for the operation, overriding the default.

--location <url|path>
    An alias for --repository, specifying an alternative package source.

--all
    Applies the command to all available TeX Live packages, though less commonly used directly with pinning subcommands.

DESCRIPTION

Pinning in TeX Live, managed by tlmgr-pinning, allows users to fix specific TeX Live packages to their current installed versions, preventing them from being updated during a tlmgr update operation. This functionality is crucial for maintaining a stable and reproducible TeX environment, especially in scenarios where specific package behaviors or functionalities are required that might change in newer versions.

For instance, an older TeX document might rely on a particular bug or feature that was later removed or altered. By pinning a package, users can avoid unintended breakages or regressions in their compiled documents. The tlmgr-pinning command provides subcommands to add packages to the pinned list, remove them, or display the current list of pinned packages, offering fine-grained control over the TeX Live installation's update behavior.

CAVEATS

Pinning packages can prevent important security fixes and bug patches from being applied, potentially leaving your TeX Live installation vulnerable or with known issues. It can also lead to dependency conflicts if other unpinned packages update and expect newer versions of the pinned packages. Use this feature judiciously and only when absolutely necessary for specific compatibility requirements or reproducible build environments.

<B>IMPACT ON TLMGR UPDATE</B>

When a package is pinned using tlmgr-pinning, the tlmgr update command will automatically skip it. This ensures that the pinned package's version remains unchanged, even if newer versions are available in the TeX Live repository. To allow a pinned package to be updated, it must first be explicitly removed from the pinned list using the tlmgr pinning remove command.

HISTORY

The concept of package pinning is a common feature in many package management systems, designed to address the need for stability and reproducibility in software environments. Its inclusion in tlmgr reflects the evolving requirements of TeX Live users who need precise control over their installed packages, especially for long-term projects or specific document compilation workflows. tlmgr itself was introduced to provide a robust, unified command-line interface for TeX Live management, replacing older, less integrated methods. The pinning feature enhances tlmgr's capability to manage complex dependency scenarios and maintain specific software baselines.

SEE ALSO

tlmgr(1), texdoc(1)

Copied to clipboard