# 如何改用本地的<ruby>軟體庫鏡像服務<rp>(</rp><rt>software repository mirror</rt><rp>)</rp></ruby>
說明如何變更軟體包管理系統的設定使其使用本地的軟體庫鏡像服務,減少下載軟體包所需的時間
<https://hackmd.io/@elrm-tw/how-to-switch-to-use-local-software-repository-mirror>
[TOC]
## CentOS GNU+Linux 作業系統<ruby>散布版<rp>(</rp><rt>distribution</rt><rp>)</rp></ruby>
CentOS 預設有啟用 `fastestmirror` {插入式元件|plug-in},其會獲取軟體庫鏡像服務清單並自動使用(可能是)最快的軟體庫鏡像服務來下載軟體故無特別需求下不需要變更軟體庫設定:
```bash
$ yum makecache
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: mirror01.idc.hinet.net
* extras: mirror01.idc.hinet.net
* updates: mirror01.idc.hinet.net
...省略...
```
## Ubuntu GNU+Linux 作業系統散布版
Ubuntu 預設使用 `archive.ubuntu.com` 軟體庫,其服務器位於英國與美國,我們可以透過下列流程將其替換為本地的軟體庫鏡像服務:
1. 於 [Mirrors : Ubuntu](https://launchpad.net/ubuntu/+archivemirrors) 頁面確認要改用的軟體庫鏡像服務的域名(如 `free.nchc.org.tw`)
1. [啟動一文字界面終端機模擬器應用軟體](https://hackmd.io/@elrm-tw/how-to-launch-a-text-terminal-emulator-application)
1. *以 root 身份* 於文字界面終端機模擬器執行下列命令進行軟體庫地址的批量替換:
```bash
sed_opts=(
# 直接修改指定的檔案,同時創建帶有修改當時時間戳記副檔名的備份檔
--in-place=".old.$(date +%Y%m%d-%H%M%S)"
# 套用 sed 表達式:將 `//archive\.u` 吻合的字串替換為 `//tw.archive.u`(台灣地區主軟體庫鏡像服務域名)
# 因為搜尋式樣(search pattern)中包含斜線字元故將 `s` sed 命令分隔符替換為 @ 字元
--expression='s@//archive\.u@tw.archive.u@'
# 附註:如果要替換為其他軟體庫鏡像服務則改用此 sed 表達式:
#--expression='s@//archive\.ubuntu\.com@//軟體庫鏡像服務域名@'
)
sed "${sed_opts[@]}" /etc/apt/sources.list
```
1. 因為軟體庫地址變更,重新[更新軟體包管理系統的本地快取資料](/JLKckpKeQ82QPFUj2Rxfjw)
## <ruby>參考資料<rp>(</rp><rt>References</rt><rp>)</rp></ruby>
以下說明撰寫本文件期間所參考的第三方資源:
* [Mirrors : Ubuntu](https://launchpad.net/ubuntu/+archivemirrors)
列舉 Ubuntu 目前所有的軟體庫鏡像服務
---
本文件為[《大家的 Linux 團圓飯》專案](https://hackmd.io/@elrm-tw/home)的衍生作品,以[《Creative Commons 姓名標示-相同方式分享》授權條款第 4.0 國際版](https://creativecommons.org/licenses/by-sa/4.0/deed.zh_TW)或其任意更近期版本釋出供大眾於授權範圍內自由使用
<style>
/* 調大旁註文字的字元大小 */
rt{
font-size: 10pt;
}
</style>