如何制作完整的Ubuntu本地源镜像(以Ubuntu12.04为例)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何制作完整的Ubuntu本地源镜像(以Ubuntu12.04为例)相关的知识,希望对你有一定的参考价值。

参考技术A

本地部分源镜像的优点是占用空间比较小,一个部分软件包源根据系统需要所占的空间大概也就在1G~2G之间。能满足系统备份还原的基本需求,凡是备份下来的软件包都能安装。但是它的缺点和局限性也是很明显的,它只能使用系统安装过的的软件包,也就是/var/cache/apt/archives/下的所有软件包。如果你的系统是32位的,那么这个源也就是32位的源,而不能被64位的系统所使用。或者如果要安装没有在本机上安装过的软件,那么就不行。因此制作完整的本地软镜像就是个不错的选择。

制作部分软件包源镜像可以作为个人备份系统,还原之用;如果是公司企业的话,推荐还是使用完整的本地源镜像。

下面介绍下制作完整的本地源镜像的方法:

安装前一定要注意:

首先,镜像目录为/var/spool/下的 apt-mirror 。

其次,要尽量用官方源或者Ubuntu系统源列表中列出来的镜像站进行镜像。

/var下要有40G以上的空间,建议在40G的基础上再保留30%以上的余量。

/var下如果没有空间,可以把镜像目录改到其他分区中,可以参考如下方法:

[plain] view plain copy

sudo ln -s /media/g/Ubuntu_local/apt-mirror/  /var/spool/apt-mirror  

1. 安装apt-mirror工具 [plain] view plain copy

sudo apt-get install apt-mirror   sudo apt-get install apache2  #如果不打算对局域网或互联网开放,这个不必装  

2. 配置apt-mirror工具

gksugedit /etc/apt/mirrors.list

清除原有内容,没关系,输入以下内容:

[plain] view plain copy

#############config ##################   #   # set base_path    /var/spool/apt-mirror   #   # setmirror_path  $base_path/mirror   # setskel_path    $base_path/skel   # setvar_path     $base_path/var   # setcleanscript $var_path/clean.sh   # setdefaultarch  <running hostarchitecture>   # setpostmirror_script $var_path/postmirror.sh   # setrun_postmirror 0   #默认为20线程下载,推荐10线程,20可能会造成服备器或网络loading太重   setnthreads     20   set _tilde 0   #   #############end config ##############   #网易源(速度很快)   debhttp://mirrors.163.com/ubuntu/ precise main universe restricted multiverse   debhttp://mirrors.163.com/ubuntu/ precise-security universe main multiverserestricted   debhttp://mirrors.163.com/ubuntu/ precise-updates universe main multiverserestricted   debhttp://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted   debhttp://mirrors.163.com/ubuntu/ precise-backports universe main multiverserestricted   #ubuntu12.04 src源不进行同步,因为大多数人用不上,如果同步,要多增加一倍空间   #deb-srchttp://mirrors.163.com/ubuntu/ precise main universe restricted multiverse   #deb-srchttp://mirrors.163.com/ubuntu/ precise-security universe main multiverserestricted   #deb-srchttp://mirrors.163.com/ubuntu/ precise-proposed universe main multiverserestricted   #deb-srchttp://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted   #deb-srchttp://mirrors.163.com/ubuntu/ precise-updates universe main multiverserestricted   #下面的代码是为了镜像成功后节省空间的,实际上下面的这一句不写也是可以的   clean http://mirrors.163.com/ubuntu/  

这里的地址规则和sources.list中是一样的,用的是163网速不同,时间不同,完成后有提示,
3. 开始制作镜像 sudo apt-mirror

制作完成后会有提示,制作过程可以中断,如果时间太长,可以关闭终端或ctrl+c ,如果电脑关机,什么时候要继续,再重新执行代码即可,这时原来下载过的是不会重新下载的。直到完成,完成后有如何节约空间的提示,可以不去理会;镜像内容很全的,与官方同步的.

之后再次运行apt-mirror会继续以前的工作.每次都可以这样更新.

此过程根据网速不同,会有不同的时间.网速快的话,1个晚上就能完成.

4. 作为本地源使用更新

这一部分和部分软件包源镜像源的使用一样,可参考

制作完成后,在本地存储的地址为:

/var/spool/apt-mirror/mirror/mirrors.163.com/Ubuntu

编辑sources.list

sudo gedit /ets/apt/sources.list

删除原有内容,写入:

debfile:///var/spool/apt-mirror/mirror/mirrors.163.com/ubuntu/ precise mainuniverse restricted multiverse  
debfile:///var/spool/apt-mirror/mirror/mirrors.163.com/ubuntu/ precise-securityuniverse main multiverse restricted  
debfile:///var/spool/apt-mirror/mirror/mirrors.163.com/ubuntu/ precise-updatesuniverse main multiverse restricted  
debfile:///var/spool/apt-mirror/mirror/mirrors.163.com/ubuntu/ precise-proposeduniverse main multiverse restricted  
debfile:///var/spool/apt-mirror/mirror/mirrors.163.com/ubuntu/ precise-backportsuniverse main multiverse restricted

5. 本地安装软件包 sudo apt-get update
sudo apt-get install xxxx

6. 制作成局域网源

安装apaches

/var/spool/apt-mirror/mirror/mirrors.163.com/ubuntu/作为webroot

地址为局域网ip地址即可.

说明: 完整的本地源做好后,通过新立得或apt-get,可以完全免除ubuntu官方源或ubuntu-cn源的负担,你想装什么,就装什么吧

