本指南將展示如何配置基於Ubuntu Bionic的本地存儲庫服務器,但是它可以適用於Ubuntu的早期版本,甚至可以使用Aptitude作為主要軟件包管理係統(例如Debian或Mint)進行任何發行。您可能通常希望設置一個本地存儲庫以節省Internet帶寬。
在本教程中,您將學習:
- 如何在服務器上安裝所需的軟件
- 如何選擇要在服務器上鏡像的存儲庫
- 如何在服務器上本地鏡像選擇存儲庫
- 如何配置Linux客戶端以使用本地存儲庫服務器
如上所述,本教程並未考慮公共或國家/地區鏡像,但如果要實施,請考慮:
- 您的網絡帶寬變得非常重要
- 您需要將存儲庫注冊到Ubuntu的鏡像列表中
- 您必須每天至少同步鏡子四次
- 因為您必須鏡像所有以前的版本,所以可能需要2 TB或更多的磁盤空間
使用的軟件要求和約定
類別 | 使用的要求,約定或軟件版本 |
---|---|
係統 | Ubuntu 18.04.2(Bionic Beaver)LTS |
軟件 | Apache http 2.x,apt-mirror |
其他 | 以root身份或通過Linux特權訪問Linux係統sudo 命令,存儲庫的最小200 GB磁盤空間 |
約定 | #-要求linux命令可以直接以root用戶身份或通過使用root特權以root特權執行sudo 命令$-要求linux命令以常規non-privileged用戶身份執行 |
如何逐步創建Ubuntu存儲庫服務器
- 在服務器上安裝所需的軟件。
第一步,我們需要安裝Apache HTTP Server,該服務器位於名為的軟件包下
apache2
,使用以下命令:$ sudo apt install apache2
然後確保服務在啟動時運行:
$ sudo systemctl enable apache2
如果一切正常,我們將移至默認的DocumentRoot目錄(/var /www /html)。
在這裏我們可以創建sub-directory/var/www/html/ubuntu
並將其分配給適當的所有者www-data
(運行Apache HTTP的用戶)。$ sudo mkdir -p /var/www/html/ubuntu $ sudo chown www-data:www-data /var/www/html/ubuntu
強烈建議DocumentRoot或至少ubuntu子文件夾位於屬於邏輯卷的文件係統上;這樣,我們可以在線擴展它,而無需停機。在我進行測試時,如果還要鏡像src軟件包,則需要的絕對最小空間為171.5 GiB。因此,為將來做計劃,建議至少有300 GiB的磁盤空間。
如果選擇一個版本的Ubuntu,這主要是一個估計。如果需要鏡像不同版本的軟件包,則空間需求將大大增加。
- 允許我們創建本地存儲庫的主要工具是
apt-mirror
,要安裝它,執行:$ sudo apt install apt-mirror
如果找不到軟件包,請確保首先使用以下命令刷新軟件包列表:
$ sudo apt update
- 選擇要在服務器上鏡像的存儲庫。
安裝apt-mirror後,我們可以為其配置文件製作備份副本
/etc/apt/mirror.list
,然後確保包含選項的行set base_path
指向我們存儲庫的正確路徑(默認為/var /spool /apt-mirror)。$ sudo cp /etc/atp/mirror.list /etc/apt/mirror.list.org
因此,您現在可以使用喜歡的編輯器(例如,vi或nano)將mirror.list文件中的base_path選項更改為
/var/www/html/ubuntu
;您還需要指定要鏡像仿生發行版(如果您使用其他Ubuntu版本,則進行相應更改)存儲庫,始終在mirror.list配置文件中。如果磁盤上沒有足夠的空間,則可以選擇不鏡像src軟件包。因此,您將注釋相關行:
接下來,將重要腳本複製到
/var/www/html/ubuntu/var/
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
- 在服務器上本地鏡像選定的存儲庫。
現在是創建本地鏡像的時候了,請記住,初始鏡像(來自
archive.ubuntu.com
僅適用於本教程)可能會花費大量時間並減慢您的連接速度,因此建議您晚上開始這項工作。要開始將遠程存儲庫軟件包鏡像到本地服務器,隻需執行以下命令:$ sudo apt-mirror
如果需要,可以中斷此過程(使用經典的CTRL + C組合鍵),然後稍後重新啟動;它會從剩下的地方恢複。
最終,我們將執行clean.sh和postmirror.sh腳本,這表明鏡像過程已完成。
- 使用cron調度程序配置自動同步過程。
第一次同步完成後,我們需要創建一個cron作業,以確保我們擁有一個自動更新的本地存儲庫;例如,我們希望此任務每天晚上2:00 AM運行,因此:
$ sudo crontab -e
然後,我們編輯crontab以添加以下行:
00 02 * * * /usr/bin/apt-mirror
並保存並退出(使用vi,nano或設置的任何編輯器)。
配置Linux客戶端以使用本地存儲庫服務器
- 配置本地存儲庫列表。
在將要使用我們本地存儲庫的任何客戶端中,我們都需要編輯配置文件
/etc/apt/sources.list
指定我們的本地存儲庫並禁用任何遠程存儲庫。在我們的情況下,已下載以下存儲庫:
注意
建議在
/etc/apt/sources.list
文件引用未在我們服務器中鏡像的存儲庫,例如,在這種情況下,任何以deb-src
並且包含bionic-backports
已被評論。如果不這樣做,可能會得到錯誤
Release file has not been found
在客戶端上運行命令apt update時。首先,我們用本地鏡像IP(在本例中為10.0.0.42)替換任何字符串archive.ubuntu.com。當然,您的本地IP地址可能會有所不同。
$ sudo sed -i.bak0 "s/archive\.ubuntu\.com/10\.0\.0\./g" /etc/apt/sources.list
此命令將創建備份文件
/etc/apt/sources.list.bak0
並替換任何archive.ubuntu.com
與10.0.0.42
。再次以這種方式運行sed:$ sudo sed -i.bak1 "s/ubuntu/ubuntu\/mirror\/archive\.ubuntu\.com\/ubuntu/g" \ /etc/apt/sources.list
這是必要的,因為apt-mirror會附加路徑
mirror/archive.ubuntu.com/ubuntu
到我們的基本路徑。在這裏將創建另一個備份文件/etc/apt/sources.list.bak1.
在本教程中,我們僅鏡像來自archive.ubuntu.com的軟件包或存儲庫;當然,您可以在服務器的mirror.list文件中添加其他非官方存儲庫,但隨後您必須在re-run apt-mirror那裏,並在任何客戶端上相應地編輯source.list文件。
- 更新本地存儲庫索引。
現在,您需要確保端口80未被客戶端防火牆阻止,然後可以運行:$ sudo apt update
您就可以出發了。
結論
在Ubuntu中設置本地存儲庫並不困難,因為看起來似乎很容易,隻要您有足夠的本地網絡和磁盤資源,它就可以派上用場。