• Arch-pacman-Tips-And-Tricks


    0. 参考原文
    1. 查询
     1.1 pacman -Q 选项(查询已安装的包,多个过滤器)
     1.2 pacman -F 选项(文件数据库查询)
     1.3 Pactree 树状显示依赖项
     1.4 pacreport列出未拥有的文件
     1.5 /etc/pacreport.conf
     1.6 pac*
     1.7 paclog查看日至
    2. 进阶查询语句(个别不支持fish,请在bash下运行)
     2.1 列出所有已安装的软件包及其各自的大小
     2.2 要列出明确安装的软件包(不在base元软件包或组 base-devel中),包含大小和说明: 
     2.3 要列出几个软件包的下载大小(packages留空以列出所有软件包): 
     2.4 列出标记为升级的软件包及其下载大小 
     2.5 使用expac列出最后安装的20个软件包,请运行: 
     2.6 明确安装的但不在base元软件包的软件: 
     2.7 列出不在base 元软件包或base-devel 软件包组中的显式安装的软件包: 
     2.8 列出所有其他软件包不需要的安装软件包,这些软件包不在基本 meta软件包或base-devel软件包组中: 
     2.9 列出所有不在指定存储库repo_name中的已安装软件包 
     2.a 列出repo_name存储库中的所有已安装软件包: 
     2.b 列出Arch Linux ISO上所有不在base元软件包中的软件包: 
     2.c 列出开发包(不稳定包)
     2.d 浏览包(互动:左边列表,右边描述)
     2.e 识别任何软件包都不拥有的文件
     2.f 获取几个软件包的依赖项列表
     2.g 列出更改的备份文件
    3. pacman进阶选项
     3.1 几个可以双写的选项[谨慎使用]
     3.2 安装原因[避免使用]
     3.3 指定文件安装[避免使用]
    4. 删除
     4.1 卸载已安装软件
     4.2 清理缓存的安装包文件
     4.3 删除未使用的软件包(孤立的)
     4.4 除去必要软件包以外的所有软件
     4.5 重新安装所有软件包
     4.6 列出软件包中所有更改的文件
    5. [避免使用]某些pacman命令
    6. 包装安全Pacman-key
    

    0. 参考原文

    pacman: https://wiki.archlinux.org/index.php/Pacman
    pacman 提示和技巧: https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks
    Arch Linux 系统维护: https://wiki.archlinux.org/index.php/System_maintenance
    pacman-key: https://wiki.archlinux.org/index.php/Pacman-key
    https://wiki.archlinux.org/index.php/Pacman/Package_signing

    1. 查询

    1.1 pacman -Q 选项(查询已安装的包,多个过滤器)

    $ pacman -Q [filter] 选项描述 中文翻译
    -d, --deps list packages installed as dependencies [filter] 列出安装为依赖项的软件包[过滤器]
    -e, --explicit list packages explicitly installed [filter] 列出明确安装的软件包[过滤器]
    -m, --foreign list installed packages not found in sync db(s) [filter] 列出已安装的非官方库软件包
    -n, --native list installed packages only found in sync db(s) [filter] 列出已安装的官方库软件包
    -t, --unrequired list packages not (optionally) required by any package
    (-tt to ignore optdepends) [filter]
    列出任何软件包都不要求(可选)的软件包
    (-tt忽略optdepends)[过滤器]
    -u, --upgrades list outdated packages [filter] 列出过期的软件包[过滤器]
    -o, --owns <file> query the package that owns <file> 查询拥有<file>的软件包


    $ pacman -Qm   列出已安装的非官方库软件包(通常是手动下载并安装或包裹从仓库取出)

    1.2 pacman -F 选项(文件数据库查询)

    搜索包含特定文件的软件包
    同步文件数据库:
    $ sudo pacman -Fy
    搜索包含文件的软件包,例如:
    $ sudo pacman -F iw
    core/iw 5.4-1 [installed]
        usr/bin/iw
    或者:
    $ sudo pacman -Qo iw
    /usr/bin/iw is owned by iw 5.4-1

    列出查询包所拥有的文件
    $ sudo pacman -Fl iw
    iw usr/
    iw usr/bin/
    iw usr/bin/iw
    iw usr/share/
    iw usr/share/man/
    iw usr/share/man/man8/
    iw usr/share/man/man8/iw.8.gz
    或者:
    $ sudo pacman -Ql iw
    iw /usr/
    iw /usr/bin/
    iw /usr/bin/iw
    iw /usr/share/
    iw /usr/share/man/
    iw /usr/share/man/man8/
    iw /usr/share/man/man8/iw.8.gz

    1.3 Pactree 树状显示依赖项

    要查看程序包的依赖关系树:
    $ pactree iw
    iw
    └─libnl
      └─glibc
        ├─linux-api-headers provides linux-api-headers>=4.10
        ├─tzdata
        └─filesystem
          └─iana-etc
    反向查看
    $ pactree -r iw
    iw
    这个结果表示没有任何其他软件依赖iw,若不需要,可以直接删除.也就是pacman -Qt选项能够查到的内容.

    $ pacman -F pactree
    community/pacman-contrib 1.3.0-2 [installed]
        usr/bin/pactree
    $ pacman -Qo pactree
    /usr/bin/pactree is owned by pacman-contrib 1.3.0-2

    找到pactree来自pacman-contrib, 再看看这个包里还有什么?
    $ pacman -Fl pacman-contrib
    $ pacman -Ql pacman-contrib |grep bin
    pacman-contrib /usr/bin/checkupdates
    pacman-contrib /usr/bin/paccache
    pacman-contrib /usr/bin/pacdiff
    pacman-contrib /usr/bin/paclist
    pacman-contrib /usr/bin/paclog-pkglist
    pacman-contrib /usr/bin/pacscripts
    pacman-contrib /usr/bin/pacsearch
    pacman-contrib /usr/bin/pacsort
    pacman-contrib /usr/bin/pactree
    pacman-contrib /usr/bin/rankmirrors
    pacman-contrib /usr/bin/updpkgsums

    1.4 pacreport列出未拥有的文件

    $ sudo pacreport --unowned-files
      /etc/.pwd.lock
      /etc/.updated
    ...
      /var/spool/cups/c00027
      /var/spool/cups/tmp/.cache/
    Unneeded Packages Installed Explicitly:
    ...
      xfdesktop                           2.43 M (xfce4)
      xfwm4-themes                        3.53 M (xfce4)
      xorg-server                         4.30 M (xorg)
      youtube-dl                         12.59 M
      zip                               558.12 K
    Unneeded Packages Installed As Dependencies:
    Installed Packages Not In A Repository:
    Missing Group Packages:
    Package Cache Size:

    $ sudo pacreport --unowned-files |wc -l
    373

    如下, pacreport属于pacutils
    $ pacman -Qo pacreport
    /usr/bin/pacreport is owned by pacutils 0.9.0-1
    $ pacman -F pacreport
    community/pacutils 0.9.0-1 [installed]
        usr/bin/pacreport

    列出这个包里的其他命令
    $ pacman -Fl pacutils |wc -l
    53
    $ pacman -Ql pacutils |grep bin
    pacutils usr/bin/paccapability
    pacutils usr/bin/paccheck
    pacutils usr/bin/pacconf
    pacutils usr/bin/pacfile
    pacutils usr/bin/pacinfo
    pacutils usr/bin/pacini
    pacutils usr/bin/pacinstall
    pacutils usr/bin/paclock
    pacutils usr/bin/paclog
    pacutils usr/bin/pacremove
    pacutils usr/bin/pacrepairdb
    pacutils usr/bin/pacrepairfile
    pacutils usr/bin/pacreport
    pacutils usr/bin/pacsift
    pacutils usr/bin/pacsync
    pacutils usr/bin/pactrans

    1.5 /etc/pacreport.conf

    跟踪软件包创建的未拥有文件
    大多数系统会在正常操作过程中缓慢收集一些ghost文件,例如状态文件,日志,索引等。
    http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-GHOST-DIRECTIVE
    从pacutils包的pacreport命令可用于通过跟踪这些文件及其关联/etc/pacreport.conf(参见pacreport(1) )。
    https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Tracking_unowned_files_created_by_packages
    https://jlk.fjfi.cvut.cz/arch/manpages/man/pacreport.1#FILES

    INI样式的配置文件列出了与--unowned-files一起运行时要忽略的路径。

    • 可以在“[Options]”部分中使用“ IgnoreUnowned”指定应始终忽略的路径。
    • 可以在“[PkgIgnoreUnowned]”部分列出仅在安装了特定软件包的情况下才应忽略的路径,使用软件包名称作为选项名称,并忽略路径作为值。
    • 可以多次指定所有选项。路径可能包括外壳样式的glob。安装根目录不应包含在路径中。

    /etc/pacreport.conf
     [Options]
     IgnoreUnowned = home/*
     IgnoreUnowned = proc/*
     IgnoreUnowned = mnt/*

     [PkgIgnoreUnowned]
     grub = boot/grub/*
     linux = boot/initramfs-linux-fallback.img
     linux = boot/initramfs-linux.img
     linux = boot/vmlinuz-linux
     pacman = var/lib/pacman/local
     pacman = var/lib/pacman/sync

    1.6 pac*

    Pkg /bin/pac… des cn
    pacman pacman Package manager utility 包管理器实用程序
    pacman-conf Query pacman's configuration file 查询pacman的配置文件
    pacman-db-upgrade Executable, Upgrade the local pacman database to a newer format 可执行,将本地pacman数据库升级为较新的格式
    pacman-key Manage pacman's list of trusted keys 管理pacman的受信任密钥列表
    pacman-contrib paccache Flexible pacman cache cleaning utility 灵活的pacman缓存清理实用程序
    pacdiff Pacorig, pacnew and pacsave maintenance utility Pacorig,pacnew和pacsave维护实用程序
    paclist Executable, List all packages installed from a given repository 可执行,列出从给定存储库安装的所有软件包
    paclog-pkglist Executable, Parse a log file into a list of currently installed packages 可执行,将日志文件解析为当前已安装软件包的列表
    pacscripts Executable, Prints the {pre,post}_{install,remove,upgrade} scripts of a given package. 可执行,打印给定软件包的{pre,post}_{install,remove,upgrade}脚本。
    pacsearch Executable, Perform a pacman search using both the local and the sync databases. 可执行,同时使用本地和同步数据库执行pacman搜索
    pacsort Sort utility implementing alpm_pkg_vercmp 排序工具,实现alpm_pkg_vercmp
    pactree Package dependency tree viewer 包依赖关系树查看器
    pacmatic pacmatic PACMATIC performs a bunch of mundane tasks that you must do before every invocation of Pacman... PACMATIC执行一堆平凡的任务,您必须在每次调用Pacman之前执行这些任务。
    pacutils paccapability Query libalpm capabilities 查询libalpm功能
    paccheck Check installed packages 检查已安装的软件包
    pacconf Query pacman's configuration file 查询pacman的配置文件
    pacfile Display information about package files 显示有关软件包文件的信息
    pacinfo Display package information 显示包装信息
    pacini Query pacman-style configuration files 查询pacman风格的配置文件
    pacinstall Install/remove alpm packages 安装/删除alpm软件包
    paclock Executable, lock/unlock the alpm database 可执行,锁定/解锁alpm数据库
    paclog Filter pacman log entries 过滤pacman日志条目
    pacremove Install/remove alpm packages 安装/删除alpm软件包
    pacrepairdb Fix corrupted database entries 修复损坏的数据库条目
    pacrepairfile Reset properties on alpm-managed files 重置Alpm托管文件的属性
    pacreport Display a summary of installed packages 显示已安装软件包的摘要
    pacsift Query and filter packages 查询和过滤包
    pacsync Update sync databases 更新同步数据库
    pactrans Install/remove alpm packages 安装/删除alpm软件包


    $ paclist core |wc -l
    172
    $ paclist extra |wc -l
    508
    $ paclist community |wc -l
    96

    1.7 paclog查看日至

    $ cat /var/log/pacman.log
    $ sudo journalctl -r |grep pacman |more
    $ paclog --help
    paclog - filter pacman log entries
    usage: paclog [options] [filters]

    options:    
    --config=<path> set an alternate configuration file 设置备用配置文件
    --root=<path> set an alternate installation root 设置备用安装根目录
    --sysroot=<path> set an alternate installation system root 设置备用安装系统根目录
    --debug enable extra debugging messages 启用额外的调试消息
    --logfile=<path> set an alternate log file 设置备用日志文件
    --[no-]color color output 颜色输出
    --pkglist list installed packages (EXPERIMENTAL) 列出已安装的软件包(EXPERIMENTAL)
    filters:    
    --action=<action> show <action> entries 显示<action>条目
    install, reinstall, upgrade, downgrade, remove, all.
    --after=<date> show entries after <date> 在<date>之后显示条目
    --before=<date> show entries before <date> 显示<date>之前的条目
    --caller=<name> show entries from program <name> 显示程序<名称>中的条目
    --commandline show command line entries 显示命令行条目
    --grep=<regex> show entries matching <regex> 显示与<regex>匹配的条目
    --package=<pkg> show entries affecting <pkg> 显示影响<pkg>的条目
    --warnings show notes/warnings/errors 显示笔记/警告/错误

    2. 进阶查询语句(个别不支持fish,请在bash下运行)

    2.1 列出所有已安装的软件包及其各自的大小

    $ LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h
    ...
    110.65MiB gimp
    117.18MiB linux-headers
    139.32MiB gcc
    149.57MiB gcc-libs
    162.18MiB virtualbox
    187.05MiB firefox
    187.96MiB chromium
    294.43MiB noto-fonts-cjk
    383.93MiB libreoffice-fresh
    516.18MiB linux-firmware

    2.2 要列出明确安装的软件包(不在base元软件包或组 base-devel中),包含大小和说明:

    $ expac -H M "%011m %-20n %10d" $(comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg base-devel; expac -l ' ' '%E' base; } | sort | uniq)) | sort -n
      56.01 MiB    gramps                  Genealogy program, which helps you track your family tree
      56.44 MiB    perl                    A highly capable, feature-rich programming language
      57.98 MiB    adobe-source-han-sans-cn-fonts    Adobe Source Han Sans Subset OTF - Simplified Chinese OpenType/CFF fonts
      58.65 MiB    vlc                     Multi-platform MPEG, VCD/DVD, and DivX player
      74.60 MiB    linux                   The Linux kernel and modules
      83.83 MiB    mesa                    An open-source implementation of the OpenGL specification
     110.65 MiB    gimp                    GNU Image Manipulation Program
     117.18 MiB    linux-headers           Headers and scripts for building modules for the Linux kernel
     149.57 MiB    gcc-libs                Runtime libraries shipped by GCC
     162.18 MiB    virtualbox              Powerful x86 virtualization for enterprise as well as home use
     187.05 MiB    firefox                 Standalone web browser from mozilla.org
     187.96 MiB    chromium                A web browser built for speed, simplicity, and security
     294.43 MiB    noto-fonts-cjk          Google Noto CJK fonts
     383.93 MiB    libreoffice-fresh       LibreOffice branch which contains new features and program enhancements
     516.18 MiB    linux-firmware          Firmware files for Linux

    $ expac -H M "%011m %-20n %10d" $(comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg base-devel; expac -l ' ' '%E' base; } | sort | uniq)) | sort -n |wc -l
    212
    $ pacman -Qe |wc -l
    234

    2.3 要列出几个软件包的下载大小(packages留空以列出所有软件包):

    $ expac -S -H M '%k %n' |wc -l
    10619
    $ expac -S -H M '%k %n' chromium
    57.81 MiB    chromium

    2.4 列出标记为升级的软件包及其下载大小

    $ expac -S -H M '%k %n' $(pacman -Qqu) | sort -sh |wc -l
    10619

    2.5 使用expac列出最后安装的20个软件包,请运行:

    $ expac --timefmt='%Y-%m-%d %T' '%l %n' | sort | tail -n 5
    2020-05-12 05:39:46    intel-ucode
    2020-05-12 05:39:46    libcddb
    2020-05-12 05:39:46    sysstat
    2020-05-12 05:39:46    xf86-video-intel
    2020-05-12 21:57:18    tree

    2.6 明确安装的但不在base元软件包的软件:

    $ comm -23 <(pacman -Qqe | sort) <(expac -l ' ' '%E' base | sort) |wc -l
    234
    $ pacman -Qqe |wc -l
    234

    2.7 列出不在base 元软件包或base-devel 软件包组中的显式安装的软件包:

    $ comm -23 <(pacman -Qqe | sort) <({ pacman -Qqg base-devel; expac -l ' ' '%E' base; } | sort -u) |wc -l
    212

    2.8 列出所有其他软件包不需要的安装软件包,这些软件包不在基本 meta软件包或base-devel软件包组中:

    $ comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; expac -l ' ' '%E' base; } | sort -u) |wc -l
    134
    pacman -Qt |wc -l
    139

    如上, 但显示描述
    $ expac -H M '%-20n %10d' $(comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; expac -l ' ' '%E' base; } | sort -u))
    ...
    xfdesktop               A desktop manager for Xfce
    xfwm4-themes            A set of additional themes for the Xfce window manager
    xorg-server             Xorg X server
    youtube-dl              A small command-line program to download videos from YouTube.com and a few more sites

    $ expac -H M '%-20n %10d' $(comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; expac -l ' ' '%E' base; } | sort -u)) |wc -l
    134

    2.9 列出所有不在指定存储库repo_name中的已安装软件包

    comm -23 <(pacman -Qq | sort) <(pacman -Sql repo_name | sort)
    $ comm -23 <(pacman -Qq | sort) <(pacman -Sql core | sort) |wc -l
    605
    $ comm -23 <(pacman -Qq | sort) <(pacman -Sql extra | sort) |wc -l
    268
    $ comm -23 <(pacman -Qq | sort) <(pacman -Sql community | sort) |wc -l
    681

    2.a 列出repo_name存储库中的所有已安装软件包:

    comm -12 <(pacman -Qq | sort) <(pacman -Sql repo_name | sort)
    $ comm -12 <(pacman -Qq | sort) <(pacman -Sql core | sort) |wc -l
    172
    $ comm -12 <(pacman -Qq | sort) <(pacman -Sql extra | sort) |wc -l
    509
    $ comm -12 <(pacman -Qq | sort) <(pacman -Sql community | sort) |wc -l
    96
     == or ==
    $ paclist core |wc -l
    172
    $ paclist extra |wc -l
    508
    $ paclist community |wc -l
    96

    2.b 列出Arch Linux ISO上所有不在base元软件包中的软件包:

    $ comm -23 <(curl https://git.archlinux.org/archiso.git/plain/configs/releng/packages.x86_64) <(expac -l ' ' '%E' base | sort)
    wget
    wireless-regdb
    wireless_tools
    wpa_supplicant
    wvdial
    xfsprogs
    xl2tpd

    $ comm -23 <(curl https://git.archlinux.org/archiso.git/plain/configs/releng/packages.x86_64) <(expac -l ' ' '%E' base | sort) |wc -l
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   712  100   712    0     0    838      0 --:--:-- --:--:-- --:--:--   837
    80

    2.c 列出开发包(不稳定包)

    $ pacman -Qq | grep -Ee '-(bzr|cvs|darcs|git|hg|svn)$'

    2.d 浏览包(互动:左边列表,右边描述)

    $ pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'
    需要安装fzf, 输入字母以过滤软件包列表;使用箭头键(或Ctrl-j/ Ctrl-k)进行导航;按Enter下看到包的信息较少。

    如果您发现一个特定的程序包package占用了大量空间,并且想找出哪些文件占了大部分,那么这一程序可能会派上用场。
    pacman -Qlq package | grep -v '/$' | xargs du -h | sort -h
    $ pacman -Qlq iw | grep -v '/$' | xargs du -h | sort -h
    4.0K    /usr/share/man/man8/iw.8.gz
    260K    /usr/bin/iw

    2.e 识别任何软件包都不拥有的文件

    列出所有感兴趣的文件,并对照pacman检查它们:
    提示:该lostfiles脚本执行类似的步骤,而且还包括一个广泛的黑名单从输出除去共同误报。
    # find /etc /usr /opt /var | LC_ALL=C pacman -Qqo - 2>&1 > /dev/null | cut -d ' ' -f 5-
    ...
    # find /etc /usr /opt /var | LC_ALL=C pacman -Qqo - 2>&1 > /dev/null | cut -d ' ' -f 5- |wc -l
    13256

    2.f 获取几个软件包的依赖项列表

    注意:要仅显示本地已安装软件包的树,请使用pacman -Qi。
    $ LC_ALL=C pacman -Si packages | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
    或者,使用expac:
    $ expac -l ' ' %E -S packages | sort -u

    $ C_ALL=C pacman -Si iw | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
    libnl

    $ C_ALL=C pacman -Qi iw | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
    libnl
    $ pactree iw
    iw
    └─libnl
      └─glibc
        ├─linux-api-headers provides linux-api-headers>=4.10
        ├─tzdata
        └─filesystem
          └─iana-etc

    2.g 列出更改的备份文件

    如果要备份系统配置文件,可以复制所有文件,/etc/但是通常您只对已更改的文件感兴趣。可以使用以下命令查看修改后的备份文件:
    以root用户权限运行此命令将确保/etc/sudoers输出中包括仅root用户可读的文件(例如)。
    $ sudo pacman -Qii | awk '/^MODIFIED/ {print $2}'
    /etc/cups/printers.conf
    /etc/fstab
    /etc/group
    /etc/gshadow
    /etc/hosts
    /etc/passwd
    /etc/resolv.conf
    /etc/shadow
    /etc/shells
    /etc/security/limits.d/10-gcr.conf
    /etc/locale.gen
    /etc/default/grub
    /etc/iptables/iptables.rules
    /etc/mkinitcpio.conf
    /etc/nftables.conf
    /etc/pacman.conf
    /etc/pacman.d/mirrorlist
    /etc/privoxy/config
    /etc/sudoers
    /etc/systemd/logind.conf
    /etc/UPower/UPower.conf
    ...

    3. pacman进阶选项

    3.1 几个可以双写的选项[谨慎使用]

    - 选项 选项描述 中文翻译
    -S -c, --clean remove old packages from cache directory (-cc for all) 从缓存目录中删除旧软件包(-cc删除全部)
    ----RS-U -d, --nodeps skip dependency version checks (-dd to skip all checks) 跳过依赖性版本检查(-dd跳过所有检查)
    ---Q-S-- -i, --info view package information (-ii for backup files) 查看软件包信息(-ii表示备份文件)
    -D-Q---- -k, --check test local database for validity (-kk for sync databases) 测试本地数据库的有效性(-kk用于同步数据库)
    -R -s, --recursive remove unnecessary dependencies
    (-ss includes explicitly installed dependencies)
    删除不必要的依赖项
    (-ss包括显式安装的依赖项)
    -Q -t, --unrequired list packages not (optionally) required by any package
    (-tt to ignore optdepends) [filter]
    列出任何软件包都不要求(可选)的软件包
    (-tt忽略optdepends)[过滤器]
    -S -u, --sysupgrade upgrade installed packages (-uu enables downgrades) 升级已安装的软件包(-uu启用降级)
    --F--S-- -y, --refresh download fresh package databases from the server
    (-yy to force a refresh even if up to date)
    从服务器下载新的软件包数据库
    (-yy,即使是最新也要强制刷新)

    3.2 安装原因[避免使用]

    - 选项 选项描述 中文翻译
    -D---S-U --asdeps mark packages as non-explicitly installed 将软件包标记为非明确安装
    -D---S-U --asexplicit mark packages as explicitly installed 将软件包标记为明确安装


    #pacman -D –asdeps
    #pacman -S –asdeps
    #pacman -U –asdeps

    可能会被作为孤儿程序卸载
    在重新安装软件包时,默认情况下会保留当前的安装原因。

    3.3 指定文件安装[避免使用]

    # pacman -Sw    下载软件包而不安装它:
    # pacman -U /path/…pkg.tar.xz     安装不是来自远程存储库的“本地”软件包(例如,该软件包来自AUR):
    # pacman -U file:///path/…pkg.tar.xz     要将本地软件包的副本保留在pacman的缓存中,请使用:
    # pacman -U http://…/…pkg.tar.xz     安装“远程”软件包(不是从pacman的配置文件中所述的存储库中获取):

     -S, 官方库下载安装;
     -U, 指定pkg.tar.xz软件包安装;
     -R, 卸载;
      均可使用( -p, --print)选项打印目标而不是执行操作

    4. 删除

    4.1 卸载已安装软件

    卸载软件包 s3
    #pacman -R 删除单个软件包,保留所有依赖项的安装
    #pacman -Rs 删除任何其他已安装软件包都不需要的软件包及其依赖项
    #pacman -Rsu 当删除包含其他需要的软件包的组时,(-Rs)有时可能会拒绝运行。请尝试(-Rsu)
    #pacman -Rsc 要删除软件包,其依赖项以及所有依赖于目标软件包的软件包:
    警告:此操作是递归的,因此必须小心使用,因为它会删除许多可能需要的软件包。
    #pacman -Rdd 要删除另一个软件包所需的软件包,而不删除从属软件包:
    警告:以下操作可能会破坏系统,应避免。请参阅系统维护#避免使用某些pacman命令。
    https://wiki.archlinux.org/index.php/System_maintenance#Avoid_certain_pacman_commands
    #pacman -Rn 删除某些应用程序时,Pacman保存重要的配置文件,并以扩展名.pacsave命名。
    为防止创建这些备份文件,请使用以下-n选项:

    4.2 清理缓存的安装包文件

    清理程序包缓存 Pacman将下载的软件包存储在其中/var/cache/pacman/pkg/,并且不会自动删除旧版本或已卸载的版本。方便重新安装
    #paccache -r 删除旧的软件包(包含已安装和已卸载), 保留最新的3个版本
    #paccache -rk1 删除旧的软件包(包含已安装和已卸载), 保留最新的1个版本
    #paccache -ruk0 删除所有已卸载软件包的缓存版本
    #pacman -Sc 要删除所有当前未安装的缓存软件包以及未使用的同步数据库
    #pacman -Scc 要从缓存中删除所有文件,请使用两次清洁开关,这是最激进的方法,不会在缓存文件夹中保留任何内容:
    警告:除非一个人迫切需要释放一些磁盘空间,否则应避免从高速缓存中删除所有以前版本的已安装软件包和所有未卸载软件包。这将防止降级或重新安装软件包,而无需再次下载它们。

    4.3 删除未使用的软件包(孤立的)

    $ sudo pacman -Qqdt | sudo pacman -Rs -
    error: argument '-' specified with empty stdin
      == or ==
    $ sudo pacman -Rns $(pacman -Qtdq)
    error: no targets specified (use -h for help)

    4.4 除去必要软件包以外的所有软件

    如果有必要删除除基本软件包以外的所有软件包,一种方法是将非必需软件包的安装原因设置为依赖关系,然后删除所有不必要的依赖关系。
    首先,对于“按显式”安装的所有软件包,将其安装原因更改为“作为依赖项”:
    # pacman -D --asdeps $(pacman -Qqe)
    然后,安装原因更改为“为明确”只有基本的包,那些你不希望删除,以避免针对他们:
    # pacman -D --asexplicit base linux linux-firmware
    可以将其他软件包添加到上述命令中,以避免被删除。有关功能完整的基本系统可能需要的其他软件包的更多信息,请参见安装指南#Install基本软件包。
    https://wiki.archlinux.org/index.php/Installation_guide#Install_essential_packages
    这还将选择要删除的引导加载程序的软件包。该系统仍应可引导,但是没有它,引导参数可能无法更改。
    最后,按照#删除未使用的程序包(孤立)中的说明,删除所有安装原因为“依赖”的程序包。

    4.5 重新安装所有软件包

    # pacman -Qqn | pacman -S -

    4.6 列出软件包中所有更改的文件

    如果您怀疑文件损坏(例如,由于软件/硬件故障),但是不确定文件是否损坏,则可能要与软件包中的哈希值进行比较。这可以通过pacutils完成:
    # paccheck --md5sum --quiet

    5. [避免使用]某些pacman命令

    https://wiki.archlinux.org/index.php/System_maintenance#Avoid_certain_pacman_commands
    - 避免进行部分升级。换句话说,永不运行pacman -Sy;相反,请始终使用pacman -Syu
    - 避免使用(--overwrite)选项。该选项接受包含glob的参数, 会绕过与glob匹配的文件的文件冲突检查。仅应在Arch开发人员明确建议的情况下使用。
    - 避免使用(-d, --nodeps)选项。pacman -Rdd 在软件包卸载过程中会跳过依赖性检查。结果,可能会删除提供严重依赖性的程序包,从而导致系统损坏。

    6. 包装安全Pacman-key

    Pacman支持软件包签名,这可以为软件包增加额外的安全性。默认配置SigLevel = Required DatabaseOptional启用全局级别的所有软件包的签名验证:每个存储库SigLevel行都可以覆盖此签名。有关包签名和签名验证的更多详细信息,请参阅pacman-key。
    https://wiki.archlinux.org/index.php/Pacman-key
    https://wiki.archlinux.org/index.php/Pacman/Package_signing

    刷新密钥
    $ pacman-key --refresh-keys

    重置所有密钥
    如果要删除或重置系统中安装的所有密钥,则可以以root用户身份删除文件夹/etc/pacman.d/gnupg并重新运行,pacman-key --init然后pacman-key --populate archlinux重新添加默认密钥。
    $ pacman-key --init
    $ pacman-key --populate archlinux

  • 相关阅读:
    T-sql 中 truncate 、delete与drop操作数据库的区别
    poj -3070 Fibonacci (矩阵快速幂)
    给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等。
    最长的循环节
    大组合数取模
    n个点中求任意两点组成斜率的最大值
    csu
    csu
    poj
    hdu
  • 原文地址:https://www.cnblogs.com/sztom/p/12892509.html
Copyright © 2020-2023  润新知