Powerpill

出自 Arch Linux 中文维基

本文內容或本節內容已經過期。

原因: 本頁是在 pacman 原生支持並行下載之前編寫的,並且應該提到,由於 pacman v6 版本,這不再是一次下載多個軟體包的唯一選項。 (在Talk:Powerpill討論)

Powerpill 是一個 pacman 包裝,它使用並行和分段下載來加速 Pacman 的下載。內部使用 Aria2Reflector 來實現這一點。Powerpill 還可以將 rsync 用於支持它的官方鏡像。對於從單鏡像下載時已經使用全部帶寬的用戶來說非常有效。配置文件也支持 Pacserve,並將在從外部鏡像下載之前使用。示例:有人想要更新然後運行了 pacman -Syu,它返回一個包含20個包的列表用於更新,總計200兆。如果用戶通過 pacman 下載,它們將一次下載一個。如果用戶通過 powerpill 下載,它們將同時下載,許多情況下所需時間會下降幾倍(取決於一個人的連接速度、伺服器上軟體包的可用性以及伺服器/負載的速度等。)

在一個系統上對 pacman 和 powerpill 進行的對比測試表明,在上述場景中,pacman 的下載速度平均為 300 kB/sec,powerpill 的下載速度平均為 1.2 MB/sec,速度提高了4倍。

安裝[編輯 | 編輯原始碼]

安裝 powerpillAUR 軟體包。

配置[編輯 | 編輯原始碼]

Powerpill 有一個單獨配置文件 /etc/powerpill/powerpill.json,你可以按喜好進行編輯。參考 powerpill.json(1) 手冊頁獲取詳細信息。

使用 Reflector[編輯 | 編輯原始碼]

默認情況下,Powerpill 配置為使用 Reflector 從 Arch Linux 伺服器的 web API 檢索當前鏡像列表,並將其用於並行下載。這是為了確保列表中有足夠的伺服器以顯著提高速度。

使用 rsync[編輯 | 編輯原始碼]

一些鏡像可以支持 Rsync。在啟用後,因為使用單連接,資料庫同步 (pacman -Sy) 和其它操作可能會快得多。rsync 協議本身也加速了更新檢查,有時還加速了文件傳輸。

要找到支持 rsync 的鏡像,使用 reflector:

$ reflector -p rsync

另外,你可以使用標誌 -f n 以獲得 n 個最快的伺服器,和使用標誌 -l m 以獲得 m 個最新同步的伺服器:

$ reflector -p rsync -f n -l m

選擇你想使用的鏡像。-c 選項可以按國家進行篩選(使用 reflector --list-countries 查看全部列表,在名稱周圍加引號並注意大小寫!)。完成後,編輯 /etc/powerpill/powerpill.json,向下滾動到 rsync 部分,並向 servers 欄位添加任意數量的伺服器。

之後,所有官方資料庫和軟體包將儘可能從 rsync 伺服器下載。

注意,需要檢查資料庫和包是否位於帶 reflector 的官方存儲庫中,因此安裝 reflector 是 rsync 功能運行所必需的。

基本使用[編輯 | 編輯原始碼]

對於大多數操作,powerpill 與 pacman 的工作方式差不多,因為它是 pacman 的包裝腳本。

系統更新[編輯 | 編輯原始碼]

想要使用 powerpill 更新你的系統(同步並更新所有安裝的包),和 pacman 一樣使用菜單項 -Syu:

# powerpill -Syu

安裝軟體包[編輯 | 編輯原始碼]

想要安裝軟體包和它的依賴,和 pacman 一樣使用菜單項 -S:

# powerpill -S package

安裝多個軟體包時也和使用 pacman 一樣:

# powerpill -S package1 package2 package3

疑難解答[編輯 | 編輯原始碼]

如果你得到 <repo>.db.sig 文件的 [err]:

   b5d7d7|ERR |       0B/s|/var/lib/pacman/sync/extra.db.sig
   899e91|ERR |       0B/s|/var/lib/pacman/sync/multilib.db.sig
   8fcc32|ERR |       0B/s|/var/lib/pacman/sync/core.db.sig
   85eb3d|ERR |       0B/s|/var/lib/pacman/sync/community.db.sig

這是因為該存儲庫缺少簽名文件,而且你還沒有在 /etc/pacman.conf 中顯式設置

SigLevel = PackageRequired

,更多說明請見這個帖子

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