如何确定已安装应用程序的 Debian 包的位置?

如何确定已安装应用程序的 Debian 包的位置?

使用dpkg,我看到 Chef 版本 11.2.0 当前已安装:

$ dpkg -l | grep -i 'chef'
ii  chef                                 11.2.0-1.ubuntu.11.04             The full stack of chef

我正在构建另一台服务器并想使用它精确的包。我假设要么将它放在某处,apt要么dpkg将其放在某处,我如何确定原始安装程序位于何处?

我看到了一堆.deb文件/var/cache/apt/archives/,但似乎没有一个是针对 Chef 的。

编辑:

我在 Opscode 网站上找到了 debian 安装程序:

https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/11.04/x86_64/chef_11.2.0-1.ubuntu.11.04_amd64.deb

使用安装后sudo dpkg -i chef_11.2.0-1.ubuntu.11.04_amd64.deb,我尝试locate沃尔蒂纳托,并且没有返回任何结果。

那么我是否可以假设安装的软件包手动像这样的没有添加到本地 apt 档案中?

答案1

你可以寻找它:

locate --regexp 'chef.*deb'

/var/cache/apt/archives或者,如果已被清理,您可以获得一份新的副本。

请参阅man apt-get,其中部分内容如下:

NAME
       apt-get - APT package handling utility -- command-line interface

SYNOPSIS
       apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] {update | upgrade | dselect-upgrade | dist-upgrade |
               install pkg [{=pkg_version_number | /target_release}]...  | remove pkg...  | purge pkg...  |
               source pkg [{=pkg_version_number | /target_release}]...  | build-dep pkg [{=pkg_version_number | /target_release}]...  |
               download pkg [{=pkg_version_number | /target_release}]...  | check | clean | autoclean | autoremove | {-v | --version} | {-h | --help}}

特别是download pkg [{=pkg_version_number | /target_release}]后面的部分:

   download
       download will download the given binary package into the current directory.

apt-get download chef=11.2.0-1.ubuntu.11.04就是我要开始的地方。我还没有测试过这个命令

答案2

因此,除了我在评论中发布的内容之外,经过一些搜索后,我发现了一个生成精确存储库的命令 - apt-cache policy packagename

例子:

$ apt-cache policy chef
chef:
  Installed: (none)
  Candidate: 11.8.2-2
  Version table:
     11.8.2-2 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages

相关内容