Ali*_*ice 10 package-management apt dpkg
我使用 apt-cache pkgname 来检索包
me@host:~$ apt-cache pkgnames | wc -l
62803
Run Code Online (Sandbox Code Playgroud)
得到 62803 个结果
但
me@host:~$ dpkg -l | wc -l
2336
Run Code Online (Sandbox Code Playgroud)
导致如此巨大差异的原因是什么。我认为 dpkg 比 apt 好。
Ser*_*nyy 16
apt用于管理远程存储库,dpkg- 用于本地安装的软件包。他们有关系。apt是前端到dpkg. 当您运行apt-get install package它时.deb,它会获取文件,并通过dpkg. 所以数字有所不同,因为有很多可用的软件包,但只有一小部分安装在您的系统本地。
apt-cache可以显示已安装和未安装的软件包,因为它查询apt缓存 - 远程存储库中可用内容的列表(该缓存是您在执行时获得的内容apt-get update)。例如,
$ apt-cache policy terminator
terminator:
Installed: (none)
Candidate: 1.91-1
$ dpkg -l terminator
dpkg-query: no packages found matching terminator
Run Code Online (Sandbox Code Playgroud)
请注意,还有另一个工具可以查询已安装/删除的本地软件包列表,那就是dpkg-query. 例如,
$ dpkg-query -l 'libc6'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================-===============-===============-=============================================
ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries
$ dpkg -l libc6
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================-===============-===============-=============================================
ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries
Run Code Online (Sandbox Code Playgroud)
根据dpkg 手册
dpkg 也可以用作 dpkg-deb(1) 和 dpkg-query(1) 的前端。稍后可以在 ACTIONS 部分中找到支持的操作列表。如果遇到任何此类操作,dpkg 只会使用给定的参数运行 dpkg-deb 或 dpkg-query,但当前未将特定选项传递给它们,要使用任何此类选项,需要直接调用后端。
说到这里dpkg-query,需要注意的是,这个工具主要是查询已安装包的数据库,可以输出特定格式的信息(-f选项加-W动作)。例如,
$ dpkg-query -W -f='PACK:${Package}\nARCH:${Architecture}\nSTAT:${Status}\n---\n' libc6
PACK:libc6
ARCH:amd64
STAT:install ok installed
---
PACK:libc6
ARCH:i386
STAT:install ok installed
---
Run Code Online (Sandbox Code Playgroud)
有趣的是,dpkg 数据库维护选择删除或在某个时候删除的软件包列表。dpkg-query也可以将 glob 模式作为参数,并根据它是否存在只显示已安装/配置的包或所有包。
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |