|
| 1 | +# Arch Linux |
| 2 | + |
| 3 | +## 简介 |
| 4 | + |
| 5 | +Arch 是一个滚动更新的发行版,以软件包更新快、数量大而著称。 |
| 6 | + |
| 7 | +还有很多发行版是基于 Arch 的,比如 Manjaro、EndeavourOS、Garuda Linux。 |
| 8 | + |
| 9 | +## Pacman 包管理器 |
| 10 | + |
| 11 | +Pacman 是 Arch 的官方包管理器。 |
| 12 | + |
| 13 | +下面的命令更新软件包列表。 |
| 14 | + |
| 15 | +```bash |
| 16 | +$ sudo pacman -Sy |
| 17 | +``` |
| 18 | + |
| 19 | +`-Ss`用来搜索软件包。 |
| 20 | + |
| 21 | +```bash |
| 22 | +$ sudo pacman -Ss vlc |
| 23 | +``` |
| 24 | + |
| 25 | +`-Si`用来获取软件包的详细信息。 |
| 26 | + |
| 27 | +```bash |
| 28 | +pacman -Si nginx |
| 29 | +``` |
| 30 | + |
| 31 | +`-S`用来安装软件包。 |
| 32 | + |
| 33 | +```bash |
| 34 | +$ sudo pacman -S vlc |
| 35 | +``` |
| 36 | + |
| 37 | +`-S`也可以用来更新软件包。 |
| 38 | + |
| 39 | +`-Syu`更新当前系统的所有软件包。 |
| 40 | + |
| 41 | +```bash |
| 42 | +$ sudo pacman -Syu |
| 43 | +``` |
| 44 | + |
| 45 | +`--ignore`指定系统更新时,忽略某个软件包。 |
| 46 | + |
| 47 | +```bash |
| 48 | +$ sudo pacman -Syu --ignore=vlc |
| 49 | +``` |
| 50 | + |
| 51 | +`-Sw`用来下载某个软件包,但不安装。 |
| 52 | + |
| 53 | +```bash |
| 54 | +$ pacman -Sw vlc |
| 55 | +``` |
| 56 | + |
| 57 | +`-Q`用来查看系统已经安装的所有软件包。 |
| 58 | + |
| 59 | +```bash |
| 60 | +$ pacman -Q |
| 61 | +``` |
| 62 | + |
| 63 | +`-Qs`用来搜索某个软件包是否已经安装。 |
| 64 | + |
| 65 | +```bash |
| 66 | +$ pacman -Qs vlc |
| 67 | +``` |
| 68 | + |
| 69 | +`-Ql`用来查看某个软件包安装的所有文件。 |
| 70 | + |
| 71 | +```bash |
| 72 | +$ pacman -Ql vlc |
| 73 | +``` |
| 74 | + |
| 75 | +`-Qo`用来查看某个可执行文件属于哪个软件包。 |
| 76 | + |
| 77 | +```bash |
| 78 | +$ pacman -Qo /usr/bin/vlc |
| 79 | +``` |
| 80 | + |
| 81 | +`-Rs`用来删除指定软件包及其依赖项。 |
| 82 | + |
| 83 | +```bash |
| 84 | +$ sudo pacman -Rs vlc |
| 85 | +``` |
| 86 | + |
| 87 | +`-Rns`用来删除软件包和配置文件。 |
| 88 | + |
| 89 | +```bash |
| 90 | +$ sudo pacman -Rns vlc |
| 91 | +``` |
| 92 | + |
| 93 | +下面的命令用来删除孤儿软件包。 |
| 94 | + |
| 95 | +```bash |
| 96 | +$ sudo pacman -Rns $(pacman -Qdtq) |
| 97 | +``` |
| 98 | + |
| 99 | +`-U`用来安装本地包。Pacman 将所有下载的包存储在目录`/var/cache/pacman/pkg`,下载以后,可以进入这个目录,安装本地包。 |
| 100 | + |
| 101 | +```bash |
| 102 | +$ cd /var/cache/pacman/pkg/ |
| 103 | +$ sudo pacman -U vlc-3.0.11-2-x86_64.pkg.tar.zst |
| 104 | +``` |
| 105 | + |
| 106 | +`-Sc`用来删除目录`/var/cache/pacman/pkg`里面的软件包缓存。 |
| 107 | + |
| 108 | +```bash |
| 109 | +$ sudo pacman -Sc |
| 110 | +``` |
| 111 | + |
| 112 | +`-Scc`用来删除缓存目录的所有文件。 |
| 113 | + |
| 114 | +```bash |
| 115 | +$ sudo pacman -Scc |
| 116 | +``` |
| 117 | + |
| 118 | +## 选择下载镜像 |
| 119 | + |
| 120 | +软件工具 Reflector 可以选择下载速度最快的软件仓库。 |
| 121 | + |
| 122 | +它是一个 Python 脚本,会根据下载速度和稳定性,选择对于用户来说最快的下载镜像,然后改写文件`/etc/pacman.d/mirrorlist`。 |
| 123 | + |
| 124 | +首先,安装这个软件包。 |
| 125 | + |
| 126 | +```bash |
| 127 | +$ sudo pacman -S reflector rsync |
| 128 | +``` |
| 129 | + |
| 130 | +然后,备份`/etc/pacman.d/mirrorlist`。不过,这一步不是必需的,因为可以用[在线工具](https://archlinux.org/mirrorlist/)重新创建这个文件。 |
| 131 | + |
| 132 | +```bash |
| 133 | +$ sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup |
| 134 | +``` |
| 135 | + |
| 136 | +接着,使用 Reflector 找出10个最近同步的下载镜像,按照下载速度排序,并将结果写入`/etc/pacman.d/mirrorlist`。 |
| 137 | + |
| 138 | +```bash |
| 139 | +$ sudo reflector --latest 10 --sort rate --save /etc/pacman.d/mirrorlist |
| 140 | +``` |
| 141 | + |
| 142 | +上面命令的几个参数含义如下。 |
| 143 | + |
| 144 | +- `--latest`:筛选范围为最近同步的 n 个服务器。 |
| 145 | +- `--sort`:按照 rate(下载速度)对镜像进行排序,其他可能的选项是 age、country、score 和 delay。 |
| 146 | +- `--save`:将结果保存到指定位置。 |
| 147 | + |
| 148 | +如果要从最近10个同步镜像中选择五个最快的镜像,需要用`--fastest`指定所需的服务器数量。 |
| 149 | + |
| 150 | +```bash |
| 151 | +$ sudo reflector --latest 10 --sort rate --fastest 5 --save /etc/pacman.d/mirrorlist |
| 152 | +``` |
| 153 | + |
| 154 | +`--list-countries`参数选项可以列出国家地区代码。 |
| 155 | + |
| 156 | +```bash |
| 157 | +$ reflector --list-countries |
| 158 | +``` |
| 159 | + |
| 160 | +`--country`参数选项可以筛选仅限于指定国家地区的下载镜像。 |
| 161 | + |
| 162 | +```bash |
| 163 | +$ sudo reflector --country "US" --latest 10 --sort rate --save /etc/pacman.d/mirrorlist |
| 164 | +``` |
| 165 | + |
| 166 | +上面命令指定下载镜像仅限于美国。 |
| 167 | + |
| 168 | +如果下载镜像在多个国家地区,可以用逗号分隔。 |
| 169 | + |
| 170 | +```bash |
| 171 | +$ sudo reflector --country "US,CA" --latest 10 --sort rate --save /etc/pacman.d/mirrorlist |
| 172 | +# 或者 |
| 173 | +$ sudo reflector --country "United States,Canada" --latest 10 --sort rate --save /etc/pacman.d/mirrorlist |
| 174 | +``` |
| 175 | + |
| 176 | +上面命令将下载镜像限于美国和加拿大。 |
| 177 | + |
| 178 | +`--protocol`参数选项可以指定下载协议:https、http、ftp。它也可以用逗号指定多个协议。 |
| 179 | + |
| 180 | +```bash |
| 181 | +$ sudo reflector --protocol https --latest 10 --sort rate --save /etc/pacman.d/mirrorlist |
| 182 | +``` |
| 183 | + |
| 184 | +如果需要 Reflector 定期运行,就需要编辑配置文件`/etc/xdg/reflector/reflector.conf`。编辑完成以后,打开 SystemD 定时器。 |
| 185 | + |
| 186 | +```bash |
| 187 | +$ sudo systemctl enable --now reflector.timer |
| 188 | +``` |
| 189 | + |
| 190 | +然后,可以检查一下,定时器是否添加成功。 |
| 191 | + |
| 192 | +```bash |
| 193 | +$ sudo systemctl list-timers |
| 194 | +``` |
| 195 | + |
| 196 | +另一种方法是将 Reflector 服务在系统启动时打开。 |
| 197 | + |
| 198 | +```bash |
| 199 | +$ sudo systemctl enable --now reflector.service |
| 200 | +``` |
| 201 | + |
| 202 | +## 参考链接 |
| 203 | + |
| 204 | +- [Finding the Most Up-to-Date and Fastest Arch Linux Mirrors](https://linuxiac.com/how-to-find-fastest-arch-linux-mirror/) |
0 commit comments