使用dpkg安装升级和dist-upgrade软件包


9

因此,我正在尝试在12.04 Server上进行脱机软件包安装,并通过使用以下说明检索和获取其URI来下载软件包:http : //www.webupd8.org/2009/11/get-list-of-packages- and-dependencies.html

我使用apt-get upgrade和进行了此操作apt-get dist-upgrade,然后使用dpkg -i。因此该过程如下所示:

  1. 获取URI
  2. wget将软件包打包到一个文件夹中(将upgrade软件包打包到/ upgrade并dist-upgrade软件包到/ dist-upgrade)
  3. 运行dpkg -i /upgrade/*.deb然后dpkg -i /dist-upgrade/*.deb

我的问题是:这种手动安装更新的软件包的方法是否可以正确更新所有内容,并获得apt-get upgradeapt-get dist-upgrade正常运行相同的结果?还是有普通apt-get命令无法做到的事情?

Answers:


15

最好不要使用dpkg,这是一个低级的软件包管理器,而最好使用apt。要使用安装.deb文件apt,请将其复制到apt缓存

sudo cp *.deb /var/cache/apt/archives/

然后进行常规升级:

apt-get upgrade

apt命令将使用其缓存中的文件,而不是从网络上下载文件,因此几乎可以满足您的目的。


谢谢,效果很好。尽管我仍然aptdpkg与这种情况下到底有什么不同感到好奇,但鉴于我最初是用来apt获取所有软件包的URI的,包括它们的依赖项?当涉及到实际的安装行为时,它看起来apt几乎就像是dpkg用来执行软件包的拆包和安装一样,唯一的区别是apt事先检查了依赖项(但这已经涵盖了,因为我曾经apt下载过软件包,包括依赖关系)。除非我想念什么?
R4mzy

另外,我问的部分原因是,我担心apt's如果将下载的程序包复制到可以访问Internet的系统上,然后apt发现某些或所有下载的程序包不是最新的,可能会发生什么情况? (但比当前安装的版本更新),然后尝试获取那些特定软件包的更新版本(我希望它仅安装我下载的特定软件包/版本)。基本上,是apt优先使用最新的在线版本,还是优先使用本地的更新而不是最新版本?
R4mzy

1
@ R4mzy您在那里有一个有效的观点。apt即使本地有较旧的软件包,也会尝试从互联网上获取最新的软件包。您可能需要更改/etc/apt/sources.list以确保它安装了本地软件包。
sayantankhan

@sayantankhan您可以显示答案中的内容吗?我问是因为我已将.deb文件复制到,/var/cache/apt/archives/sudo apt-get update && sudo apt-get upgrade看不到它或更新/升级所需的包。我觉得我需要更新列表,但不确定如何。
Todd

1
@Todd我自己还没有做,但是是有人超越apt软件包优先级的一种方式。
sayantankhan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.