ubuntu制作离线源

自用笔记:ubuntu(18.04)制作离线源

0 前言

参考:https://blog.csdn.net/yruilin/article/details/85124870

1 在外网机器

1 安装gpg软件和相关软件

1
2
3
apt-get install gnupg
apt-get install rng-tools

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

1
rngd -r /dev/urandom

生成公钥和私钥:

1
gpg --gen-key

执行gpg会进入一些对话,其中要新建一个用户名username和相应的密码。
如 linshen linshen@qq.com 12345678

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

1
gpg --list-key

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

1
gpg -a --export-secret-keys linshen > Ubuntu_Local_Archive_Automatic_Signing_Key_2017.sec

公钥,需在Ubuntu client 导入,供apt-get使用

1
gpg -a --export linshen> linshen.pub

2 准备安装包源

清空缓存目录,这一步也可以不做

1
rm -rf /var/cache/apt/archives/*

-d只是下载安装包,并不安装。

1
apt-get -d install -y <包名>

如 mysql-server ntp nfs-kernel-server portmap nfs-common

在本地建一个目录,将下载下来的安装包拷贝到此目录:

1
2
mkdir /var/debs
cp -r /var/cache/apt/archives/*.deb /var/debs/

在debs这个目录创建Packages.gz,注意生成的路径带debs,否则内网安装时会说找不到文件

1
2
3
4
5
6

cd /var
apt-ftparchive packages debs > debs/Packages
cd debs
gzip -c Packages > Packages.gz

在debs这个目录下创建release file

1
apt-ftparchive release ./ > Release

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

1
2
gpg --clearsign -o InRelease Release 
gpg -abs -o Release.gpg Release

2 拷贝文件

将外网机器的debs目录和公钥文件 linshen.pub拷贝到内网机器上

3 内网机器

导入公钥

1
apt-key add linshen.pub

将debs目录拷贝到/home/lin下面

备份apt源文件/etc/apt/source.list,并修改源

1
2
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb [trusted=yes] file:/home/lin debs/ " >/etc/apt/sources.list

更新索引

1
apt-get update

至此,可以在内网机器上执行apt-get install 命令了

1
2
3
4
apt-get install mysql-server
apt-get install nfs-kernel-server portmap
apt-get install nfs-common


ubuntu制作离线源
https://linshenkx.github.io/ubuntu-offline-sources/
作者
John Doe
发布于
2021年8月14日
许可协议