1. Pacnew_and_Pacsave 1.1 查找.pac *文件 1.1.1 要在/etc存储大多数全局配置的位置进行搜索: 1.1.2 也可以使用locate 1.1.3 使用pacman的日志查找它们: 1.2 管理.pac*文件 pacdiff 1.3 paddiff帮助 2. pacman-contrib
1. Pacnew_and_Pacsave
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
1.1 查找.pac *文件
Pacman不会自动处理.pacnew文件:您必须自己维护这些文件。要发现是否已安装任何.pac *文件,请使用以下方法之一:
1.1.1 要在/etc存储大多数全局配置的位置进行搜索:
$ 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
1.1.2 也可以使用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
1.1.3 使用pacman的日志查找它们:
$ 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
1.2 管理.pac*文件 pacdiff
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) 回车, 跳过, 以后在说...
1.3 paddiff帮助
$ pacdiff --help | A simple program to merge or remove pacnew/pacsave files. | 合并或删除pacnew/pacsave文件的简单程序。 |
pacdiff v1.3.0 | Usage: pacdiff [-l | -f | -p] [--nocolor] | |
Search Options: | select one (default: --pacmandb) | 选择一个(默认值:-pacmandb) |
-l/--locate | scan using locate | 使用定位扫描 |
-f/--find | scan using find | 使用查找扫描 |
-p/--pacmandb | scan active config files from pacman database | 扫描pacman数据库中的活动配置文件 |
General Options: | ||
-o/--output | print files instead of merging them | 打印文件而不是合并文件 |
--nocolor | remove colors from output | 从输出中删除颜色 |
Environment Variables: | ||
DIFFPROG | override the merge program: (default: ‘vim -d‘) | 覆盖合并程序:(默认值:‘vim -d‘) |
DIFFSEARCHPATH | override the search path. (only when using find) (default: /etc) | 覆盖搜索路径。 (仅在使用查找时) |
2. pacman-contrib
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]