在Arch Linux中使用Reflector检索最新的镜像列表
建议在Arch Linux中保持最新的镜像列表。
最近要做的是,如果我们添加了更新的镜像列表,则可以轻松避免下载速度慢以及在安装和更新软件包时出现错误消息。
正如我们在Arch Linux的/etc/pacman.d/mirrorlist文件中看到的那样,我们可能已经注意到每个国家只有一台镜像服务器。
但是,每个国家/地区应该不止一台服务器,但是镜像列表文件将仅显示一台。
因此,如何在Arch Linux中添加或者检索我们选择的最新和更新的镜像列表?
不用担心。
这是Reflector可以提供帮助的地方。
本教程说明了如何使用Reflector在Arch linux中检索最新的镜像列表。
Reflector是一个简单但有用的便捷实用程序,它可以从“镜像状态”页面检查并检索按速度排序的最新镜像列表,并将其保存在Arch Linux系统中的/etc/pacman.d/mirrorlist文件中。
该工具可能适用于Arch Linux衍生产品,例如Antergos和Manjaro Linux。
安装反射器
要在Arch Linux中安装Reflector,请在终端上运行以下命令:
$sudo pacman -S reflector rsync curl
上面的命令将安装Reflector及其依赖项rsync和curl软件包。
在Arch Linux中使用Reflector检索最新的镜像列表
在运行Reflector之前,我们必须备份默认的镜像列表文件。
因为,Reflector会覆盖它。
要备份当前镜像列表,请运行:
$sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
现在,让我们开始根据下载速率检索荷兰的前五个镜像,并将它们保存到mirrorlist文件中。
$sudo reflector --verbose --country 'Netherlands' -l 5 --sort rate --save /etc/pacman.d/mirrorlist
以下是上述命令中这些标志的作用的简要概述。
- --verbose:打印比正常更多的信息
- --country荷兰:我偏爱的镜子位置
- --l 5:检索荷兰的前五面镜子
- --sort rate-按下载率排序
- --save-覆盖我以前的镜像列表文件
如果只想使用http而不是ftp镜像,请在上述命令中使用'-p http'标志。
输出示例:
rating http://ftp.iitm.ac.in/archlinux/ rating http://mirror.cse.iitk.ac.in/archlinux/ Server Rate Time http://mirror.cse.iitk.ac.in/archlinux/84.09 KiB/s 1.46 s http://ftp.iitm.ac.in/archlinux/37.23 KiB/s 3.29 s
上面的命令将过滤前五个镜像,按下载速率对其进行排序,并覆盖文件/etc/pacman.d/mirrorlist。
不幸的是,荷兰只有两面镜子。
让我们使用以下命令验证更新的镜像列表:
$cat /etc/pacman.d/mirrorlist
输出示例:
# When: 2015-03-19 11:27:55 UTC # From: https://www.archlinux.org/mirrors/status/json/ # Retrieved: 2015-03-19 11:27:51 UTC # Last Check: 2015-03-19 11:25:34 UTC Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch Server = http://ftp.iitm.ac.in/archlinux/$repo/os/$arch
现在,我们可以从最新的镜像安装,更新和升级软件包。
$sudo pacman -Syu
$sudo pacman -S <package_name>
另外,要过滤按下载速率排序的50个最新同步的HTTP服务器,请运行以下命令:
$sudo reflector --verbose -l 50 -p http --sort rate --save /etc/pacman.d/mirrorlist
要获取所有国家/地区排序的列表,请运行以下命令:
$sudo curl -o /etc/pacman.d/mirrorlist https://www.archlinux.org/mirrorlist/all/
检索按国家/地区分类的镜像后,请编辑/etc/pacman.d/mirrorlist文件,
$sudo nano /etc/pacman.d/mirrorlist
取消注释我们选择的任何镜像URL以启用它。
例如,我要启用荷兰的镜子。
因此,我删除了每个URL前面的(#)符号。
[...] Netherlands Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch Server = http://ftp.iitm.ac.in/archlinux/$repo/os/$arch [...]
保存并关闭文件。
使用以下命令更新存储库列表:
$sudo pacman -Syu
现在,我们已经使用Reflector工具获取了Arch Linux系统的最新镜像列表。
开始使用更新的镜像。
引导时自动更新镜像列表
在/etc/systemd/system /目录中创建一个名为reflect.service文件的新文件:
$sudo nano /etc/systemd/system/reflector.service
添加以下行:
[Unit] Description=Pacman mirrorlist update Requires=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/reflector --protocol http --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist [Install] RequiredBy=multi-user.target
最后,在启动时启用Reflector服务,并使用以下命令启动它:
$sudo systemctl enable reflector
$sudo systemctl start reflector
我们还可以创建一个pacman挂钩,该挂钩将运行反射器,并在每次pacman-mirrorlist升级时删除创建的“ .pacnew”文件。
为此,请创建名为mirrorupgrade.hook的文件:
$sudo mkdir /etc/pacman.d/hooks/
$sudo nano /etc/pacman.d/hooks/mirrorupgrade.hook
添加以下行:
[Trigger] Operation = Upgrade Type = Package Target = pacman-mirrorlist [Action] Description = Updating pacman-mirrorlist with reflector and removing pacnew... When = PostTransaction Depends = reflector Exec = /usr/bin/env sh -c "reflector --country 'Netherlands' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; if [[ -f /etc/pacman.d/mirrorlist.pacnew ]]; then rm /etc/pacman.d/mirrorlist.pacnew; fi"
用我们自己的值替换国家和其他参数。