服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Ubuntu - 使用apt-mirror搭建Ubuntu软件源的实例教程

使用apt-mirror搭建Ubuntu软件源的实例教程

2019-06-11 10:51脚本之家服务器之家 Ubuntu

这篇文章主要介绍了使用apt-mirror搭建Ubuntu软件源的实例教程,包括使用Nginx配置HTTP访问的软件源发布方法,非常全面,需要的朋友可以参考下

搭建自有Ubuntu源的原因有很多

节省外网带宽
提前下载,缓解国外源下载缓慢
私有定制软件包发布

本文测试环境

ubuntu 14.04(LTS) 64位
apt-mirror 版本 0.5.1-1
nginx 版本 1.4.6-1ubuntu3.1


安装apt-mirror
 

复制代码
代码如下:

# sudo apt-get update
# sudo apt-get install apt-mirror=0.5.1-1

 

配置apt-mirror

apt-mirror的配置文件位置为 /etc/apt/mirror.list
根据注释修改相应内容,一般只需要修改 base_path和更改、添加软件源。以下配置文件我只添加了Ubuntu 14.04和MongoDB的软件源,你可以根据你的需要添加Ubuntu其他版本软件源。
 

复制代码
代码如下:

############# config ##################
#
# 配置数据基目录
set base_path /data/apt-mirror
# 配置镜像存储位置
# set mirror_path $base_path/mirror
# 配置临时下载索引位置
# set skel_path $base_path/skel
# 配置日子,URLs和MD5校验信息存储位置
# set var_path $base_path/var
# 配置删除过期源脚本位置(默认不删除,方便安装旧版本软件)
# set cleanscript $var_path/clean.sh
# 设置默认架构, 可填: amd64 或 i386,默认是和本机一个架构
# set defaultarch <running host architecture>

# 设定下载后运行的脚本位置
# set postmirror_script $var_path/postmirror.sh
# 设置是否执行 下载后的脚本操作,默认是1(但是默认没有postmirror.sh脚本)
set run_postmirror 0
# 设置下载线程数
set nthreads 20
# 是否替换URL中的波浪线,替换成%7E(HTML代码),否则会跳过不进行下载
set _tilde 0
#
############# end config ##############
# 配置Ubuntu trusty 源
deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
# clean http://archive.ubuntu.com/ubuntu
# 配置MongoDB源
# 官方地址 http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
#
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
# clean http://localhost/downloads-distro.mongodb.org

因为我自定义了apt-mirror的数据目录,所以需要赋予 apt-mirror用户权限,否则同步不会正确运行:

复制代码
代码如下:

# sudo chown -R apt-mirror:apt-mirror /data/apt-mirror

 


运行第一次同步

确保你的基目录下磁盘空间足够,如上所配置,则至少保证150G的磁盘空间,建议200G以上,以后版本更新,添加软件源等会需要很多磁盘空间。
因为要下载135G的内容,时间比较漫长,建议切换到apt-mirror用户用以下命令放在后台运行
 

复制代码
代码如下:

# sudo su apt-mirror
# nohup /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log &

 


安装Nginx,配置HTTP访问

通过以上配置,已经可以在 /data/apt-mirror 目录下看到生成的几个数据文件。/data/apt-mirror/mirror下存放的就是软件镜像。但是如何向其他计算机发布这些数据呢?很明显通过HTTP服务可以做到这一点。我们通过使用Nginx将mirror目录下的内容通过HTTP协议发布。

安装Nginx
 

复制代码
代码如下:

# sudo apt-get install nginx=1.4.6-1ubuntu3.1

nginx配置文件位置: /etc/nginx/sites-enabled/default,将其替换为以下文件:

复制代码
代码如下:

server {
listen 80;
# 这里填写你的域名,填写localhost就直接通过IP地址访问
server_name localhost;
# 显示目录
autoindex on;
location / {
index index.html index.htm;
# 这里填写镜像保存位置
root /data/apt-mirror/mirror;
}
access_log /var/log/nginx/localhost.log;
}

 

更改完配置,先测试配置,如果测试通过,则重启nginx
 

复制代码
代码如下:

# sudo nginx -t
# sudo service nginx restart

此时访问 http://服务器IP 即可访问到你发布的镜像

 

配置定时同步

我们当然不能,每天自己手动同步镜像啦。我们需要配置apt-mirror每天定时同步,其实就是配置cron。
这里apt-mirror提供了cron模板文件,在/etc/cron.d/apt-mirror 中,取消最后一行的#注释即可生效:

0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
以上设置每日4点同步一次

客户端配置

现在我们已经配置好了服务端,找个Ubuntu 14.04 64位的来测试一下

备份source.list
 

