有没有一种方法可以通过只返回一次在线计算机来在离线 Debian 系统上执行发行版升级?
apt-get update && apt-get dist-upgrade
我已经成功地使用 执行了与在离线计算机上相同的操作apt-offline
,但我必须使用两次返回在线计算机的方式来完成此操作。
这是工作流程:
# OFFLINE machine:
apt-offline set step1.sig --update --upgrade --upgrade-type dist-upgrade
# The step1.sig file only contains references to Package and Release
# files, not any package names.
# ONLINE machine:
apt-offline get step1.sig --bundle step1.zip
# OFFLINE machine (this is the equivalent of apt-get update):
apt-offline install step1.zip
apt-offline set step2.sig --update --upgrade --upgrade-type dist-upgrade
# The step2.sig file now contains references to deb files.
# ONLINE machine:
apt-offline get step2.sig --bundle step2.zip
# OFFLINE machine (this is the equivalent of apt-get dist-upgrade):
apt-offline install step2.zip
我对使用命令行工具(或其他工具)在离线和在线机器之间进行一次往返来完成此操作感兴趣apt-offline
。
我在第一步中尝试过此操作,希望它可以从现有软件包列表中生成一些内容,但考虑到离线计算机当前在其已知软件包列表中的内容,它在第一遍中根本找不到任何可以升级的内容(这是有道理的):
apt-offline set packages.sig --install-packages `aptitude search '~i!~M' -F '%p'`
答案1
您必须更新包索引文件(可用包),然后更新包集(要安装的包)基于更新后的索引文件。
在从离线计算机到在线计算机的第一部分中,您可以发送去同步包索引文件和去同步包集。
在线机上,可以更新包索引文件然后根据新的索引文件更新包集并下载相应的bundle。
在从在线计算机到离线计算机的第二部分中,您可以发送生成的包。
问题是
apt-offline set upgrade.sig --upgrade
使用本地计算机的包索引文件,并且无法选择使用不同的包索引文件。所以你不能在在线机器上运行这个命令,而必须与离线机器进行往返。
解决方案是告诉 apt-offline 使用与本地不同的包索引文件,但目前这是不可能的。您可以修补它或编写自己的工具。