我正在准备 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 update
。dpkg -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 vim
apt-cache show vim
现在可以工作了,但直接使用或可能会更简单apt show vim
。
结论:一些 LPIC 问题可能已经过时,但为了参加考试,您必须学习不再在任何地方使用的特定考试内容。