ubuntu制作离线源的几种方法

ubuntu安装软件有多种方式。

一、使用iso文件挂载到本地,然后使用iso镜像进行软件安装。缺点:需要将操作系统打包做iso镜像。

二、使用apt-mirror下载第三方源到本地,然后使用apache做服务,制作局域网源。缺点:第三方源很大,一般都是几十G,需要下载很久,而且占用磁盘很大。

三、拷贝能联网的机器的deb安装包到不能联网的服务器,然后制作本地源进行安装,如果ubuntu14以下,不用制作release签名,如果ubuntu14以上,需要制作release签名,具体操作步骤见以下说明。缺点:操作繁琐易出错,但是定制化程度高,可以安装自己需要的包,不需要安装多余的包。

四、如果上述三个方法在操作过程中有其他错误无法完成安装,可以采用纯手动方法安装(最笨的方法),先将联网服务器上的多余deb包清理,将所有需要的deb包拷下载后拷贝到离线服务器上,进到指定deb包目录,dpkg -i *.deb > log.txt,将所有deb包进行安装,再对日志中的错误进行排查,检查是否存在少包或者版本等问题,逐一解决后再进行安装。

 

==================================================针对第三种方法的详细说明=====================================================================

环境:

一台能上网的Ubuntu电脑,一台不能上网的Ubuntu电脑。Ubuntu版本都是18.04LTS。

目标:

将能上网的Ubuntu电脑安装的软件制作成源,通过U盘拷贝给内网电脑,内网电脑根据此离线源通过apt安装软件。

为什么不直接拷贝deb安装呢?因为有些软件安装依赖的包比较多。

遇到的问题:

从Ubuntu 16.04 (xenial)起, 在将本地deb软件包创建repo时候,跟14.04以前的版本相比,强制要求gpg对Release文件签名,否则无法使用。

步骤:

1.在外网电脑上,安装gpg软件和相关软件:

apt-get install gnupg
apt-get install rng-tools
密钥创建过程中,需要使用到足够的随机数(random),可先行安装rng-tools, 该工具可以常驻后台的方式, 生成随机数,避免gpg密钥创建过程中的长时间等待问题 

rngd -r /dev/urandom
生成公钥和私钥:

gpg --gen-key
执行gpg会进入一些对话,其中要新建一个用户名username和相应的密码。

这一步有问题可以参考:https://blog.csdn.net/tangsl388/article/details/72843438

结束之后,输入命令,可以查看key:

gpg --list-key
导出gpg公钥和私钥:
私钥,供Server端,对release文件签名使用,好像不做也能签名

gpg -a --export-secret-keys username > Ubuntu_Local_Archive_Automatic_Signing_Key_2017.sec
公钥,需在Ubuntu client 导入,供apt-get使用

gpg -a --export username> username.pub
 2.在外网电脑上准备安装包源

以下是安装包目录

$ sudo rm -rf /var/cache/apt/archives/* # 清空缓存目录,这一步也可以不做
-d只是下载安装包,并不安装。

$ sudo apt-get -d install <包名>
在本地建一个目录,将下载下来的安装包拷贝到此目录:

$ mkdir /var/debs
$ cp -r /var/cache/apt/archives/*.deb /var/debs/
在debs这个目录创建Packages.gz,注意生成的路径带debs,否则内网安装时会说找不到文件

# apt-ftparchive packages debs > debs/Packages
# cd debs
# gzip -c Packages > Packages.gz
在debs这个目录下创建release file

# apt-ftparchive release ./ > Release
ubuntu apt-get 对软件包索引,首先要求InRelease文件,其次才去找Release、Release.gpg文件; 这情况下, 其实只需要创建InRelease文件(包含Release文件和明文签名)即可:

#gpg --clearsign -o InRelease Release
#gpg -abs -o Release.gpg Release
3. 将生成的debs目录和公钥文件username.pub拷贝到U盘

4.在内网的电脑上将debs目录拷贝到/vars/下面,注意和外网的目录一样。

如下并导入公钥。

# apt-key add username.pub
5.在内网电脑上备份apt源文件/etc/apt/source.list,并修改源。

$ sudo gedit /etc/apt/sources.list
将sources.list 原来的内容都注释掉。在最后添加

$ deb file:/var debs/
注意上面的 /var 和 debs/ 之间的空格,以及 “/”。不要写错/var/debs/路径了。
更新索引
$ sudo apt-get update
现在可以安装包了。运行sudo apt-get install <包名> 就会像以前一样安装好了指定的包了。

6.安装包的下载,一键下载所有依赖包,可以参照  

https://blog.csdn.net/junbujianwpl/article/details/52811153    

以上步骤参考:https://blog.csdn.net/yruilin/article/details/85124870

单个软件安装(https://blog.csdn.net/michaelwoshi/article/details/94185132)  [trusted=yes]

无需制作签名安装ubuntu14以下

https://blog.csdn.net/weixin_30535843/article/details/95711908

https://www.linuxidc.com/Linux/2017-03/142023.htm

 

以上是关于如何制作完整的Ubuntu本地源镜像(以Ubuntu12.04为例)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu制作离线源的几种方法

利用apt-mirror制作Ubuntu本地源

Linux 配置本地源 (Ubuntu / CentOS)

前端如何配置不同镜像源

系统篇: ubuntu 22.04更换国内软件源

系统篇: ubuntu 20.04 更换国内软件源