复制代码
代码如下:

# sudo mv /etc/apt/source.list /etc/apt/source.list.bak

新建/etc/apt/source.list, 写入以下内容(上述服务器DNS或IP 替换”自建源IP”)

复制代码
代码如下:

deb [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse


复制代码
代码如下:

deb-src [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb-src [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb-src [arch=amd64] http://自建源IP/archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse


复制代码
代码如下:

# 配置MongoDB源
deb [arch=amd64] http://自建源IP/downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

通过比较apt-mirror和source.list文件,其实就是把原有域名变成了一个目录。注意:以上客户端配置也多添加了[arch=amd64],用于指定架构,否则会出现

 

Err http://192.168.1.71 trusty/main i386 Packages
  404  Not Found
Err http://192.168.1.71 trusty/restricted i386 Packages
  404  Not Found
Err http://192.168.1.71 trusty/universe i386 Packages
  404  Not Found
...
类似错误,因为我的测试环境是x64,只同步了64位架构源,所以必须指定架构为64,现在客户端也无需i386的软件。
添加过source.list后,运行
 

复制代码
代码如下:

# sudo apt-get update

ubuntu部分正常更新,但是发现会出现以下错误提示

 

W: GPG error: http://192.168.1.111 dist Release:
 The following signatures couldn't be verified
 because the public key is not available: NO_PUBKEY 9ECBEC467F0CEB10
需要添加GPG key,添加某些package时,基本都需要添加GPG key,官方网站一般都会给出
 

复制代码
代码如下:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

此时你就可以使用自建源安装软件啦~~
以下安装了MongoDB和htop来进行测试

复制代码
代码如下:

sudo apt-get install -y mongodb-org=2.6.5 htop

延伸 · 阅读

精彩推荐
  • UbuntuUbuntu下安装Chrome的方法分享

    Ubuntu下安装Chrome的方法分享

    本文给大家分享的是Ubuntu下安装Chrome的方法,安装的过程中发现还是挺麻烦的,就记录下来推荐给大家,有需要的小伙伴可以参考下。...

    Ubuntu教程网3862021-10-25
  • UbuntuUbuntu Gnome下如何修改应用图标icon?

    Ubuntu Gnome下如何修改应用图标icon?

    最近有些朋友问小编Ubuntu Gnome下如何修改应用图标icon?今天小编要为大家分享的是Ubuntu Gnome下修改应用图标icon的方法;有需要的朋友一起去看看吧...

    服务器之家6412019-06-01
  • UbuntuUbuntu安装和卸载CUDA和CUDNN的实现

    Ubuntu安装和卸载CUDA和CUDNN的实现

    这篇文章主要介绍了Ubuntu安装和卸载CUDA和CUDNN的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    夜雨飘零14632020-08-04
  • UbuntuUbuntu 15.04升级到Ubuntu 15.10的详细教程

    Ubuntu 15.04升级到Ubuntu 15.10的详细教程

    ubuntu15.04怎么升级到ubuntu15.10?又该升级系统了,但是很多人对ubuntu系统很不熟悉,下面我们一起来看看ubuntu15.04升级ubuntu15.10的详细教程,需要的朋友可以...

    服务器之家4562019-07-02
  • UbuntuUbuntu20.04开启root账户的方法步骤

    Ubuntu20.04开启root账户的方法步骤

    这篇文章主要介绍了Ubuntu20.04开启root账户的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    缀梦13002020-08-01
  • Ubuntu如何在ubuntu系统中安装pycharm工具并运行

    如何在ubuntu系统中安装pycharm工具并运行

    在Windows系统中安装pycharm,只需要下载安装包,然后根据指令一步一步操作;而在Linux系统中的Ubuntu中安装pycharm,需要下载安装包,还有安装相关的其他软件...

    百度经验12082019-10-21
  • UbuntuUbuntu17.10怎么添加日历事项? Ubuntu添加行程提醒的教程

    Ubuntu17.10怎么添加日历事项? Ubuntu添加行程提醒的教程

    Ubuntu17.10怎么添加日历事项?Ubuntu17.10系统中有一个日程管理功能,可以在日历中添加行程提醒,下面我们就来看看Ubuntu添加行程提醒的教程,需要的朋友可...

    服务器之家2812019-06-19
  • UbuntuWSL、WSL2与Ubuntu性能大PK

    WSL、WSL2与Ubuntu性能大PK

    科技媒体 Phoronix 对 Windows 10 May 2020 中 WSL 和 WSL 2 的性能进行了测试,参与测试的发行版为 Ubuntu 20.04 on WSL/WSL2 ,以及 Ubuntu 20.04 LTS,均被安装在除 Windows 之...

    开源中国29412020-06-23