我的一台电脑没有互联网连接,安装的是Ubuntu,我尝试将其升级到最新版本,我了解到如果它获得最新的更新列表,则可以通过发布apt-get --print-uris install <package>
和下载轻松获取包和依赖项的URL它们与其他有互联网连接的计算机,然后移动并安装到离线计算机上,但在此之前我还想知道如何获取更新列表并将其导入到我的离线计算机上?
apt-get --print-uris update
在我的离线计算机上会列出类似的内容'http://security.ubuntu.com/ubuntu/dists/focal-security/main/cnf/Commands-amd64.xz' security.ubuntu.com_ubuntu_dists_focal-security_main_cnf_Commands-amd64
,是我应该下载的包吗?以及如何让它在我的离线计算机上运行?
答案1
这是一个好问题,一个先有鸡还是先有蛋的问题……--print-uris
如果没有最新的软件包列表,就无法输出任何有用的东西。
如果联网的机器sources.list
与离线机器的配置相同和安装了相同的软件包,如果您只是安装一些已知的软件包,则可以运行(然后将软件包下载到 USB 记忆棒)apt-get update
。apt-get --print-uris install PACKAGES
否则,您需要将完整的最新包列表返回到离线计算机。
包列表存储在 中/var/lib/apt/lists/
,因此您需要将它们复制到/从中复制。
apt update
在具有 Internet 连接的计算机上运行,并将包列表复制到 USB 记忆棒上以传输到离线计算机。
大致如下:
在连接互联网的机器上:
mount "$USB_DEVICE" /mnt
mkdir -p /mnt/lists/
apt update
cp /var/lib/apt/lists/* /mnt/lists/
umount /mnt
当您运行时cp
,可能会出现有关无法复制子目录的警告(例如..../partial
)。忽略这些警告即可,它们并不重要。
在离线机器上:
mount "$USB_DEVICE" /mnt
cp /mnt/lists/* /var/lib/apt/lists/
apt-get --print-uris dist-upgrade > /mnt/URIs.txt
umount /mnt
现在,您可以将带有 URIs.txt 的 USB 记忆棒带回到连接互联网的计算机上,开始下载包文件,并将它们复制到 USB 记忆棒上,以便传输回离线计算机。