0%

pacman使用指南

pacmanArch Linux操作系统的软件包管理工具。藉由Arch Linux强大的软件仓库,pacman会让你觉得Arch Linux的软件管理非常简单方便。

常用命令

  • 搜索软件包: pacman -Ss <package>
  • 显示包信息: pacman -Si <package>
  • 安装软件包: pacman -Syy <package1> <package2> ...
    • 子命令yy强制同步软件包数据库,推荐!因为我吃过很久未同步的情况下安装软件出现问题的状况。
    • 全系统更新: pacman -Syyu,忽略指定的软件包可使用参数: --ignore <package>
  • 卸载软件包: pacman -Rns <package1> <package2> ...
    • 子命令n指同时删除该包的相关配置文件,推荐使用。
    • 子命令r指递归地卸载不再需要的依赖包,推荐使用。
  • 查询所有已安装的软件包: pacman -Q (pacman -Q | wc -l可显示软件包总数)
    • 添加子命令e可以列出所有手动指定安装的软件包。
    • 添加子命令i查询包的详细信息。
    • 添加子命令q将列出包名而不显示版本。
    • 添加子命令n将列出只在(同步)数据库中的已安装软件包。
    • 添加子命令m将列出没有在同步数据库时找到的已安装软件包(如用aur安装的包)。
    • 添加子命令d将列出列出所有作为依赖关系安装的软件包。
    • 添加子命令dt将列出作为依赖安装而现在又不再被依赖的包,一般可以安全删除。
    • 子命令l <package将列出被查询软件包的内容。
    • 子命令o <file>将查询哪个软件包拥有<文件>。
  • 删除软件包本地缓存: pacman -Sc (不推荐,除非硬盘空间紧张)

配置文件

pacman 的某些功能(如更新时忽略指定的包)可选依赖于 pacutils 包,建议安装。

我的配置文件中添加或修改的内容:

/etc/pacman.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
IgnorePkg = arduino postgresql  # 全系统更新时忽略的包,包名用空格隔开。
Color # 开启彩色显示,推荐
VerbosePkgLists # 显示包的详细信息
ILoveCandy # 一个彩蛋 :)

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[community]
Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

[archlinuxcn]
Server = https://mirrors.163.com/archlinux-cn/$arch

说明,core、extra、community这三个是默认开启的。如果需要开启32位软件的支持,请开启multilib。如果希望使用archlinuxcn软件源,请手动添加。

国内Arch Linux镜像源的选择

我写的检测镜像源速度的脚本

pacman-mirror-speed-test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
mirrors=(
"mirrors.163.com" # 网易
"mirrors.aliyun.com" # 阿里巴巴
"mirrors.cloud.tencent.com" # 腾讯
"mirrors.ustc.edu.cn" # 中国科学技术大学
"mirrors.neusoft.edu.cn" # 大连东软信息学院
"mirror.bit.edu.cn" # 北京理工大学
"mirrors.sjtug.sjtu.edu.cn" # 上海交通大学
"mirrors.tuna.tsinghua.edu.cn" # 清华大学
"mirrors.cqu.edu.cn" # 重庆大学
"mirrors.xjtu.edu.cn" # 西安交通大学
)
repo="archlinux"
arch="x86_64"
package="ncurses-6.1-6-x86_64.pkg.tar.xz" # 该软件包文件约1MB

echo "China pacman mirrors speed test"
for mirror in ${mirrors[*]}
do
url="https://${mirror}/${repo}/core/os/${arch}/${package}"
echo ${mirror}: `curl -s -w %{time_total} -o /dev/null ${url}`
done

我的电信网络测得的结果:

1
2
3
4
5
6
7
8
9
10
11
12
$ pacman-mirror-speed-test.sh
China pacman mirrors speed test
mirrors.163.com connect=0.320320 total=0.717937 speed=1523040.000
mirrors.aliyun.com connect=0.248234 total=0.418898 speed=2612488.000
mirrors.cloud.tencent.com connect=1.082842 total=3.858556 speed=283053.000
mirrors.ustc.edu.cn connect=0.082598 total=3.310694 speed=329915.000
mirrors.neusoft.edu.cn connect=0.125498 total=0.705484 speed=1548964.000
mirror.bit.edu.cn connect=0.082939 total=19.410558 speed=56260.000
mirrors.sjtug.sjtu.edu.cn connect=0.057127 total=0.295826 speed=3701762.000
mirrors.tuna.tsinghua.edu.cn connect=0.470037 total=1.706971 speed=640105.000
mirrors.cqu.edu.cn connect=0.104281 total=1.742886 speed=626877.000
mirrors.xjtu.edu.cn connect=0.000000 total=130.406562 speed=0.000

推荐mirrors.163.com!我目前使用的镜像源文件:

/etc/pacman.d/mirrorlist
1
2
3
4
5
6
7
8
9
10
11
# China
Server = https://mirrors.163.com/archlinux/$repo/os/$arch
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch
Server = https://mirrors.cloud.tencent.com/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch
Server = https://mirror.bit.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch