我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/archives
而apt-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
。看来你的实际目标是
- 安装手动下载的 .deb 包,你的仓库没有提供这个包(
dpkg
可以,但apt-get
不能),并且还 - 安装其依赖项是由其存储库提供(虽然
dpkg
无法做到,但apt-get
可以)。
您可以分两个步骤完成此操作:
使用 安装该包
dpkg
。sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
这创建了缺失的依赖项。
apt-get
可以自动修复缺失的依赖项。sudo apt-get -f install
这也应该会自动完成原始包的配置。(因此您可能不需要
sudo dpkg --configure -a
自己运行。)
方法 2:使用gdebi
安装和解决依赖关系
虽然apt-get
不会尝试自动安装任意 .deb 文件及其依赖项,但有一个专门用于此目的的工具:格德比 。 从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 前端(由格德比 包裹):
kdesudo gdebi-kde wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
图形前端也可以不带参数调用(例如gksudo gdebi-gtk
),在这种情况下,您可以单击文件 > 打开以在 GUI 中浏览并选择 .deb 文件。
答案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