Fading Coder

One Final Commit for the Last Sprint

Home > Tech > Content

Managing .pacnew and .pacsave Files in Arch Linux

Tech May 10 11

Understanding Pacnew and Pacsave Files

In Arch Linux, when upgrading packages using pacman -Syu, the package manager may create special backup files to prevent overwriting user-modified configurations. Understanding these files is essential for maintaining a stable system.

Pacnew Files

During package upgrades, pacman creates .pacnew files when it needs to install a new version of a configuration file that you have previously modified. This mechanism protects your customizations from being overwritten. You'll see a message like:

warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew

Pacsave Files

When removing or upgrading packages, pacman creates .pacsave files for configuration files that were previously backed up by the package database. A typical warning message looks like:

warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave

Locating .pac* Files

Pacman does not automatically handle these files—you must manage them manually. There are several methods to discover pending .pacnew or .pacsave files.

Using find Command

Search the /etc directory, which contains most system-wide configuration files:

$ find /etc -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null
/etc/locale.gen.pacnew
/etc/shadow.pacnew
/etc/pacman.conf.pacnew
/etc/security/limits.d/10-gcr.conf.pacnew
/etc/default/grub.pacnew
/etc/pacman.d/mirrorlist.pacnew
/etc/nftables.conf.pacnew

Using locate Database

For faster searching, update the database and use locate:

$ sudo updatedb
$ locate --existing --regex "\.pac(new|save)$"
/etc/locale.gen.pacnew
/etc/nftables.conf.pacnew
/etc/pacman.conf.pacnew
/etc/shadow.pacnew
/etc/default/grub.pacnew
/etc/pacman.d/mirrorlist.pacnew
/etc/security/limits.d/10-gcr.conf.pacnew

Using Pacman Logs

You can also search pacman's log file for historical records:

$ grep --extended-regexp "\.pac(new|save)" /var/log/pacman.log
...
[2020-06-25T04:58:54+0800] [ALPM] warning: /etc/pacman.d/mirrorlist installed as /etc/pacman.d/mirrorlist.pacnew

Managing Pacnew and Pacsave Files with pacdiff

The pacdiff tool from the pacman-contrib package provides a straightforward way to handle these files. It locates all .pacnew and .pacsave files and prompts you for action on each one. By default, it uses vimdiff, but you can specify alternative diff tools.

Listing Pending Files

To see all pending files without processing them:

$ pacdiff -l -o
/etc/locale.gen.pacnew
/etc/nftables.conf.pacnew
/etc/pacman.conf.pacnew
/etc/shadow.pacnew
/etc/default/grub.pacnew
/etc/pacman.d/mirrorlist.pacnew
/etc/security/limits.d/10-gcr.conf.pacnew

Using a Visual Merge Tool

To process files in /etc using meld:

$ sudo DIFFPROG=meld DIFFSEARCHPATH="/etc" pacdiff

When invoked, you'll see prompts for each file:

==> pacnew file found for /etc/shadow
:: (V)iew, (S)kip, (R)emove pacnew, (O)verwrite with pacnew, (Q)uit: [v/s/r/o/q]

Interactive Options

  • (v) - View the differences in your merge tool (e.g., meld), allowing you to manually synchronize changes between files. After saving your changes in the merge tool, return to the prompt.
  • (r) - Remove the .pac* file after you've successfully merged the changes manually.
  • (o) - Overwrite the existing configuration with the new .pac* file if you haven't made significant customizations.
  • (s) - Skip this file and address it later.

pacdiff Command Reference

Command Description
pacdiff v1.3.0 - A utility to merge or remove pacnew/pacsave files
Search Options (select one, default: --pacmandb)
-l/--locate Scan using locate database
-f/--find Scan using find command
-p/--pacmandb Scan active configuration files from pacman database
General Options
-o/--output Print files instead of merging them
--nocolor Remove colors from output
Environment Varibales
DIFFPROG Override the merge program (default: 'vim -d')
DIFFSEARCHPATH Override the search path, only used with find (default: /etc)

pacman-contrib Utilities Overview

The pacman-contrib package includes several helpful utilities for Arch Linux system management:

Command Function
checkupdates Check for package updates without installing (-Sy)
paccache Clean package cache ($ sudo paccache -rk1)
pacdiff Compare and manage pac* configuration files ($ pacdiff -l -o)
paclist List packages by repository
paclog-pkglist List all installed packages (equivalent to pacman -Q)
pacscripts View package installation scripts
pacsearch Search packages (similar to pacman -Ss)
pacsort Sorting utility implementing alpm_pkg_vercmp
pactree Display dependency tree
rankmirrors Rank pacman mirrors by connection and download speed

Usage Examples

$ paclog-pkglist |wc -l
779
$ sudo paccache -rk1
==> finished: 16 packages removed (disk space saved: 230.82 MiB)
$ pacscripts chromium
post_upgrade() {
  if (($(vercmp $2 42.0.2311.90-1) < 0)); then
...
  fi
}
# vim:set ts=2 sw=2 et:
$ checkupdates
ca-certificates-mozilla 3.53.1-1 -> 3.54-1
curl 7.70.0-1 -> 7.71.0-1
gtk-update-icon-cache 1:3.24.20-1 -> 1:3.24.21-1
gtk3 1:3.24.20-1 -> 1:3.24.21-1
imagemagick 7.0.10.21-1 -> 7.0.10.22-1
libfontenc 1.1.4-2 -> 1.1.4-3
libglvnd 1.3.1-1 -> 1.3.2-1
libwacom 1.3-1 -> 1.4-2
nspr 4.25-1 -> 4.26-1
nss 3.53.1-1 -> 3.54-1
perl-http-message 6.24-2 -> 6.25-1
unrar 1:5.9.3-2 -> 1:5.9.4-1
$ sudo pacman -Syu
:: Synchronizing package databases...
 core                                                     134.5 KiB   193 KiB/s 00:01 [#################################################] 100%
 extra                                                   1698.5 KiB   765 KiB/s 00:02 [#################################################] 100%
 community                                                  5.0 MiB  1190 KiB/s 00:04 [#################################################] 100%
:: Starting full system upgrade...

Related Articles

Understanding Strong and Weak References in Java

Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...

Comprehensive Guide to SSTI Explained with Payload Bypass Techniques

Introduction Server-Side Template Injection (SSTI) is a vulnerability in web applications where user input is improper handled within the template engine and executed on the server. This exploit can r...

Implement Image Upload Functionality for Django Integrated TinyMCE Editor

Django’s Admin panel is highly user-friendly, and pairing it with TinyMCE, an effective rich text editor, simplifies content management significantly. Combining the two is particular useful for bloggi...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.