Jump to content
From ArchWiki

本條目或段落需要進行翻譯。

註記: No updates since 2020-05. (討論)
翻譯狀態：本文章是 Reflector 的翻譯版本。最近一次的翻譯時間：2020-05-27。點擊本連結查看英文頁面之後的變更。

相關文章

- Mirrors
- Pacman

Reflector 是一個腳本程式，它可以從 MirrorStatus 頁面獲得最新的鏡像列表，過濾最新的鏡像，按速度排序，並且覆蓋 `/etc/pacman.d/mirrorlist` 文件。

## 安裝

安裝 reflector 軟體包。

## 用法

警告：

- 在下面的例子中， `/etc/pacman.d/mirrorlist` 將被覆寫。執行之前請先進行備份。
- 同步或更新 Pacman 之前，確保生成的 `/etc/pacman.d/mirrorlist` 中沒有你認為不信任的條目。

執行下面的命令以查看所有可用的命令：

    # reflector --help

### 範例

以下載速度對最近同步的五個鏡像評分與排序，並覆蓋 `/etc/pacman.d/mirrorlist` 文件：

    # reflector --verbose --latest 5 --sort rate --save /etc/pacman.d/mirrorlist

選擇200個最近同步的 HTTP 或 HTTPS 鏡像，依下載速度排序，並覆蓋 `/etc/pacman.d/mirrorlist` 文件：

    # reflector --latest 200 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist

選擇12小時內同步並且位於法國或德國的 HTTPS 鏡像，依下載速度排序，並覆蓋 `/etc/pacman.d/mirrorlist` 文件：

    # reflector --country France --country Germany --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

## 自動化

### Pacman hook

你可以建立一個 pacman hook 執行 reflector ，並在每次 pacman-mirrorlist 升級時刪除建立的 .pacnew 文件。

    /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 = /bin/sh -c "reflector --country 'United States' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; rm -f /etc/pacman.d/mirrorlist.pacnew"

請確保用你要的參數代替 reflector 。

### Systemd service

下面是服務單元等待網路連線後再執行 reflector 的例子：

    /etc/systemd/system/reflector.service

    [Unit]
    Description=Pacman mirrorlist update
    Wants=network-online.target
    After=network-online.target

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist

    [Install]
    RequiredBy=multi-user.target

啟動 `reflector.service` 將更新鏡像列表。要在每次開機時更新鏡像列表，請 啟用 此服務。

註記: 關於更多網路依賴的實現，請參閱 Systemd#Running services after the network is up 。

### Systemd timer

假如你想每週執行 `reflector.service` ，請建立一個相關的 .timer 。舉例來說：

    /etc/systemd/system/reflector.timer

    [Unit]
    Description=Run reflector weekly

    [Timer]
    OnCalendar=Mon *-*-* 7:00:00
    RandomizedDelaySec=15h
    Persistent=true

    [Install]
    WantedBy=timers.target

然後直接 啟動 `reflector.timer` 。

Category:

- Package management (正體中文)

Hidden category:

- Pages or sections flagged with Template:Translateme (正體中文)