一、制作本地镜像源的原因
1. 内网部署
虽然我们在开发过程中使用linux服务器,往往都可以联网,装个软件直接apt install
非常的方便;
但是处于安全考虑,很多客户的服务器是绝对内网的,比如公安网;那么你要装个软件就会发现缺少很多依赖,而当你装一个依赖的时候又报错缺少另一个依赖,有时甚至会陷入循环的依赖中。导致部署异常的困难。
2.其他原因
离线安装和维护
更好的软件版本管理
增强系统的安全性和可稳定性
二、制作方法
1. 下载依赖
从一台可以联网的服务器中下载相关deb包,为了防止版本不同导致依赖版本不对,最好linux版本也一样。
下载包括依赖包;拿build-essential举例
image-20241022211721482
/var/cache/apt/archives 是默认的安装包缓存地址
此时系统中无任何缓存文件;
执行命令: -d
标识仅下载不安装,-f
是自动解决依赖问题
apt -d -f -y install build-essential
image-20241022234839639
可以看到下载了相关依赖包;
2. 制作离线包
# 创建一个名为 /opt/ubuntu_mirrors 的目录,用于存放后续操作相关的文件和数据
mkdir /opt/ubuntu_mirrors
# 将 /var/cache/apt/archives/ 目录下的所有文件和目录递归复制到 /opt/ubuntu_mirrors 目录中
cp -r /var/cache/apt/archives/* /opt/ubuntu_mirrors
# 切换当前工作目录到 /opt/ubuntu_mirrors
cd /opt/ubuntu_mirrors
# 删除 partial/ 目录及其lock 文件
rm -rf partial/ lock
# 使用 apt-ftparchive 工具生成当前目录(. 表示当前目录,即 /opt/ubuntu_mirrors)下的软件包信息文件 Packages
# 这个文件包含了当前目录中软件包的详细信息,如名称、版本、依赖关系等,用于构建本地镜像源的软件包索引
apt-ftparchive packages. > Packages
# 使用 apt-ftparchive 工具生成当前目录下的发布信息文件 Release
# 该文件包含了关于本地镜像源的一些基本信息,如镜像源的描述、包含的组件、日期等,用于提供给 apt 工具识别和使用本地镜像源
apt-ftparchive release. > Release
# 切换当前工作目录到上级目录(即 /opt)
cd../
# 将 /opt/ubuntu_mirrors/ 目录及其内容打包成一个名为 ubuntu_mirrors.tar 的 tar 归档文件
# 这个归档文件可以用于备份、传输或分发本地镜像源相关的数据
tar -cvf ubuntu_mirrors.tar ubuntu_mirrors/
这时候本地源离线包ubuntu_mirrors.tar
就制作好了;
image-20241022235514194
三、使用本地镜像源
使用上述打包的本地镜像源ubuntu_mirrors.tar
的服务器中;
# 切换目录 /opt
cd /opt
# 解压
tar -xvf ubuntu_mirrors.tar
# 备份系统原本的软件源,ubuntu24.04及以上的版本路径为 /etc/apt/sources.list.d/ubuntu.sources
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 使用 echo 命令向 /etc/apt/sources.list 文件追加新的一行内容,即本地镜像源的配置信息
# "deb [trusted=yes] file:/opt/ubuntu_mirrors./" 是配置格式
# "deb" 表示这是一个 Debian 软件源类型
# "[trusted=yes]" 表示信任该软件源,不进行数字签名验证(因为是本地构建的,假设其可信)
# "file:/opt/ubuntu_mirrors" 是本地镜像源的文件路径
# "./" 表示该软件源的目录结构为当前目录(在本地镜像源的上下文中就是 /opt/ubuntu_mirrors 目录下的相应结构)
echo "deb [trusted=yes] file:/opt/ubuntu_mirrors./" >>/etc/apt/sources.list
# 更新软件包列表,让系统根据新配置的本地镜像源获取软件包信息
# 此操作会扫描本地镜像源目录,读取软件包的相关元数据,如软件包名称、版本、依赖关系等,并更新本地的软件包索引
apt update
# 离线安装 build-essential 软件包及其依赖项
apt install -y build-essential
Snipaste_2024-10-23_00-12-33
四、apt的常见参数
apt 可以自动处理依赖问题
1. 重装
使用 --reinstall
即可
例如 重装 build-essential
apt -f -y install --reinstall build-essential
2. 查看已经安装的软件
apt list --installed
配合grep筛选
3.卸载
apt-get remove
保留配置文件)、 apt-get purge
(彻底删除)
4. 搜索
apt search
五. dpkg 的常用参数
dpkg 不会自动处理依赖问题
1. 安装软件
dpkg -i *.deb
可以直接制定deb文件的名称;但有时候会因为缺少依赖而安装失败;
2. 查看已安装的软件
dpkg -l
配合 grep 管道来进行查询
3. 卸载软件
dpkg -r
(保留配置文件)、 dpkg -P
(彻底删除)