编写文档原因是看了几个文档,很多都没有说的很清楚,或者有不需要的操作,反而出现了问题
主要来源为下面的文档A,这是我看的描述最清楚的文档。
参考文章A:https://blog.csdn.net/yruilin/article/details/85124870
参考文章B:
出现问题,可以在注意事项中寻找答案,注意事项或FAQ应该会不定期更新
步骤:
1.设置签名相关
安装软件:
apt-get install gnupg
apt-get install rng-tools
分別对应签名工具,及随机数生产工具
生成随机数:
rngd -r /dev/urandom
生成公钥和私钥:
gpg --gen-key
执行gpg会进入一些对话,其中要新建一个用户名username和相应的密码。
密码最新版本不支持设置为空,旧版本支持,不影响内网使用,
导出公钥(建议放在制作本地源后进行)
gpg -a --export username> username.pub
username为上一步设置的username
2.制作离线源
进入本地deb文件所在目录
cd /var/cache/apt/archives/
可在该目录下看到当前已经安装的依赖
安装需要的依赖,-d为只下载不安装
sudo apt-get -d install <包名>
创建目录,将所有下载的安装包拷贝到该目录:
mkdir /media/packs
cp -r /var/cache/apt/archives/*.deb /media/packs/
生成Package.gz
cd /media/packs
apt-ftparchive packages . > Packages
gzip -c Packages > Packages.gz
生成Release
apt-ftparchive release ./ > Release
对Release签名
gpg --clearsign -o InRelease Release
gpg -abs -o Release.gpg Release
拷贝文件(本地源及公钥),建议packs压缩后拷贝,
压缩
cd /media
tar -zcvf packs.tar.gz packs/
3.内网电脑使用本地源
导入公钥(请修改对应的username)
apt-key add username.pub
解压packs到对应位置
cd /media
tar -zxvf packs.tar.gz
备份apt源文件设置
cp /etc/apt/sources.list /etc/apt/sources.list.bak
修改apt源
vim /etc/apt/sources.list
将sources.list 原来的内容都注释掉。在最后添加
deb file:///media/packs/ /
注意上面的 file后面有3个/,且packs/和 后面/ 之间的空格。
更新索引
sudo apt-get update
到这个时候,设置本地源的工作完成。
本地安装依赖正常使用
sudo apt-get install <包名>
-----------------------------------------------------------------------------------------------------------------------------
注意事项:
1.两台服务器的镜像源最好一致,否则会出现明明在外网主机可以正常安装,内网机器依旧出现依赖不足的情况(原因:我们拷贝的依赖包都来自于本地缓存,而镜像自带,初始安装好的依赖,不会出现在本地缓存中)
2.如果第一次的本地源没有满足要求,在外网服务器新增依赖,需要重新进行,需重新进行步骤二级步骤三,及步骤一中的pub(在我的认知中应该不需要重新生成,但是出现了使用新制作的源,校验不通过的情况,不知道为什么,请知道原因的人解释下,谢谢)
3.之前的文档中出现了,一个一键下载所有关联包的,链接,未实测,只作为参考