鏡像源

出自 Arch Linux 中文维基

本頁面說明如何選擇和配置鏡像,以及列出可用的鏡像。

官方鏡像[編輯 | 編輯原始碼]

可以通過軟件包 pacman-mirrorlist 獲取官方鏡像列表。若要想獲得更新的鏡像列表,請訪問 Pacman Mirrorlist Generator 頁面。

訪問鏡像狀態頁面來檢查鏡像的狀態。這裏推薦使用最新的鏡像,或者說是已同步的鏡像。

如果想要將自己的鏡像添加到官方列表中,參見 arch:DeveloperWiki:NewMirrors。同時,請將其添加至非官方鏡像頁面。

支持IPv6的鏡像[編輯 | 編輯原始碼]

Pacman Mirrorlist Generator 也可以用來獲取支持IPv6的鏡像列表。

啟用特定的鏡像[編輯 | 編輯原始碼]

想要啟用鏡像,打開 /etc/pacman.d/mirrorlist 並定位到你的地理區域。對您想使用的鏡像取消註釋。例如:

# Any
# Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch

參見按照速度排序查看幫助選擇鏡像的工具。

提示:
  • 取消5個你最喜歡的鏡像的註釋,把他們放在 mirrorlist 文件最上方。這樣你就很容易找到它們並且如果第一個鏡像出問題可以很容易切換。這也讓合併 mirrorlist 更新更容易。
  • HTTP 鏡像比 FTP 快,因為 HTTP 可以保持連接,而使用 FTP 時 pacman每下載一個新軟件包就需要重新建立連接,這樣也就導致了短暫的停頓。

也可以在 /etc/pacman.conf 中指定鏡像。對於 [core] 倉庫,默認設置是:

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

如果想要使用 HostEurope 鏡像作為默認鏡像,請把它添加在 Include 行之前:

[core]
Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/core/os/$arch
Include = /etc/pacman.d/mirrorlist

pacman 會首先嘗試連結這個鏡像。如果需要的話,可以繼續修改[testing], [extra], 和 [community]部分。

注意: 如果鏡像直接在 pacman.conf 中聲明,記得在所有的倉庫使用同樣的鏡像。否則不相容的包就可能被安裝。如 [core] 中的 linux 和 [extra] 中的舊的內核模塊不相容。

強制 pacman 刷新軟件包列表[編輯 | 編輯原始碼]

鏡像可能不同步,並且從舊鏡像中獲取的的軟件包列表也可能與新鏡像中的軟件包列表不一致,即使列表裏的日期可能表明它們是一致的。

創建和編輯 /etc/pacman.d/mirrorlist 之後,使用下面命令強制更新鏡像:

# pacman -Syyu

傳入兩次 --refresh-y 將強制更新所有軟件包列表,即使系統認為它們已經是最新。每次修改鏡像之後都應該使用 pacman -Syyu

警告: 在大多數情況下,如果你強制更新 pacman 數據庫,你將需要強制降級任何可能太新的軟件包以對應新的鏡像所提供的版本。這可以避免軟件包升級不一致導致的部分更新問題。
# pacman -Syyuu

當正在使用同步成功的鏡像或者檢查鏡像的 lastsync 文件來以確保軟件包列表已經更新後,則沒有必要使用這條命令。

鏡像排序[編輯 | 編輯原始碼]

當下載軟件包時,pacman 按照 /etc/pacman.d/mirrorlist 中的順序來使用鏡像。伺服器在列表中出現的順序決定了其優先級。

由於速度最快的伺服器可能是不同步的,所以僅基於速度來對鏡像進行排序很可能不是最佳方案。取而代之的是,先製作一個按照速度排序的鏡像列表,然後根據他們的狀態來刪除那些不同步的鏡像。

建議定期重複這一過程,來保持鏡像列表同步。

按速度排序[編輯 | 編輯原始碼]

排序已存在的鏡像列表[編輯 | 編輯原始碼]

軟件包 pacman-contrib 提供了一個 Bash 腳本,/usr/bin/rankmirrors 可以根據鏡像建立連接的速度對其進行排序,來使用最快的本地鏡像。

首先,備份已存在的 /etc/pacman.d/mirrorlist

# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

接下來準備 /etc/pacman.d/mirrorlist.backup 以使用 rankmirrors 進行排序,可執行以下操作:

  • 編輯 /etc/pacman.d/mirrorlist.backup ,將準備測速的鏡像取消註釋。
  • 如果文件中的伺服器已按照國家或地區分組,則可通過以下命令提取特定國家或地區的所有伺服器:
    $ awk '/^## Country Name$/{f=1; next}f==0{next}/^$/{exit}{print substr($0, 1);}' /etc/pacman.d/mirrorlist.backup
  • 若要取消所有的註釋,可執行以下 sed 命令:
    # sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.backup
  • 最後,對鏡像進行排序,這裏使用 -n 6 參數來實現只獲取 6 個最快的鏡像:
    # rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist

獲取實時鏡像列表並對其排序[編輯 | 編輯原始碼]

可以從 Pacman Mirrorlist Generator 獲取一些國家/地區的最新鏡像列表來使用 rankmirrors。 下面的命令會獲取位於中國且支持 https 協議的最新鏡像的列表,然後將位於列表的伺服器取消註釋,最後再對其排序後打印輸出 5 個最快的鏡像。

$ curl -s "https://archlinux.org/mirrorlist/?country=CN&protocol=https&use_mirror_status=on" | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 5 -
提示:可以通過使用任何基於文本的瀏覽器(比如 elinks(1))導航至 https://archlinux.org/mirrorlist 來以交互式方式完成這個過程。

現已存在的工具:

Rate Mirrors — 此工具通過獲取鏡像,跳過不同步或正在同步的鏡像,然後使用關於海底電纜和互聯網交換的信息在國家或地區之間切換,最終找到快速的鏡像。並且足夠快以實現在每次更新以前運行。它也支持通過標準輸入自定義鏡像列表。

https://github.com/westandskif/rate-mirrors || rate-mirrorsAUR, rate-mirrors-binAUR

服務端排序[編輯 | 編輯原始碼]

官方的 Pacman Mirrorlist Generator 提供了一個簡單的方式來獲取一個排序過的鏡像列表。因為所有排序是在考慮了多種因素的單一伺服器上完成的,與在每個單獨的客戶端上進行排序相比,鏡像伺服器和客戶端的負載量就要低很多。

Reflector — 從鏡像狀態頁面取回最新的鏡像列表,過濾後通過速度排序再覆蓋寫入 /etc/pacman.d/mirrorlist

https://xyne.dev/projects/reflector/ || reflector

問題解決[編輯 | 編輯原始碼]

鏡像列表缺失[編輯 | 編輯原始碼]

如果你遇到以下錯誤:

error: config file /etc/pacman.d/mirrorlist could not be read: No such file or directory

可以直接從網站上獲取鏡像列表:

# curl -o /etc/pacman.d/mirrorlist https://archlinux.org/mirrorlist/all/

如果碰到 $arch 變量未定義的問題,請在 /etc/pacman.conf 中加入:

Architecture = auto

請確認已如上文對首選的鏡像取消註釋,然後執行:

# pacman -Syu pacman-mirrorlist

異常的鏡像[編輯 | 編輯原始碼]

如果你確定一個鏡像運行不正常,並且其沒有反映在鏡像狀態頁面上,更換鏡像並考慮開啟一個 bug 報告。關於鏡像的問題,issue 應該發在 Arch Linux 項目上(位於登錄框下方的列表,或者通過在頁面上搜索 switch)

參見[編輯 | 編輯原始碼]