我经常需要检查安装了哪些软件包,我使用以下命令:
dpkg -l | grep foo
这给出了以下输出
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
ii foo <version> <description>
Run Code Online (Sandbox Code Playgroud)
ii意思?谢谢。
我使用 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 好。
我做了一个dpkg --clear-selections命令,发现我所有的包都被选中进行删除。正如手册页所说
--clear-selections :将每个非必要软件包的请求状态设置为卸载。
后来我知道,如果我这样做,sudo apt-get dselect-upgrade所有的包都会被删除。
我在 Ask Ubuntu 中检查了这个问题,并阅读了dpkg -l命令中每个不同标志的含义。那里说,第一列显示“所需的包装状态”或选择状态,第二列显示“当前状态”。
因为,我现在没有依赖问题,我想将我的选择状态设置为dpkg 数据库中的所需状态。我怎样才能做到这一点?
由于输出dpkg -l量大,我没有给出输出。输出是所有ri列。
此外,当我执行命令时sudo apt-get dselect-upgrade,它给了我这条消息,
…………………………………………………………………………………………………………………………………………………………………………………………………… 警告:以下基本包将被删除。 除非您确切地知道自己在做什么,否则不应该这样做! apt ubuntu-keyring (由于 apt) libapt-pkg4.12 (由于 apt) libstdc++6 (由于 到 apt) gnupg (由于 apt) 基本文件 bash 4 升级,0 新安装,1764 删除,1 未升级。 需要获得 0 B/1,359 kB 的档案。 此操作后,将释放 3,078 MB 磁盘空间。 你即将做一些可能有害的事情。 要继续输入短语“是的,按我说的做!” ?]
有没有办法将包选择状态重置为当前安装状态?