自用笔记:ubuntu(18.04)制作离线源
0 前言
参考:https://blog.csdn.net/yruilin/article/details/85124870
1 在外网机器
1 安装gpg软件和相关软件
apt-get install gnupg
apt-get install rng-tools
密钥创建过程中,需要使用到足够的随机数(random),可先行安装rng-tools, 该工具可以常驻后台的方式, 生成随机数,避免gpg密钥创建过程中的长时间等待问题
rngd -r /dev/urandom
生成公钥和私钥:
gpg --gen-key
执行gpg会进入一些对话,其中要新建一个用户名username和相应的密码。
如 linshen linshen@qq.com 12345678
结束之后,输入命令,可以查看key:
gpg --list-key
导出gpg公钥和私钥:私钥,供Server端,对release文件签名使用,好像不做也能签名
gpg -a --export-secret-keys linshen > Ubuntu_Local_Archive_Automatic_Signing_Key_2017.sec
公钥,需在Ubuntu client 导入,供apt-get使用
gpg -a --export linshen> linshen.pub
2 准备安装包源
清空缓存目录,这一步也可以不做
rm -rf /var/cache/apt/archives/*
-d只是下载安装包,并不安装。
apt-get -d install -y <包名>
如 mysql-server ntp nfs-kernel-server portmap nfs-common
在本地建一个目录,将下载下来的安装包拷贝到此目录:
mkdir /var/debs
cp -r /var/cache/apt/archives/*.deb /var/debs/
在debs这个目录创建Packages.gz,注意生成的路径带debs,否则内网安装时会说找不到文件
cd /var
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
2 拷贝文件
将外网机器的debs目录和公钥文件 linshen.pub拷贝到内网机器上
3 内网机器
导入公钥
apt-key add linshen.pub
将debs目录拷贝到/home/lin下面
备份apt源文件/etc/apt/source.list,并修改源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb [trusted=yes] file:/home/lin debs/ " >/etc/apt/sources.list
更新索引
apt-get update
至此,可以在内网机器上执行apt-get install 命令了
如
apt-get install mysql-server
apt-get install nfs-kernel-server portmap
apt-get install nfs-common
Q.E.D.