- Posted on
- • Administration
Understanding package pinning in APT
- Author
-
-
- User
- Linux Bash
- Posts by this author
- Posts by this author
-
Understanding Package Pinning in APT and Beyond
Package pinning is a powerful tool for Linux system administrators and users, enabling them to prioritize certain packages from specific repositories during installation or upgrade. This post will explore package pinning in APT (Advanced Package Tool) and provide a basic comparison with other package managers like DNF (used in Fedora and RHEL) and Zypper (used in openSUSE).
What is Package Pinning?
Package pinning allows the user to specify which versions of packages should be preferred or avoided, regardless of the version or release available in the repositories the system knows about. This helps in situations where you might want to stick with a stable release of a package rather than automatically updating to newer versions that could possibly break your system setup.
Package Pinning in APT
APT, commonly used in Debian and Ubuntu, has a robust mechanism for pinning packages. This mechanism involves creating entries in the /etc/apt/preferences
file, allowing you to control the priority of package versions based on criteria like version number, release, or even the origin.
How to Pin a Package in APT:
Create or Edit the Preferences File: Open
/etc/apt/preferences
with your preferred text editor, e.g.,nano
orvim
.sudo nano /etc/apt/preferences
Add a Pinning Entry: Here’s what an entry might look like if you want to pin the package
nginx
from the stable repository to ensure it doesn’t update unexpectedly:Package: nginx Pin: release a=stable Pin-Priority: 1001
The
Pin-Priority
dictates the level of preference (1001 or higher ensures that the package is preferred over others).Apply Changes: Update the package lists:
sudo apt update
To install or upgrade packages while considering the pinning rules, simply use
apt install
orapt upgrade
as usual.
Package Pinning in DNF
DNF, unlike APT, manages package priorities using a plugin called dnf-plugins-core
. This plugin must be installed to enable package pinning.
Install DNF Plugins Core:
sudo dnf install dnf-plugins-core
Configure Repository Priority: Edit the repo file located in
/etc/yum.repos.d/
. Add or alter the priority line in the repository section.[repository_name] name=Your Repository baseurl=http://repo.example.com/ enabled=1 gpgcheck=1 priority=1 # Lower numbers indicate higher priority
Run System Update: To respect the newly configured priorities, use:
sudo dnf update
Package Pinning in Zypper
Zypper, used in openSUSE and SUSE Linux Enterprise systems, also supports package priorities:
Add or Modify a Repository with Priority: Use the
zypper
command to alter priorities:sudo zypper addrepo --priority 20 http://repo.example.com/ repository_name
Lower numbers mean higher priority, similar to DNF.
Refresh Repositories:
sudo zypper refresh
Update System: You can now update your system’s packages considering the priorities:
sudo zypper update
Conclusion
Understanding package pinning and repository priorities can significantly enhance how your system handles package updates and maintenance. Each package manager has its methods, but the core idea remains the same: control over what gets installed and from where.
Whether you use APT, DNF, or Zypper, mastering these tools will give you greater stability and flexibility in your system management. Always remember to verify the sources of your repositories and maintain a secure and stable system environment.