手动安装移动到 /var/cache/apt/archives 的包?

Tim*_*Tim 4 apt

我安装了wkhtmltopdf,通过sudo apt-get install wkhtmltopdf。它的版本是 0.9.9。

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

apt由于https://unix.stackexchange.com/a/159114/674和相关回复中所述的原因,我想使用安装下载的 deb ,因此我将其移至/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
Run Code Online (Sandbox Code Playgroud)

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

Ron*_*Ron 7

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

sudo dpkg -i /path/to/your/package.deb
Run Code Online (Sandbox Code Playgroud)

apt照顾dpkg不能的依赖问题。

有一个有趣的项目dpkg-offline目前正在开发中。引用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>.
Run Code Online (Sandbox Code Playgroud)

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

是 Launchpad 中 dev 分支的教程,介绍如何安装和使用dpkg-offline.

奖励在 2015-05-06 15:00 的 Ubuntu 在线峰会上将有一个关于这个包的show and tell 活动


Eli*_*gan 7

快速总结

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

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

详情请见下文。

为什么apt-get不这样做

apt-get检查您配置的软件源(存储库)并自动下载和安装软件包。除了无法访问配置的存储库的情况外,这不会使apt-get install原本不会成功的命令成功。如果软件包不在您的存储库之一中,apt-get即使 .deb 文件恰好在 .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
    
    Run Code Online (Sandbox Code Playgroud)
  • 这些情况都不适用于您的情况。在特定的包版本不是由任何配置的存储库的提供,因为它是不是从上游项目的一个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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这造成了缺失的依赖关系。apt-get可以自动修复丢失的依赖项。

    sudo apt-get -f install
    
    Run Code Online (Sandbox Code Playgroud)

    这也应该自动完成配置原始包。(所以你可能不需要sudo dpkg --configure -a自己跑。)

方式二:用于gdebi安装和解析依赖

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

gdebi 允许您安装本地 deb 包,解析和安装其依赖项。apt 执行相同的操作,但仅适用于位于远程(http、ftp)的软件包。

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

sudo gdebi wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Run Code Online (Sandbox Code Playgroud)

gdebi 也有图形前端。您可能想要使用gdebi-gtkGTK+ 前端:

gksudo gdebi-gtk wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在运行 Kubuntu(或以其他方式使用 KDE),您可能更喜欢gdebi-kdeKDE 前端(由gdebi-kde 提供) 安装 gdebi-kde 包裹):

kdesudo gdebi-kde wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Run Code Online (Sandbox Code Playgroud)

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

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

  • @muru 是的,你说得对:你甚至可以运行`software-center package.deb`(或者双击包在南加州大学打开它,[根据你对这个问题的评论](https://askubuntu。 com/q/620056#comment876248_620056))。顺便说一句,软件中心 [警告用户关于“质量差”的 .deb 包](https://askubuntu.com/q/111959/22949),它与 ​​alpha 软件 - 就像在 OP 的用例中一样 - 可能会被考虑特别有用或不必要的烦恼。...总的来说,软件中心是一个很好的解决方案,所以我可以扩展这篇文章——但如果你单独发布一个答案可能会更好。 (3认同)

A.B*_*.B. 4

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

sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Run Code Online (Sandbox Code Playgroud)