ubuntu搭建关于amd64或arm64,armhf架构的本地apt源

须知

  • 对于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-arm64deb-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
原文地址:https://www.cnblogs.com/cnhyk/p/13360167.html