須知
- 對於arm和arm64架構的cpu,使用的國內源是http://ports.ubuntu.com/ubuntu-ports/
- xenial和bionic指的是ubuntu的發行版本號,目前來看,xenial版本的ubuntu安裝bionic搭建的本地apt源,沒有出現問題,個人推測影響不大。
- 架構不同,apt-mirror中的配置文件需不一樣。
- 下載線程數建議根據服務器性能來設置,否則容易出現系統卡死現象
步驟
使用apt-mirror制作apt源,因為會把包文件同步到本地,所以建議創建一個至少200G的磁盤,單獨掛載用於存儲數據。
服務端配置
1、安裝apt-mirror
apt-get install apt-mirror
2、修改apt-mirror配置文件
查看系統版本
pi@NanoPi-NEO-Plus2:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
pi@NanoPi-NEO-Plus2:~$
coedname為xenial,因此在配置文件中,源的版本要修改為xenial
vim /etc/apt/mirror.list
普通AMD64架構CPU參考以下配置文件:
# 以下注釋的內容都是默認配置,如果需要自定義,取消注釋修改即可
############# config ##################
set base_path /var/spool/apt-mirror
# set base_path /var/spool/apt-mirror
#
# 鏡像文件下載地址
# set mirror_path $base_path/mirror
# 臨時索引下載文件目錄,也就是存放軟件倉庫的dists目錄下的文件(默認即可)
# set skel_path $base_path/skel
# 配置日志(默認即可)
# set var_path $base_path/var
# clean腳本位置
# set cleanscript $var_path/clean.sh
# 指定CPU架構,默認的話會下載跟本機相同的架構的源
set defaultarch amd64
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
# 下載線程數
set nthreads 20
set _tilde 0
############# end config ##############
#可以使用Ali yun的apt源(這里沒有添加deb-src的源)
# url后面就是codename
deb https://mirrors.aliyun.com/ubuntu xenial main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu xenial-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu xenial-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu xenial-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu xenial-backports main restricted universe multiverse
# 中科大源(阿里源和中科大源,二選一)
# 修改codename為系統的版本
deb http://mirrors.ustc.edu.cn/ubuntu bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu bionic-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu bionic-backports main restricted universe multiverse
clean http://mirrors.ustc.edu.cn/ubuntu
普通arm64架構CPU參考以下配置文件:
# 以下注釋的內容都是默認配置,如果需要自定義,取消注釋修改即可
############# config ##################
set base_path /var/spool/apt-mirror
# set base_path /var/spool/apt-mirror
#
# 鏡像文件下載地址
# set mirror_path $base_path/mirror
# 臨時索引下載文件目錄,也就是存放軟件倉庫的dists目錄下的文件(默認即可)
# set skel_path $base_path/skel
# 配置日志(默認即可)
# set var_path $base_path/var
# clean腳本位置
# set cleanscript $var_path/clean.sh
# 架構配置,armhf/arm64,默認的話會下載跟本機相同的架構的源
set defaultarch arm64
# set postmirror_script $var_path/postmirror.sh
set run_postmirror 0 # 禁止跑run_postmirror腳本,目前已經沒有該腳本,如果跑的話會報錯
# 下載線程數
set nthreads 10
set _tilde 0
############# end config ##############
# 不管使用哪個源,arm64架構的cpu的apt源 路徑 和普通的AMD64的不一樣
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-proposed main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
clean https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
樹莓派的arm64和armhf架構的CPU參考以下配置文件:
需要多種cpu架構的apt包,就在配置文件中增加所需的apt源信息,以deb-cpu架構的方式添加。但需要注意,deb-arm64和deb-armhf,不能與deb共存。
# 以下注釋的內容都是默認配置,如果需要自定義,取消注釋修改即可
############# config ##################
set base_path /var/spool/apt-mirror
# set base_path /var/spool/apt-mirror
#
# 鏡像文件下載地址
# set mirror_path $base_path/mirror
# 臨時索引下載文件目錄,也就是存放軟件倉庫的dists目錄下的文件(默認即可)
# set skel_path $base_path/skel
# 配置日志(默認即可)
# set var_path $base_path/var
# clean腳本位置
# set cleanscript $var_path/clean.sh
# 架構配置,默認的話會下載跟本機相同的架構的源
# set defaultarch arm64
# set postmirror_script $var_path/postmirror.sh
set run_postmirror 0 # 禁止跑run_postmirror腳本,目前已經沒有該腳本,如果跑的話會報錯
# 下載線程數
set nthreads 10
set _tilde 0
#
############# end config ##############
#可以使用清華源的apt源(這里沒有添加deb-src的源)
deb-armhf http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic main restricted universe multiverse
deb-armhf http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security main restricted universe multiverse
deb-armhf http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse
deb-armhf http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-proposed main restricted universe multiverse
deb-armhf http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
deb-arm64 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic main restricted universe multiverse
deb-arm64 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security main restricted universe multiverse
deb-arm64 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse
deb-arm64 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-proposed main restricted universe multiverse
deb-arm64 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
# 不可以將deb和deb-arm64和deb-armhf類型放在一起,否則會導致中途報錯,URL中會多出一條“/”,從而NOT FIND報錯
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic main restricted universe multiverse
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security main restricted universe multiverse
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-proposed main restricted universe multiverse
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
clean https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
3、開始同步
sudo apt-mirror
然后等待很長時間(該鏡像差不多100G左右,具體時間看網絡環境),同步的鏡像文件目錄為/var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu/,當然如果增加了其他的源,在/var/spool/apt-mirror/mirror目錄下還有其他的地址為名的目錄。
注意:當apt-mirror 被意外中斷時,只需要重新運行即可,apt-mirror支持斷點續存;另外,意外關閉,需要在/var/spool/apt-mirror/var目錄下面刪除 apt-mirror.lock文件【 sudo rm apt-mirror.lock 】,之后執行apt-mirror重新啟動
在日常升級中,我們可以定期執行apt-mirror命令
sudo apt-mirror
或者寫進crontab中:
30 5 * * * sudo /usr/bin/apt-mirror >> /var/spool/apt-mirror/var/cron.log
每天五點30分執行,並在/var/spool/apt-mirror/var/文件夾中生成cron.log日志文件,以方便查看更新狀態。
4、同步完成
同步完成之后,會出現以下提示:
Run /var/spool/apt-mirror/var/clean.sh for this purpose.
根據提示,需要運行clean.sh的腳本
cd /var/spool/apt-mirror/var/
./clean.sh
5、安裝apache2
可以選擇使用apache服務進行托管,也可以使用nginx進行托管,根據個人喜好。如果使用nginx進行托管,客戶端配置apt源的配置文件需要按需進行更改。
sudo apt-get install apache2
由於Apache2的默認網頁文件目錄位於/var/www/html,因此,可以做個軟鏈接
ln -s /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu /var/www/html/ubuntu
然后就可以通過如下地址訪問了。
http://[host]:[port]/ubuntu #ip和port是自己本機的,其中端口默認為80。在測試時可能遇到打不開的情況,查看下本機和雲平台的防火牆規則是否打開相關端口或者selinux的問題。
6、服務器配置(可選)
安裝apache2,配置文件/etc/apache2/sites-enabled/000-default.conf,或者直接加一個新的配置文件,文件內容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
配置好后,重啟apache服務
客戶端配置
1、在/etc/apt/sources.list配置如下
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial main restricted
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-updates main restricted
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial universe
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-updates universe
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial multiverse
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-updates multiverse
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-security main restricted
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-security universe
deb http://192.168.1.100/ubuntu160406/arm64/ubuntu-ports/ xenial-security multiverse
3、更新apt-get源
apt-update
