ubuntu apt-get离线源制作

在无网络环境下,为Ubuntu自动安装定制apt离线源,详述了尝试与失败的方法,包括apt-get download、apt-rdepends等,最终成功使用`apt download package and dependencies`完整下载所有依赖。过程中遇到的依赖问题和解决方案,适用于系统部署场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ubuntu apt-get离线源制作

需求说明

项目需要自动安装ubuntu系统,且全程无网络,需要定制apt离线源,且所有依赖项都要下载下来,包括依赖的依赖,需要递归下载所有离线包。通过三四天查找资料及n次测试,最终实现目标,特此记录操作过程。

环境说明

操作系统:ubuntu-18.04.5-server-amd64.iso

网络:无

系统预装软件:openssh-server、vim,方便安装完成后通过xshell访问编辑

失败的尝试

通过百度、bing搜到的下述相关方法全部不行,基本都是抄来抄去的内容,只能下载到部分依赖而无法将依赖的依赖也下载下来。

失败一
sudo apt-get install -d <packages> # 该命令会下载安装包到/var/cache/apt/archives,且不会安装

但是,此方法仅用于当前系统中没有该包及其依赖时才有效,如果通过安装其他包时已经安装了某个依赖,这个方法就不会下载那个依赖项。(因此该方法大概率会漏项,即便是在新的系统上操作也是极大可能漏项的,因为操作系统安装过程中已经安装了一些包)

失败二
sudo apt download $(apt-rdepends vim | grep -v "^ ")

apt-rdepends需要单独安装,该命令会递归下载所有需要的包。但是会报错如下:

E: Can't select candidate version from package debconf-2.0 as it has no candidate

注意其中的debconf-2.0不是固定的,根据要安装的包的不同,会出现不同的错误。

单独的解决方案如下:

sudo apt-get download $(apt-rdepends vim | grep -v "^ " | sed 's/debconf-2.0/debconf/g')

但是要下载很多包,不太可能去看每个包都按上述操作进行,工作量太大,因此放弃该方案

失败三
for i in $(apt-cache depends python | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done

该方案与apt-rdepends雷同,尝试过后发现依旧丢了很多包未能下载

失败四
aptitude --download-only install <your_package_here>

aptitude命令需要单独安装,依照该方案下载后依旧是缺少包

以上失败过程,均在最后使用时出现错误,多数错误均提示如下内容:

The following packages have unmet dependencies:
 gstreamer1.0-plugins-good : Depends: libcairo-gobject2 (>= 1.10.0) but it is not going to be installed

其中依赖包可以是各种包,最后依据提示一个个安装,最后发现有些包是不存在于下载的离线源内的。

特说明:可能会由于各种原因,在缺少依赖包的情况下在某些机器上依然能够安装成功,这不能说明离线源是完整的,只能说可能由于其他原因恰好有依赖包。本人是经过了n次安装,多次在测试环境时能够安装成功,然后到了真实环境下立刻就失败了,过程很坎坷。

最后的成功

apt download package and dependencies

about

欢迎关注我的博客

Ubuntu系统通常使用Debian包管理器(dpkg)来处理软件包的安装,包括MySQL。如果你想离线安装MySQL,你需要先下载MySQL的.deb格式的安装文件。以下是离线安装的基本步骤: 1. **下载deb包**: 访问MySQL官网 (https://dev.mysql.com/downloads/mysql/) 或者通过命令行找到适用于Ubuntu的版本下载deb包。例如,如果你的Ubuntu版本是18.04,可能会下载`mysql-server_8.0.25-0ubuntu0.18.04.1_amd64.deb`。 2. **保存到本地**: 将下载的.deb文件复制到你的Ubuntu系统的离线存储设备(如USB驱动器、ISO镜像或服务器上)。 3. **安装前的准备**: 确保你的系统已经更新并配置了GPG密钥,因为一些.deb包需要验证其来。可以运行 `sudo apt-get update && sudo apt-get install gnupg2` 来完成这个过程。 4. **添加离线源**: 创建一个包含deb包路径的临时列表,可以用文本编辑器创建一个名为 `/etc/apt/sources.list.d/offline.list` 的文件,并添加类似下面的内容: ``` deb [trusted=yes] /path/to/downloaded/deb/bundle/ mysql main ``` 其中,`/path/to/downloaded/deb/bundle` 替换为你存放.deb文件的实际路径。 5. **更新索引**: 虽然在这个状态下无法直接执行 `apt-get update`,但你可以尝试 `sudo apt-get install -o Dpkg::Options::="--force-confold" software-properties-common` 来安装必要的工具,然后手动更新索引: ``` cd /path/to/downloaded/deb/bundle/ dpkg-scanpackages . /dev/null | gzip > Packages.gz sudo dpkg-deb --local-source=./ Packages.gz sudo apt-get update ``` 6. **安装MySQL**: 最后,你可以正常地使用 `sudo apt-get install mysql-server` 来安装MySQL,系统会从你提供的临时中获取所需的包。 记得,在实际操作前备份重要数据,因为离线安装可能导致依赖关系的问题。安装完成后,别忘了检查MySQL是否正常启动和配置
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值