dpkg -p 对某些软件包不起作用(例如 vim)

dpkg -p 对某些软件包不起作用(例如 vim)

我正在准备 LPIC 考试,实验室的任务之一是查找有关包的详细信息dpkg -p,具体是关于维姆dpkg -p vim。在解决方案中,命令生成有关包的信息,但我的输出是:

root@home:~# dpkg -p vim
dpkg-query: package 'vim' is not available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.

维姆已安装,我经常使用它,在系统上也可以找到它

root@home:~# type vim
vim is hashed (/usr/bin/vim)
root@home:~# which vim
/usr/bin/vim

我认为它dpkg -p在某种程度上被破坏了,但它可以与其他软件包一起使用(我已经尝试了几个,它们都工作得很好):

root@home:~# dpkg -p eject
Package: eject
Priority: important
Section: utils
Installed-Size: 160
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
...

我的系统(VPS)信息是

Ubuntu 18.04.5 LTS
Linux 4.15.0-143-generic #147-Ubuntu SMP Wed Apr 14 16:10:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

为什么我无法重现课程中的解决方案?谢谢你!

答案1

在很久以前,它dpkg并没有被还不存在的应用程序使用apt,而是被其他前端使用,比如dselect.这些工具负责更新以文件结尾的可用包列表,/var/lib/dpkg/available例如在运行时dselect updatedpkg -p的功能取决于最新的可用列表文件。

如今情况并非总是如此。根本apt不关心。/var/lib/dpkg/available可能还有其他(可能是 GUI)工具仍然以某种方式更新此文件,因此/var/lib/dpkg/available可能会部分填充。

的联机帮助页dpkg(或dpkg-query) 告诉:

-p--print-avail包裹名字...

显示有关包名称的详细信息,如 中所示 /var/lib/dpkg/available基于 APT 的前端的用户应该 apt-cache show package-name使用

还有:

--update-avail[包文件]
--merge-avail[包文件]

更新包装袋'沙d选择关于哪些软件包可用的想法。通过操作--merge-avail,旧信息与包文件中的信息相结合。使用 action --update-avail,旧信息将替换为 Packages 文件中的信息。随 Debian 一起发布的软件包文件简称为“Packages”。如果 Packages-file 参数缺失或名为“-”,则将从标准输入中读取该参数(自 dpkg 1.17.7 起)。包装袋将可用包的记录保存在/var/lib/dpkg/available.

您可以使用apt-cache dumpavail即时生成可用的文件格式输出:

dumpavail dumpavail 将可用列表打印到标准输出。这适合与 dpkg(1) 一起使用,并由 dselect(1) 方法使用。

并合并结果(此示例未在 Ubuntu 上运行):

# apt-cache dumpavail | dpkg --merge-avail -
Updating available packages info, using -.
Information about 119859 packages was updated.

dpkg -p vimapt-cache show vim现在可以工作了,但直接使用或可能会更简单apt show vim

结论:一些 LPIC 问题可能已经过时,但为了参加考试,您必须学习不再在任何地方使用的特定考试内容。

相关内容