https://wiki.archlinux.org/index.php/Pacman/Pacnew_and_Pacsave *.pacnew文件 在软件包升级期间pacman -Syu (也有覆盖安装时pacman -S upacman -U), 为避免覆盖已存在的用户先前修改过的文件, 会创建一个.pacnew文件。发生这种情况时,pacman的输出中将显示以下消息: warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew *.pacsave文件 当卸载一个软件包(pacman -R), 或者upgrade(必须先removed)一个软件包时, 会创建.pacsave文件. When the pacman database has a record that a certain file owned by the package should be backed up, it will create a .pacsave file. 生这种情况时,pacman的输出中将显示以下消息: warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave
Pacman不会自动处理.pacnew文件:您必须自己维护这些文件。要发现是否已安装任何.pac *文件,请使用以下方法之一:
$ 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
$ 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
$ 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
pacman-contrib提供了用于管理 .pac *文件的简单 pacdiff工具。它将搜索所有 .pacnew和 .pacsave文件,并要求对它们进行任何操作。默认情况下,它使用 vimdiff,但您可以使用指定其他工具。有关其他常见的比较工具,请参见应用程序/实用程序列表#比较,差异,合并。 DIFFPROG=your_editor pacdiff https://wiki.archlinux.org/index.php/List_of_applications/Utilities#Comparison,_diff,_merge 仅打印出待处理文件 $ 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使用meld作为合并程序处理/etc目录下的*.pac*文件 $ sudo DIFFPROG=meld DIFFSEARCHPATH="/etc" pacdiff ==> pacnew file found for /etc/shadow :: (V)iew, (S)kip, (R)emove pacnew, (O)verwrite with pacnew, (Q)uit: [v/s/r/o/q] v r :: (V)iew, (S)kip, (R)emove pacnew, (O)verwrite with pacnew, (Q)uit: [v/s/r/o/q] removed '/etc/shadow.pacnew' ==> pacnew file found for /etc/security/limits.d/10-gcr.conf ... 命令会逐个列出每一个待处理文件: 输入(v) 回车, 查看差异: 程序会自动打开meld对比软件, 这里可以手动逐条同步文件, 有时新的配置文件会由于软件的新功能添加新的属性项目, 这时候可以合并到在用的配置文件中, 然后保存, 退出meld软件后. 进入下一步. (通过(v)打开meld软件查看差异, 不管是否修改保存, 退出后还是等待处理同一对文件.)
如果已经手动合并保存了, 这个*.pac*文件就没用了, 可以使用(r) 回车, 删除该*.pac*文件. 然后开始处理下一对文件.如果在用的配置文件并没有什么自定义的修改, 可以使用(o) 回车, 使用*.pac*文件覆盖旧的配置文件. 然后开始处理下一对文件.或者使用(s) 回车, 跳过, 以后在说...
pacman-contrib包含的命令:
checkupdates检测更新(-Sy)paccache清理缓存($ sudo paccache -rk1)pacdiff对比管理pac*配置文件($ pacdiff -l -o)paclist按库repository列出包paclog-pkglist列出所有安装包(pacman -Q)pacscripts查看安装脚本pacsearch搜索包(pacman -Ss)pacsort实现alpm_pkg_vercmp的排序实用程序pactree依赖树rankmirrors通过连接和打开速度对pacman镜子进行排名。Pacman镜像文件位于/etc/pacman.d/中。如果提供了URL,它也可以排名一个镜像。updpkgsums$ paclog-pkglist |wc -l 779 $ sudo paccache -rk1 ==> finished: 16 packages removed (disk space saved: 230.82 MiB) $ sudo pacman -Sc Packages to keep: All locally installed packages Cache directory: /var/cache/pacman/pkg/ :: Do you want to remove all other packages from cache? [Y/n] y removing old packages from cache... Database directory: /var/lib/pacman/ :: Do you want to remove unused repositories? [Y/n] y removing unused sync repositories...
$ paclog-pkglist |wc -l 779 $ sudo paccache -rk1 ==> finished: 16 packages removed (disk space saved: 230.82 MiB) $ sudo pacman -Sc Packages to keep: All locally installed packages Cache directory: /var/cache/pacman/pkg/ :: Do you want to remove all other packages from cache? [Y/n] y removing old packages from cache... Database directory: /var/lib/pacman/ :: Do you want to remove unused repositories? [Y/n] y removing unused sync repositories... $ paclist community |wc -l 104 $ paclist core |wc -l 175 $ paclist extra |wc -l 499 $ pacscripts vlc ==> ERROR: Package vlc does not include any .INSTALL script $ 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... :: Replace intel-tbb with extra/tbb? [Y/n] y resolving dependencies... looking for conflicting packages... Package (16) Old Version New Version Net Change Download Size core/ca-certificates-mozilla 3.53.1-1 3.54-1 -0.02 MiB 0.32 MiB core/curl 7.70.0-1 7.71.0-1 0.02 MiB 1.01 MiB extra/gtk-update-icon-cache 1:3.24.20-1 1:3.24.21-1 0.00 MiB 0.01 MiB extra/gtk3 1:3.24.20-1 1:3.24.21-1 0.19 MiB 11.24 MiB extra/imagemagick 7.0.10.21-1 7.0.10.22-1 0.03 MiB 2.52 MiB intel-tbb 2020.2-1 -2.18 MiB extra/tbb 2020.2-1 2.18 MiB 0.38 MiB extra/libfontenc 1.1.4-2 1.1.4-3 0.00 MiB 0.02 MiB extra/libglvnd 1.3.1-1 1.3.2-1 0.01 MiB 0.36 MiB extra/libwacom 1.3-1 1.4-2 -0.01 MiB 0.09 MiB core/nspr 4.25-1 4.26-1 0.00 MiB 0.20 MiB core/nss 3.53.1-1 3.54-1 0.01 MiB 1.45 MiB extra/perl-http-message 6.24-2 6.25-1 0.00 MiB 0.07 MiB extra/unrar 1:5.9.3-2 1:5.9.4-1 0.00 MiB 0.14 MiB extra/xorg-fonts-encodings 1.0.5-2 0.61 MiB 0.55 MiB Total Download Size: 18.40 MiB Total Installed Size: 100.52 MiB Net Upgrade Size: 0.85 MiB :: Proceed with installation? [Y/n]