手动安装移至 /var/cache/apt/archives 的软件包?

手动安装移至 /var/cache/apt/archives 的软件包?

wkhtmltopdf通过安装了sudo apt-get install wkhtmltopdf。其版本是 0.9.9。

http://wkhtmltopdf.org/downloads.html说它的最新稳定版本是 0.12.2.1。所以我下载了适用于 Ubuntu 14.04 的 deb。

我想使用apt安装下载的 deb,原因如下https://unix.stackexchange.com/a/159114/674和相关回复,所以我将其移至/var/cache/apt/archives,但我仍然如何使用来安装它apt

$ mv /tmp/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb /var/cache/apt/archives

$ sudo apt-get install wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
E: Couldn't find any package by regex 'wkhtmltox-0.12.2.1_linux-trusty-amd64.deb'

$ sudo apt-get install wkhtmltox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package wkhtmltox

$ sudo apt-get install wkhtmltopdf仍然安装旧版本。谢谢。

答案1

快速摘要

要安装手动下载的 .deb 包并从配置的存储库自动下载并安装其依赖的包:

  • 您可以sudo apt-get -f install在安装 .deb 后运行dpkg -i
  • 或者用于gdebi安装 .deb 包并自动解决其依赖关系(apt-get不会这样做,但gdebi其图形前端会这样做)。

请参阅下文了解详情。

为什么apt-get不愿意这样做

apt-get检查您配置的软件源(存储库)并自动下载和安装软件包。除非无法访问配置的存储库,否则这不会使原本apt-get install无法成功的命令成功。如果软件包不在您的存储库之一中,apt-get即使 .deb 文件恰好位于 中,也不会知道要安装它/var/cache/apt/archives

因此:

  • 如果你已经下载了一个包,并且它是相同的包,apt-get将自动下载并安装,然后您可以放置​​它/var/cache/apt/archivesapt-get不必下载它。

  • 如果你已经下载了以下软件包不是相同的包apt-get会自动选择,但哪个仍然可用在已配置的存储库中,那么您可以将其放入/var/cache/apt/archives并强制apt-get尝试安装它,而不是它喜欢的包。例如:

    sudo apt-get install abiword=3.0.1-1
    
  • 这两种情况都不适用于你的情况。特定软件包版本任何配置的存储库均不提供,因为它是来自上游项目的 alpha 测试版本下载页面. 因为你没有提供那个版本那个包裹,您无法使用 安装手动下载的 .deb 文件apt-get

方法 1:使用安装dpkg并解决依赖关系apt-get

幸运的是,你似乎不需要使用 来安装此包apt-get。看来你的实际目标是

  1. 安装手动下载的 .deb 包,你的仓库没有提供这个包(dpkg可以,但apt-get不能),并且
  2. 安装其依赖项由其存储库提供(虽然dpkg无法做到,但apt-get可以)。

您可以分两个步骤完成此操作:

  1. 使用 安装该包dpkg

    sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    
  2. 这创建了缺失的依赖项。apt-get可以自动修复缺失的依赖项。

    sudo apt-get -f install
    

    这也应该会自动完成原始包的配置。(因此您可能不需要sudo dpkg --configure -a自己运行。)

方法 2:使用gdebi安装和解决依赖关系

虽然apt-get不会尝试自动安装任意 .deb 文件及其依赖项,但有一个专门用于此目的的工具:格德比 安装 gdebi。 从man gdebi

gdebi 让您安装本地 deb 包,解析并安装其依赖项。apt 执行相同操作,但仅适用于远程(http、ftp)包。

要在终端中使用 gdebi,请以 root 身份运行,例如:gdebi package.deb

sudo gdebi wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

gdebi 也有图形前端。你可能想使用gdebi-gtk,GTK+ 前端:

gksudo gdebi-gtk wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

但如果你正在运行 Kubuntu(或使用 KDE),你可能更喜欢gdebi-kde,KDE 前端(由格德比 安装 gdebi-kde包裹):

kdesudo gdebi-kde wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

图形前端也可以不带参数调用(例如gksudo gdebi-gtk),在这种情况下,您可以单击文件 > 打开以在 GUI 中浏览并选择 .deb 文件。

gdebi-gtk 中的“打开软件包”对话框的屏幕截图

答案2

要安装本地存储的.deb包,请使用dpkg。尝试:

sudo dpkg -i /path/to/your/package.deb

apt处理dpkg无法解决的依赖问题。

有一个有趣的项目dpkg-离线目前正在开发中。引用README该项目的

This tool will download a set of .deb packages needed to install all of the given <packages-to-download>, with their dependencies satisfied, on an installation done from <base-iso>.

您可以查看该工具的开发版本这里。我没有尝试过,所以不知道它有多稳定。

这里是来自 Launchpad 中 dev 分支的关于如何安装和使用的教程dpkg-offline

奖金将会有一个show and tell 事件在 2015 年 5 月 6 日 15:00 的 Ubuntu 在线峰会上讨论了此软件包。

答案3

apt-get无法安装deb软件包,请使用dpkg

sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

相关内容