须知
- 对于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